2015-04-23 3 views
2

Рассмотрим лм пригодный объект с точки зрения взаимодействия, например .:Как представить коэффициенты взаимодействия объекта R lm в таблице?

Call: 
lm(formula = mpg ~ interaction(gear, am, drop = T) - 1 + cyl, data = mtcars) 

Coefficients: 
interaction(gear, am, drop = T)3.0 interaction(gear, am, drop = T)4.0 
          35.478        34.022 
interaction(gear, am, drop = T)4.1 interaction(gear, am, drop = T)5.1 
          37.949        36.946 
           cyl 
          -2.594 

Есть простой способ организовать коэффициенты (только) взаимодействия-членов в двумерной таблицы? например:

gear am = 0 am = 1 
3  35.478 NA 
4  34.022 37.949 
5  NA  36.946 

ответ

1

Вы можете использовать пакет broom, чтобы получить информацию легко. Это просто вопрос настройки таблицы вы получаете в соответствии с вашими потребностями:

model <- lm(formula = mpg ~ interaction(gear, am, drop = T) - 1 + cyl, data = mtcars) 

library(broom) 
tidy(model)[grep("interaction", tidy(model)$term),] 
#        term estimate std.error statistic  p.value 
#1 interaction(gear, am, drop = T)3.0 35.47755 3.533483 10.04039 1.302118e-10 
#2 interaction(gear, am, drop = T)4.0 34.02157 2.781402 12.23181 1.599806e-12 
#3 interaction(gear, am, drop = T)4.1 37.94942 2.348132 16.16154 2.087857e-15 
#4 interaction(gear, am, drop = T)5.1 36.94589 3.096187 11.93271 2.822201e-12 

Чтобы получить таблицу, которую вы могли бы сделать это:

dtab <- table(mtcars$gear, mtcars$am) 
dtab[which(dtab != 0)] <- tidy(model)[grep("interaction", tidy(model)$term),]$estimate 
dtab[which(dtab == 0)] <- NA 
    #  0  1 
    #3 35.47755   
    #4 34.02157 37.94942 
    #5   36.94589 
+1

Это также распространяется красиво на более высокие размеры: если вместо из 'gear, am' нас интересует' gear, am, carb', use 'table (mtcars $ gear, mtcars $ am, mtcars $ carb)' – dzeltzer

 Смежные вопросы

  • Нет связанных вопросов^_^