尝试从简单线性回归预测时出错

时间:2016-06-25 23:05:32

标签: r lm

我有两个相关的变量GY;每个变量都有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 )

1 个答案:

答案 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