【发布时间】:2018-03-30 11:42:35
【问题描述】:
我使用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
如果有人能提供任何建议,我将不胜感激。
【问题讨论】:
-
lm模型不知道您的y不能为负数,因此给定一些似是而非的x组合,它可以预测负数y。您最有可能寻找的是glm和family = poisson。 -
我看不出你的代码有什么问题;如果您不提供有关
df和/或模型拟合的详细信息,很难说更多。拟合线性模型的质量如何?请查看如何提供minimal reproducible example/attempt,包括示例数据。 -
如果没有输入数据的一些样本,真的无能为力,但@missuse 是正确的。
lm似乎工作正常。如果您的数据中不可能有负值,您需要指定一个更适合您的数据的glm链接函数。 -
感谢您的反馈。我已经更新了我的问题,我希望它已经足够了。我从“glm”开始,但我遇到了困难,因为响应变量是小数点后 6 位的百分比。我想我可能需要寻找一种不同的方法来预测这些解释变量如何影响响应。
标签: r linear-regression lm predict