没有截距的总最小二乘回归,R

时间:2015-02-05 06:03:00

标签: r regression principal-components

我需要计算两个价格之间回归的beta值:

  1. 无拦截
  2. 使用最小二乘估计值
  3. 在R中,有一个函数prcomp来执行它。 之后,我如何提取测试版?

    代码是

    `library(quantmod)
    # how to get closes
    getCloses <- function(sym) {
        ohlc <- getSymbols(sym, from="2009-01-01", to="2011-01-01",
                           auto.assign=FALSE, return.class="zoo")
        Cl(ohlc)}
    # how to import data (2 assets)
    closes <- merge(IWM=getCloses("IWM"),
                VXZ=getCloses("VXZ"), all=FALSE)
    # function for hedging ratio
    tlsHedgeRatio <- function(p, q) {
        r <- princomp( ~ p + q+0)
        r$loadings[1,1] / r$loadings[2,1]
    }
    # get the hedging ratio
    with(closes, {
        cat("TLS for VXZ vs. IWM =", tlsHedgeRatio(VXZ,IWM), "\n")
    })`    
    

    在代码中显示如何使用拦截执行TLS回归。我试图在没有拦截的情况下执行相同的操作。 使用lm功能时,添加+0可以在不拦截的情况下执行回归,我如何使用prcomp函数执行相同操作?

1 个答案:

答案 0 :(得分:0)

如果R是包含数据的矩阵

pcaresult <- prcomp(R)
eigenVect <- pcaresult$rotation
eigenVal <- (pcaresult$sdev)^2
coeff1 = as.numeric(coeff$eigenvectors[,"PC2"][1])
coeff2 = -as.numeric(coeff$eigenvectors[,"PC2"][2])
ratio = coeff2/coeff1

您还可以检查功能?MethComp::Deming(在包MethComp中),它会产生类似的结果。