不带截距的总最小二乘回归,R
我需要计算两个价格之间回归的贝塔值,其中: 禁止拦截 使用总体最小二乘估计 在R中有功能prcomp来执行它。 之后,如何提取测试版 代码是不带截距的总最小二乘回归,R,r,regression,principal-components,R,Regression,Principal Components,我需要计算两个价格之间回归的贝塔值,其中: 禁止拦截 使用总体最小二乘估计 在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,
`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")
})`
在代码中,演示如何使用intercept执行TLS回归。我试图在没有拦截的情况下执行相同的操作。
使用lm函数时,添加+0允许执行无截距的回归,如何使用prcompfunction执行相同的操作?如果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包中的函数?MethComp::Deming,该函数给出了类似的结果。可以通过提供一些假输入数据样本来改进此问题,以便我们了解数据的形状。我不明白为什么要使用prcomp而不是标准lm函数来拟合回归。如果您有兴趣将TLS与prcomp一起应用,请阅读。@MrFlick TLS有时是首选,因为它并不假定所有错误都来自您指定为自变量的变量。这对线性模型的斜率和截距有影响:谢谢@Stu,不知怎的,我错过了全部部分。@user3641445问之前你试过了吗?你遗漏了哪一点?请分享你的代码。现在我知道了如何提取系数,但我还不知道在没有截距y=beta*x的情况下如何提取系数