从 R 中的 lm 中提取变量以使用预测
Pulling variables from lm in R to use predict
说我运行以下lm
my.model = lm(distance ~ speed, data = my.data)
我可以执行以下操作来进行单元素预测
predict(my.model, speed = c(40))
情况是这样的:我有一个 lm
并且我知道它的作用(它是距离对速度的回归)但我不知道回归量被命名为速度。我怎么还能做预测?
predict(my.model, ??? = c(40))
我可以通过 names(my.model$coefficients)
获得回归变量的名称,但我不知道如何将其传递给预测
predict(my.model, names(my.model$coefficients)[2] = c(40))
不行
有什么建议吗?
谢谢!
使用内置 BOD
作为示例 运行 lm
然后传递一个单元素列表
或数据框 predict
使用 setNames
适当地设置名称:
fm <- lm(demand ~ Time, BOD)
predict(fm, setNames(list(5.5), variable.names(fm)[2]))
## 1
## 17.98929
另一种方法是根本不使用 predict
。使用上面的 fm
:
coef(fm) %*% c(1, 5.5)
## [,1]
## [1,] 17.98929
以iris
为例
myModel = lm(Petal.Width ~ Sepal.Length, data = iris)
predict(myModel, structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame"))
# 1
#-2.447297
说明
myModel
中的自变量名恢复使用:
attr(terms(myModel), "term.labels")
#[1] "Sepal.Length"
如果我们想动态创建一个 data.frame
并在 myModel
中使用一个名为自变量的列,我们会这样做:
structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame")
# Sepal.Length
#1 1
然后我们将 data.frame
传递给 lm
对象的 predict
方法,使用:
predict(myModel, structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame"))
说我运行以下lm
my.model = lm(distance ~ speed, data = my.data)
我可以执行以下操作来进行单元素预测
predict(my.model, speed = c(40))
情况是这样的:我有一个 lm
并且我知道它的作用(它是距离对速度的回归)但我不知道回归量被命名为速度。我怎么还能做预测?
predict(my.model, ??? = c(40))
我可以通过 names(my.model$coefficients)
获得回归变量的名称,但我不知道如何将其传递给预测
predict(my.model, names(my.model$coefficients)[2] = c(40))
不行
有什么建议吗?
谢谢!
使用内置 BOD
作为示例 运行 lm
然后传递一个单元素列表
或数据框 predict
使用 setNames
适当地设置名称:
fm <- lm(demand ~ Time, BOD)
predict(fm, setNames(list(5.5), variable.names(fm)[2]))
## 1
## 17.98929
另一种方法是根本不使用 predict
。使用上面的 fm
:
coef(fm) %*% c(1, 5.5)
## [,1]
## [1,] 17.98929
以iris
为例
myModel = lm(Petal.Width ~ Sepal.Length, data = iris)
predict(myModel, structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame"))
# 1
#-2.447297
说明
myModel
中的自变量名恢复使用:
attr(terms(myModel), "term.labels")
#[1] "Sepal.Length"
如果我们想动态创建一个 data.frame
并在 myModel
中使用一个名为自变量的列,我们会这样做:
structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame")
# Sepal.Length
#1 1
然后我们将 data.frame
传递给 lm
对象的 predict
方法,使用:
predict(myModel, structure(list(1), .Names = attr(terms(myModel), "term.labels"), class = "data.frame"))