在R中保持变量恒定的预测裕度/预测

时间:2011-12-15 04:50:41

标签: r stata predict

我最近切换到R,我喜欢它。但我最想念的事情之一就是能够产生预测的模型响应,将某些变量保持在预设水平(平均值,第90百分位数等)。当试图辨别交互项,变换变量等的影响时,这非常方便。

我可以使用adjust命令在Stata中轻松完成此操作。我已经尝试并试图弄清楚如何在R中做到这一点,但使用一种名为R的语言(其中也有一个统计R)和搜索“调整”之类的术语的一个重大缺陷就是我可以似乎只能在调整后的R平方上找到命中率。这令人沮丧。

因此,冒着问一个非常简单的问题的风险,有谁知道如何做到这一点?我研究了预测边距,这似乎至少是一种相关类型的方法,但它的实现通常涉及以某种方式标准化解释变量。

3 个答案:

答案 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.lmexample(predict.lm)

上面的.lm位是S3类系统的示例。在这种情况下,它意味着“在类predict的对象上调用lm函数”。也就是说,线性回归的结果。大多数常见模型都可以使用自己的predict版本(如果合适),但并非所有模型都支持它。