Extract pvalue from glm

前端 未结 4 562
说谎
说谎 2021-02-02 07:05

I\'m running many regressions and am only interested in the effect on the coefficient and p-value of one particular variable. So, in my script, I\'d like to be able to just extr

4条回答
  •  逝去的感伤
    2021-02-02 07:40

    You want

    coef(summary(fit))[,4]
    

    which extracts the column vector of p values from the tabular output shown by summary(fit). The p-values aren't actually computed until you run summary() on the model fit.

    By the way, use extractor functions rather than delve into objects if you can:

    fit$coefficients[2]
    

    should be

    coef(fit)[2]
    

    If there aren't extractor functions, str() is your friend. It allows you to look at the structure of any object, which allows you to see what the object contains and how to extract it:

    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")= 
      .. ..- 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"
    

    Hence we note the coefficients component which we can extract using coef(), but other components don't have extractors, like null.deviance, which you can extract as summ$null.deviance.

提交回复
热议问题