Использование summary(glm-object) внутри ldply() с функцией summarise()

Как использовать сводную функцию внутри функции ldply()-summarise для извлечения p-значений?

Пример данных:

(предустановлен датафрейм "Пуромицин")

library(reshape2)
library(plyr)
Puromycin.m <- melt( Puromycin , id=c("state")  )
Puro.models <-  dlply( Puromycin.m , .(variable)  , glm , formula =  state ~ value  , 
family = binomial  )  

Я могу создать этот фрейм данных с извлеченными результатами:

ldply( Puro.models  ,  summarise ,  "n in each model" = length(fitted.values) ,   
"Coefficients" = coefficients[2] )

Но я не могу извлечь p-значения таким же образом. Я думал, что это сработает, но это не так:

    ldply( Puro.models  ,  summarise ,  
    "n in each model" = length(fitted.values) , 
    "Coefficients" = coefficients[2], 
    "P-value" = function(x) summary(x)$coef[2,4]              )

Как я могу извлечь p-значения в этот фрейм данных :) Пожалуйста, помогите!


person Rasmus Larsen    schedule 19.02.2013    source источник


Ответы (1)


Почему бы вам не получить их напрямую?

library(reshape2)
library(plyr)
Puromycin.m <- melt( Puromycin , id=c("state")  )
Puro.models <-  ddply( Puromycin.m , .(variable), function(x) {
    t <- glm(x, formula = state ~ value, family="binomial")
    data.frame(n = length(t$fitted.values), 
                coef = coefficients(t)[2], 
                pval = summary(t)$coef[2,4])
})

> Puro.models
#   variable  n        coef      pval
# 1     conc 23 -0.55300908 0.6451550
# 2     rate 23 -0.01555023 0.1272184
person Arun    schedule 19.02.2013
comment
Отлично, спасибо! Есть ли у вас какие-либо предложения для чтения, чтобы лучше понять использование функций внутри ddply()? - person Rasmus Larsen; 20.02.2013
comment
Мне очень нравится эта презентация. Это очень приятное начальное чтение. Однако я думаю, что ничто не заменит документацию Хэдли. Надеюсь это поможет. - person Arun; 20.02.2013