我有两个相关的变量G
和Y
;每个变量都有12个值。我计算相关性并拟合称为rg
的线性回归模型。现在我想使用此模型来预测名为GP
的第二个变量的新值。我想获得与每个Y
值对应的GP
值。 GP
有5个值。
当我做预测时,我收到以下错误:
Warning message:
'newdata' had 5 rows but variables found have 12 rows
如何将模型应用于GP
?, GP
是否需要有12个值?我想不是。 predict.lm
中是否有任何选项可以执行此操作?
G<-c(20,25,21,30,22,23,19,24,21,23,28,27)
I<-c(229,235,230,242,231,233,226,232,230,232,238,236)
#diagrama de dispersion
qqplot(G,I)
#regression
rg<-lm(I ~ G)
summary(rg)
coef(rg[1])
#coeficiente de correlación
cor(G,I)
cp<-cor(G,I,method = c("pearson"))
cs<-cor(G,I,method = c("spearman"))
# newdata
GP <- c(30,32,34,36,38)
# predecir el valor de ingresos para estos valores
X1<-data.frame(GP)
Y_pred <- predict.lm(rg,X1 )
答案 0 :(得分:2)
为了使用predict
方法,newdata
数据框的名称需要与公式中的变量匹配。
G <- c(20,25,21,30,22,23,19,24,21,23,28,27)
I <- c(229,235,230,242,231,233,226,232,230,232,238,236)
将数据打包到数据框中(名称从变量名称中自动获取):使用data
参数而不是从全局工作空间中提取值,这是更好的做法。
dd <- data.frame(G,I)
rg <- lm(I ~ G, data=dd)
新数据:
GP <- c(30,32,34,36,38)
pdata <- data.frame(G=GP) ## same name as in original model
请注意,如果您不重命名变量(data.frame(GP)
),您将获得包含单个变量pdata$GP
的数据框,而不是包含pdata$G
的数据框(尝试并看看) - 然后R会抱怨它无法找到G
变量。 (请注意,predict
可用于存在大量变量的更复杂的情况......)
(Y_pred <- predict(rg,pdata))
## 1 2 3 4 5
## 240.9580 243.4903 246.0227 248.5550 251.0874
相关(虽然可能不是完全重复):Trouble using predict with linear model in R。