Предсказательные поля / прогнозы, содержащие переменные постоянные в R - PullRequest
3 голосов
/ 15 декабря 2011

Я недавно перешел на R, и мне это нравится.Но одна из вещей, по которым я скучаю больше всего, - это возможность генерировать предсказанные ответы модели, содержащие определенные переменные на заданных уровнях (среднее значение, 90-й процентиль и т. Д.).Это очень удобно при попытке определить влияние терминов взаимодействия, преобразованных переменных и т. Д.

Я могу легко сделать это в Stata с помощью команды adjust.Я пытался и пытался выяснить, как сделать это в R, но одна из больших ловушек использования языка с именем R (для которого есть также статистика R) и поиска таких терминов, как «Настроить», заключается в том, что я могукажется, только найти попадания на скорректированном R в квадрате.Это вне всякого разочарования.

Итак, рискуя задать действительно простой вопрос, кто-нибудь знает, как это сделать?Я рассмотрел прогнозирующие поля, и это похоже на по крайней мере связанный метод, но его реализация обычно включает в себя стандартизацию объясняющих переменных каким-либо образом.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

http://www.stata.com/support/faqs/stat/adjust.html утверждает, что:

На самом деле, настройка - это всего лишь интерфейс для предсказания

И она работает путем создания новых данныхнабор для предсказания.

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 тем, может оказаться полезной следующая ссылка: Как искать материалы "R"

1 голос
/ 15 декабря 2011

Вид описываемых вами задач был инкапсулирован в комбо пакета rms / Hmisc. Фрэнк Харрелл является автором, и он создает объект описания данных, называемый datadist, который его другие функции (расширенная версия обычных R-регрессионных и аналитических операций) используют при построении различных таблиц вывода. Я упоминаю об этом, потому что вы, кажется, изобретаете «Колесо Hmisc». Конечно, вы можете создать свою собственную версию с некоторыми комбинациями expand.grid и аргументом newdata= для predict, но это может не понадобиться. Другим важным вкладом Фрэнка в мир исследований и разработок является очень хорошо продуманный текст «Стратегии регрессионного моделирования», в котором обобщается большая часть его работы и работы других в выполнении анализа данных высокого качества.

0 голосов
/ 15 декабря 2011

Для прогнозирования модели используйте функцию predict.См., Например, ?predict.lm и example(predict.lm).

Бит .lm выше является примером системы класса S3.В этом случае это означает «вызов функции predict для объекта класса lm».То есть результат линейной регрессии.Большинство распространенных моделей будут работать с собственной версией predict (если это уместно), но не все модели гарантированно ее поддерживают.

...