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

Holding the coefficients of a linear model constant while exchanging predictors for their sample means?

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

但是,我无法执行以下操作:

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)消除截距和偏移函数的组合

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)