我最近切换到R,我喜欢它。但我最想念的事情之一就是能够产生预测的模型响应,将某些变量保持在预设水平(平均值,第90百分位数等)。当试图辨别交互项,变换变量等的影响时,这非常方便。
我可以使用adjust
命令在Stata中轻松完成此操作。我已经尝试并试图弄清楚如何在R中做到这一点,但使用一种名为R的语言(其中也有一个统计R)和搜索“调整”之类的术语的一个重大缺陷就是我可以似乎只能在调整后的R平方上找到命中率。这令人沮丧。
因此,冒着问一个非常简单的问题的风险,有谁知道如何做到这一点?我研究了预测边距,这似乎至少是一种相关类型的方法,但它的实现通常涉及以某种方式标准化解释变量。
答案 0 :(得分:2)
http://www.stata.com/support/faqs/stat/adjust.html声明:
事实上,adjust实际上只是预测的前端
它的工作原理是为预测创建一个新的数据集。
R predict
有一个参数newdata
用于改变预测假设,但可能不像Stata的adjust
那么容易。 transform
也可能是您感兴趣的,请参阅以下示例。
# create model
mtcars.lm <- lm(hp~disp*cyl,mtcars)
# default fit predictions
predict(mtcars.lm)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
128.60896 128.60896 80.25811 128.88296
Hornet Sportabout Valiant Duster 360 Merc 240D
208.48842 128.79069 208.48842 75.58796
Merc 230 Merc 280 Merc 280C Merc 450SE
76.29995 128.63021 128.63021 197.85671
Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
197.85671 197.85671 222.63037 221.11516
Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
218.58981 83.79391 84.15593 84.71104
Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
78.79793 203.18519 201.41745 207.22575
Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
213.53912 83.75770 78.77380 81.81483
Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
207.35202 128.56702 201.03865 78.68933
# predict assuming all cars have 8 cylinders
predict(mtcars.lm,newdata=transform(mtcars,cyl=8))
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive
183.2349 183.2349 176.6690 195.6091
Hornet Sportabout Valiant Duster 360 Merc 240D
208.4884 191.4423 208.4884 181.5556
Merc 230 Merc 280 Merc 280C Merc 450SE
180.8106 184.1946 184.1946 197.8567
Merc 450SL Merc 450SLC Cadillac Fleetwood Lincoln Continental
197.8567 197.8567 222.6304 221.1152
Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla
218.5898 172.9694 172.5906 172.0098
Toyota Corona Dodge Challenger AMC Javelin Camaro Z28
178.1969 203.1852 201.4174 207.2257
Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
213.5391 173.0073 178.2221 175.0402
Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
207.3520 181.3409 201.0386 178.3105
至于搜索R相关主题,您可能会发现以下链接很有用:How to search for "R" materials?
答案 1 :(得分:1)
您描述的任务类型已封装到rms / Hmisc包组合中。 Frank Harrell是作者,他构建了一个名为datadist
的数据描述对象,他的其他功能(普通R回归和分析操作的增强版本)在构建各种输出表时使用。我之所以提到这一点,是因为你似乎正在重塑“Hmisc-wheel”。当然,您可以使用expand.grid
的一些组合以及newdata=
的{{1}}参数构建自己的版本,但可能不需要它。弗兰克对R / S世界的其他重要贡献是“回归模型策略”文本,它总结了他的大部分工作以及其他人在执行高质量数据分析方面的工作。
答案 2 :(得分:0)
要进行模型预测,请使用predict
函数。例如,请参阅?predict.lm
和example(predict.lm)
。
上面的.lm
位是S3
类系统的示例。在这种情况下,它意味着“在类predict
的对象上调用lm
函数”。也就是说,线性回归的结果。大多数常见模型都可以使用自己的predict
版本(如果合适),但并非所有模型都支持它。