r - 使用在 R 中设置为均值的控制变量获得拟合值
问题描述
我在 R 中有一个多元lm
模型,我想为它获取因子变量的每个类别的预测值/拟合值,并将控制变量设置为它们的平均值。
例如,使用 mtcars 数据集:
data(mtcars)
fit <- lm(mpg ~ gear + am + drat)
我想知道mpg
每个值的预测值是多少gear
,同时持有am
并drat
以他们的方式。
我知道我会为此使用 predict ,但在 predict 中似乎没有选择以保持变量的方式。
解决方案
data(mtcars)
fit <- lm(mpg ~ gear + am + drat, data=mtcars)
我们只需创建一个具有所需属性的新数据集(我在dplyr
这里使用函数,但任何解决方案都可以,只要它生成一个具有正确命名的正确类型变量的 data.frame):
library(dplyr)
fixed_am_and_drat <- data.frame(mtcars) %>%
mutate(am = mean(am),
drat = mean(drat)) %>%
select(gear, am, drat)
并传递这个新数据集以使用newdata
参数进行预测:
fixed_am_and_drat$predicted <- predict(fit, newdata = fixed_am_and_drat)
fixed_am_and_drat
回报:
gear am drat predicted
1 4 0.40625 3.596563 19.59310
2 4 0.40625 3.596563 19.59310
3 4 0.40625 3.596563 19.59310
4 3 0.40625 3.596563 21.18519
5 3 0.40625 3.596563 21.18519
6 3 0.40625 3.596563 21.18519
7 3 0.40625 3.596563 21.18519
8 4 0.40625 3.596563 19.59310
9 4 0.40625 3.596563 19.59310
10 4 0.40625 3.596563 19.59310
11 4 0.40625 3.596563 19.59310
12 3 0.40625 3.596563 21.18519
13 3 0.40625 3.596563 21.18519
14 3 0.40625 3.596563 21.18519
15 3 0.40625 3.596563 21.18519
16 3 0.40625 3.596563 21.18519
17 3 0.40625 3.596563 21.18519
18 4 0.40625 3.596563 19.59310
19 4 0.40625 3.596563 19.59310
20 4 0.40625 3.596563 19.59310
21 3 0.40625 3.596563 21.18519
22 3 0.40625 3.596563 21.18519
23 3 0.40625 3.596563 21.18519
24 3 0.40625 3.596563 21.18519
25 3 0.40625 3.596563 21.18519
26 4 0.40625 3.596563 19.59310
27 5 0.40625 3.596563 18.00101
28 5 0.40625 3.596563 18.00101
29 5 0.40625 3.596563 18.00101
30 5 0.40625 3.596563 18.00101
31 5 0.40625 3.596563 18.00101
32 4 0.40625 3.596563 19.59310
推荐阅读
- vaadin - 如何在 Vaadin 流中查看网格的详细信息?
- python - 在 Django 视图的 render() 中将图像作为参数发送
- c++ - 删除com接口指针的效果
- spring - 忽略结果执行函数
- python - Python xpath() 不显示内容
- java - IOException 并发超时 inputStream 读取 HTTP 请求
- transactions - 在 Hyperledger Composer 中调用另一个事务的事务
- java - AWS / Lambda / Java 上的 Elasticsearch 客户端 - 2.5 秒客户端启动时间
- r - 日志转换后如何在 ggplot 的图例中保留 0 值?
- web-crawler - 文本提取行为令人困惑