1

我需要计算两个价格之间的回归贝塔:

  1. 没有拦截
  2. 使用总最小二乘估计

在 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函数做同样的事情?

4

1 回答 1

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(在 package 中)。MethComp

于 2015-02-05T08:54:14.243 回答