在交换样本的预测变量时,保持线性模型的系数不变?

时间:2016-02-09 02:59:28

标签: r constants regression beta coefficients

我一直试图通过将其他变量保持为样本均值来查看模型中各个变量的解释力。

但是,我无法做到这样的事情:

Temperature = alpha + Beta1*RFGG + Beta2*RFSOx + Beta3*RFSolar 

其中Beta1 = Beta2 = Beta3 - 类似于

Temperature = alpha + Beta1*(RFGG + RFSolar + RFSOx)

我想这样做,所以我可以比较解释力的差异(R ^ 2 /残差大小),当一个自变量没有保持在样本均值时,其余的是。

Temperature = alpha + Beta1*(RFGG + meanRFSolar + meanRFSOx)

Temperature = alpha + Beta1*RFGG + Beta1*meanRFSolar + Beta1*meanRFSOx

然而,lm函数似乎估计了它自己的系数,所以我不知道如何保持不变。 这是我尝试过的一些丑陋的代码,我知道这些代码充满了错误:

    # fixing a new clean matrix for my data
dat = cbind(dat[,1:2],dat[,4:6]) # contains 162 rows of: Date, Temp, RFGG, RFSolar, RFSOx

# make a bunch of sample mean independent variables to use
meandat = dat[,3:5]
meandat$RFGG = mean(dat$RFGG)
meandat$RFSolar = mean(dat$RFSolar)
meandat$RFSOx = mean(dat$RFSOx)

RFTotal = dat$RFGG + dat$RFSOx + dat$RFSolar

B = coef(lm(dat$Temp ~ 1 + RFTot)) # trying to save the coefficients to use them...
B1 = c(rep(B[1],length = length(dat[,1])))
B2 = c(rep(B[2],length = length(dat[,1])))

summary(lm(dat$Temp ~ B1 + B2*dat$RFGG:meandat$RFSOx:meandat$RFSolar)) # failure
summary(lm(dat$Temp ~ B1 + B2*RFTot))

感谢您看看有谁看到这个,请问我任何问题。

1 个答案:

答案 0 :(得分:0)

谢谢你们两位,它是用(-1)和偏移函数消除截距的组合。

a = lm(Temp ~ I(RFGG + RFSOx + RFSolar),data = dat)
beta1hat = rep(coef(a)[1],length=length(dat[,1]))
beta2hat = rep(coef(a)[2],length=length(dat[,1]))

b = lm(Temp ~ -1 + offset(beta1hat) + offset(beta2hat*(RFGG + RFSOx_bar + RFSolar_bar)),data = dat)
c = lm(Temp ~ -1 + offset(beta1hat) + offset(beta2hat*(RFGG_bar + RFSOx + RFSolar_bar)),data = dat)
d = lm(Temp ~ -1 + offset(beta1hat) + offset(beta2hat*(RFGG_bar + RFSOx_bar + RFSolar)),data = dat)