我在R中使用lm()函数生成了一个线性模型,例如,
lm.cars = lm(mtcars$mpg ~ mtcars$hp)这将产生以下结果:
Call:
lm(formula = mtcars$mpg ~ mtcars$hp)
Coefficients:
(Intercept) mtcars$hp
30.09886 -0.06823 现在我想在不同的数据集上使用这个模型定义的函数(y = -0.07x + 30.1) (我有不同的数据,这样做更有意义,但想法是一样的)。所以,我有一组不同的x值,我想用lm拟合得到的函数来预测y值。我想知道是否有更好的方法来做到这一点,而不是手动读取所有参数并使用它们定义一个函数。我有很多不同的线性模型,参数很多,这似乎有点乏味。有内置的功能可以为我做到这一点吗?
谢谢!
发布于 2020-07-20 18:06:11
是的,你可以用predict来做。重要的是,您的新数据集必须具有与原始数据集中相同的列名。在本例中,这意味着您必须创建一个带有hp列的数据框架:
my_model <- lm(mpg ~ hp, data = mtcars)
my_new_data <- data.frame(hp = runif(n=10, 50, 300))
predict(my_model, my_new_data)输出
> predict(my_model, my_new_data)
1 2 3 4 5 6 7 8
22.40625 19.90452 12.62276 14.01068 18.85295 22.92663 20.56899 24.95091
9 10
25.68709 18.39930 发布于 2020-07-20 18:00:35
试试这个:
lm.cars <- lm(mtcars$mpg ~ mtcars$hp)
#New dummy data
NDummy <- mtcars
NDummy$Predict <- predict(lm.cars,NDummy)
mpg cyl disp hp drat wt qsec vs am gear carb Predict
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 22.59375
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 22.59375
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 23.75363
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 22.59375
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 18.15891
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 22.93489使用predict(),您可以使用该模型。只需处理新数据中变量的名称即可。在这里,我包括了一个虚拟数据的头。
https://stackoverflow.com/questions/63001242
复制相似问题