gpt4 book ai didi

r - lm(offense$R ~ offence$OBP) 和 lm(R ~ OBP) 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 14:28:16 29 4
gpt4 key购买 nike

我正在尝试使用 R 创建一个线性模型并使用它来预测一些值。主题是棒球数据。如果我这样做:

obp <- lm(offense$R ~ offense$OBP)
predict(obp, newdata=data.frame(OBP=0.5), interval="predict")

我收到错误消息:警告消息:'newdata' 有 1 行,但发现的变量有 20 行。

但是,如果我这样做:
attach(offense)
obp <- lm(R ~ OBP)
predict(obp, newdata=data.frame(OBP=0.5), interval="predict")

它按预期工作,我得到一个结果。两者有什么区别?如果我只打印 OBP 和 offence$OBP,它们看起来是一样的。

最佳答案

在第一种情况下,如果你打印模型,你会得到这个:

Call:
lm(formula = offense$R ~ offense$OBP)

Coefficients:
(Intercept) offense$OBP
-0.1102 0.5276

但在第二个,你得到这个:
Call:
lm(formula = R ~ OBP)

Coefficients:
(Intercept) OBP
-0.1102 0.5276

查看系数的名称。当您使用 newdata=data.frame(OBP=0.5) 创建新数据时,这对第一个模型来说没有意义,所以 newdata 被忽略,你只能得到训练数据的预测值。当您使用 offense$R ~ offense$OBP ,公式每边只有两个向量,没有与 data.frame 相关联的名称.

最好的方法是:
obp = lm(R ~ OBP, data=offense)
predict(obp, newdata=data.frame(OBP=0.5), interval="predict")

你会得到正确的结果,预测 OBP=0.5 .

关于r - lm(offense$R ~ offence$OBP) 和 lm(R ~ OBP) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364454/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com