Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不带截距的总最小二乘回归,R_R_Regression_Principal Components - Fatal编程技术网

不带截距的总最小二乘回归,R

不带截距的总最小二乘回归,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,

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

禁止拦截 使用总体最小二乘估计 在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")
})`    
在代码中,演示如何使用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的情况下如何提取系数