我有两个变量G
和Y
相关的;每个变量有 12 个值。我计算相关性并拟合一个名为 rg
的线性回归模型。现在我想使用这个模型来预测第二个变量 GP
的新值。我想要Y
与每个 GP
对应的值值(value)。 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 )
最佳答案
为了使用 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
变量。 (请注意,预测
可用于存在大量变量的更复杂的情况...)
(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 。
关于r - 尝试从简单线性回归进行预测时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38033708/