r glm p-value

Extraer pvalue de glm



p-value (4)

Estoy ejecutando muchas regresiones y solo estoy interesado en el efecto sobre el coeficiente y el valor p de una variable en particular. Por lo tanto, en mi script, me gustaría poder extraer el valor p del resumen de glm (obtener el coeficiente en sí es fácil). La única forma que conozco de ver el valor de p es mediante el resumen (myReg). ¿Hay alguna otra manera?

p.ej:

fit <- glm(y ~ x1 + x2, myData) x1Coeff <- fit$coefficients[2] # only returns coefficient, of course x1pValue <- ???

He intentado tratar fit$coefficients como una matriz, pero todavía no puedo extraer simplemente el valor p.

¿Es posible hacer esto?

¡Gracias!


Bueno, esta sería otra forma, pero no la forma más eficiente de realizarla:

a = coeftable(model).cols[4] pVals = [ a[i].v for i in 1:length(a) ]

Esto asegura que los valores extraídos de glm no estén en StatsBase. En él, usted puede jugar con pVals según su requisito. Espero que ayude, Ebby


En lugar del número puedes poner directamente el nombre

coef(summary(fit))[,''Pr(>|z|)'']

Los otros disponibles a partir del resumen del coeficiente:

Estimate Std. Error z value Pr(>|z|)


He usado esta técnica en el pasado para extraer datos de predictores de un summary o de un objeto modelo ajustado:

coef(summary(m))[grepl("var_i_want$",row.names(coef(summary(m)))), 4]

lo que me permite editar fácilmente en qué variable quiero obtener datos.

O como se indicó, @Ben, use match o %in% , algo más limpio que grepl :

coef(summary(m))[row.names(coef(summary(m))) %in% "var_i_want" , 4]


Usted quiere

coef(summary(fit))[,4]

que extrae el vector de columna de los valores de p de la salida tabular que se muestra en summary(fit) . Los valores p no se calculan en realidad hasta que ejecuta summary() en el ajuste del modelo.

Por cierto, use funciones de extractor en lugar de ahondar en objetos si puede:

fit$coefficients[2]

debiera ser

coef(fit)[2]

Si no hay funciones de extractor, str() es tu amigo. Le permite ver la estructura de cualquier objeto, lo que le permite ver qué contiene el objeto y cómo extraerlo:

summ <- summary(fit) > str(summ, max = 1) List of 17 $ call : language glm(formula = counts ~ outcome + treatment, family = poisson()) $ terms :Classes ''terms'', ''formula'' length 3 counts ~ outcome + treatment .. ..- attr(*, "variables")= language list(counts, outcome, treatment) .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1 .. .. ..- attr(*, "dimnames")=List of 2 .. ..- attr(*, "term.labels")= chr [1:2] "outcome" "treatment" .. ..- attr(*, "order")= int [1:2] 1 1 .. ..- attr(*, "intercept")= int 1 .. ..- attr(*, "response")= int 1 .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> .. ..- attr(*, "predvars")= language list(counts, outcome, treatment) .. ..- attr(*, "dataClasses")= Named chr [1:3] "numeric" "factor" "factor" .. .. ..- attr(*, "names")= chr [1:3] "counts" "outcome" "treatment" $ family :List of 12 ..- attr(*, "class")= chr "family" $ deviance : num 5.13 $ aic : num 56.8 $ contrasts :List of 2 $ df.residual : int 4 $ null.deviance : num 10.6 $ df.null : int 8 $ iter : int 4 $ deviance.resid: Named num [1:9] -0.671 0.963 -0.17 -0.22 -0.956 ... ..- attr(*, "names")= chr [1:9] "1" "2" "3" "4" ... $ coefficients : num [1:5, 1:4] 3.04 -4.54e-01 -2.93e-01 1.34e-15 1.42e-15 ... ..- attr(*, "dimnames")=List of 2 $ aliased : Named logi [1:5] FALSE FALSE FALSE FALSE FALSE ..- attr(*, "names")= chr [1:5] "(Intercept)" "outcome2" "outcome3" "treatment2" ... $ dispersion : num 1 $ df : int [1:3] 5 4 5 $ cov.unscaled : num [1:5, 1:5] 0.0292 -0.0159 -0.0159 -0.02 -0.02 ... ..- attr(*, "dimnames")=List of 2 $ cov.scaled : num [1:5, 1:5] 0.0292 -0.0159 -0.0159 -0.02 -0.02 ... ..- attr(*, "dimnames")=List of 2 - attr(*, "class")= chr "summary.glm"

Por lo tanto, observamos el componente de coefficients que podemos extraer utilizando coef() , pero otros componentes no tienen extractores, como null.deviance , que puede extraer como summ$null.deviance .