使用具有2个或更多解释变量的predict()函数

时间:2018-03-30 11:42:35

标签: r linear-regression lm predict

我使用lm()构建了一些模型。响应变量是每个月在两个地点之一的物种的丰富程度。它以百分比形式给出小数点后6位。必须使用百分比,因为数据是通过公民科学收集的,其中每月记录的实际月度总数不可靠,但两个地点各自的总体比例(%)是。

最佳拟合模型有两个解释变量,即风速和风向,均为数值。我想应用predict()函数。到目前为止,我已按照帖子here中的说明操作,如下所示。

model <- lm(y~ x1, data=df)
new.df <- data.frame(x1=c(0, 10, 20))
predict(model, new.df) 

这似乎适用于只有一个探索性变量的模型,但我在添加第二个时遇到了麻烦,所以它适用于我最合适的模型。

到目前为止,这是我提出的,然而,结果没有意义,因为两个是负数。

model2 <- lm(y ~ x1+x2, data=df)
new.df <- data.frame(x1=c(1, 6, 12), (x2=c(1, 10, 20)))
predict(model2, new.df)

 1          2          3 
 0.4123114 -0.3975497 -1.3014379 

如果有人能提出任何建议,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果你需要x1 + x2并且两者的相互作用(y~x1 + x2 + x1:x2)试试这个:

> df <- data.frame(x1=c(2, 12, 24), x2=c(2, 20, 40), y=c(1,2,3)) # example DF

> model2 <- lm(y ~ x1*x2, data=df)
> new.df <- data.frame(x1=c(1, 6, 12), (x2=c(1, 10, 20)))
> predict(model2, new.df)
  1   2   3 
1.0 1.5 2.0 

答案 1 :(得分:0)

我发现了问题。我的响应变量已经转换,以确保满足假设。因此,android:fontFamily ="sans-serif" 的输出返回其转换状态的值。