Удержание коэффициентов линейной модели постоянной при обмене предикторами для их выборочных средних?
Я пытался взглянуть на объяснительную силу отдельных переменных в модели, удерживая другие переменные постоянными в их выборочном среднем значении.
Тем не менее, я не могу сделать что-то вроде:
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 ответ
Спасибо вам обоим, это была комбинация устранения перехвата с (-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)