How do I retrieve p-values?

#1

I have run ordinal regression in RStudio using two different packages, relaxing the proportional odds assumption for predictor PROXIMITY. My ordinal response has 3 levels.

Using VGAM and vglm(), the output is roughly something like this:

> Coefficients: 
                                 Estimate    Std. Error      z value Pr(>|z|)    
(Intercept):1              0.5117320  0.5437684   0.941 0.346662    
(Intercept):2             -0.7123845  0.4982063  -1.430 0.152746    
PROXIMITY2:1          1.1099603  0.4781458   2.321 0.020266 *  
PROXIMITY2:2          0.8870411  0.4860655   1.825 0.068010 
PROXIMITY3:1          0.7963931  0.2106141   3.781 0.000156 ***
PROXIMITY3:2          1.2027518  0.2720969   4.420 9.86e-06 ***
HAB                           -0.0096147  0.0024824  -3.873 0.000107 *** 

And then using clm() in the ordinal package, the output is:

> Coefficients:
                            Estimate   Std. Error     z value Pr(>|z|) 
HAB                  -0.009615   0.002511  -3.828 0.000129 ***

> Threshold coefficients:
                            Estimate   Std. Error z value
1|2.PROXIMITY2 -1.10996    0.48137  -2.306
2|3.PROXIMITY2 -0.88704    0.48672  -1.822
1|2.PROXIMITY3 -0.79640    0.21145  -3.766
2|3.PROXIMITY3 -1.20274    0.27188  -4.424 

The predictor for which the assumption is relaxed, PROXIMITY, is shown under threshold coefficients when using clm(), and no p values are produced. Is there a reason for this? How can I retrieve the p values when using the clm() approach?

Thanks!

0 Likes

#2
library(ordinal)
fm1 <- clm(rating ~ temp * contact, data = wine)
summary(fm1)
#> formula: rating ~ temp * contact
#> data:    wine
#> 
#>  link  threshold nobs logLik AIC    niter max.grad cond.H 
#>  logit flexible  72   -86.42 186.83 6(0)  5.22e-12 5.1e+01
#> 
#> Coefficients:
#>                     Estimate Std. Error z value Pr(>|z|)    
#> tempwarm              2.3212     0.7009   3.311 0.000928 ***
#> contactyes            1.3475     0.6604   2.041 0.041300 *  
#> tempwarm:contactyes   0.3595     0.9238   0.389 0.697129    
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Threshold coefficients:
#>     Estimate Std. Error z value
#> 1|2  -1.4113     0.5454  -2.588
#> 2|3   1.1436     0.5097   2.244
#> 3|4   3.3771     0.6382   5.292
#> 4|5   4.9420     0.7509   6.581
str(fm1)
#> List of 34
#>  $ aliased      :List of 2
#>   ..$ alpha: Named logi [1:4] FALSE FALSE FALSE FALSE
#>   .. ..- attr(*, "names")= chr [1:4] "1|2" "2|3" "3|4" "4|5"
#>   ..$ beta : Named logi [1:3] FALSE FALSE FALSE
#>   .. ..- attr(*, "names")= chr [1:3] "tempwarm" "contactyes" "tempwarm:contactyes"
#>  $ alpha        : Named num [1:4] -1.41 1.14 3.38 4.94
#>   ..- attr(*, "names")= chr [1:4] "1|2" "2|3" "3|4" "4|5"
#>  $ beta         : Named num [1:3] 2.32 1.35 0.36
#>   ..- attr(*, "names")= chr [1:3] "tempwarm" "contactyes" "tempwarm:contactyes"
#>  $ call         : language clm(formula = rating ~ temp * contact, data = wine)
#>  $ coefficients : Named num [1:7] -1.41 1.14 3.38 4.94 2.32 ...
#>   ..- attr(*, "names")= chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>  $ cond.H       : num 50.8
#>  $ contrasts    :List of 2
#>   ..$ temp   : chr "contr.treatment"
#>   ..$ contact: chr "contr.treatment"
#>  $ control      :List of 11
#>   ..$ method       : chr "Newton"
#>   ..$ sign.location: chr "negative"
#>   ..$ sign.nominal : chr "positive"
#>   ..$ convergence  : chr "warn"
#>   ..$ trace        : int 0
#>   ..$ maxIter      : int 100
#>   ..$ gradTol      : num 1e-06
#>   ..$ relTol       : num 1e-06
#>   ..$ tol          : num 1.49e-08
#>   ..$ maxLineIter  : int 15
#>   ..$ maxModIter   : int 5
#>  $ convergence  :List of 3
#>   ..$ code       : int 0
#>   ..$ messages   : chr "successful convergence"
#>   ..$ alg.message: chr "Absolute and relative convergence criteria were met"
#>  $ df.residual  : num 65
#>  $ edf          : int 7
#>  $ fitted.values: num [1:72] 0.5623 0.2086 0.4347 0.0894 0.1903 ...
#>  $ formula      :Class 'formula'  language rating ~ temp * contact
#>   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>  $ formulas     :List of 2
#>   ..$ formula :Class 'formula'  language rating ~ temp * contact
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   ..$ fullForm:Class 'formula'  language rating ~ temp * contact
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   ..- attr(*, "envir")=<environment: R_GlobalEnv> 
#>  $ gradient     : Named num [1:7] 1.40e-12 3.74e-12 -5.22e-12 -8.90e-14 -4.88e-13 ...
#>   ..- attr(*, "names")= chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>  $ Hessian      : num [1:7, 1:7] 4.625 -2.01 0 0 -0.118 ...
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>   .. ..$ : chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>  $ info         :'data.frame':   1 obs. of  8 variables:
#>   ..$ link     : Factor w/ 1 level "logit": 1
#>   ..$ threshold: Factor w/ 1 level "flexible": 1
#>   ..$ nobs     : num 72
#>   ..$ logLik   : Factor w/ 1 level "-86.42": 1
#>   ..$ AIC      : Factor w/ 1 level "186.83": 1
#>   ..$ niter    : Factor w/ 1 level "6(0)": 1
#>   ..$ max.grad : Factor w/ 1 level "5.22e-12": 1
#>   ..$ cond.H   : Factor w/ 1 level "5.1e+01": 1
#>  $ link         : chr "logit"
#>  $ logLik       : num -86.4
#>  $ maxGradient  : num 5.22e-12
#>  $ message      : chr "Absolute and relative convergence criteria were met"
#>  $ model        :'data.frame':   72 obs. of  3 variables:
#>   ..$ rating : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 3 3 4 4 4 5 5 1 2 ...
#>   ..$ temp   : Factor w/ 2 levels "cold","warm": 1 1 1 1 2 2 2 2 1 1 ...
#>   ..$ contact: Factor w/ 2 levels "no","yes": 1 1 2 2 1 1 2 2 1 1 ...
#>   ..- attr(*, "terms")=Classes 'terms', 'formula'  language rating ~ temp * contact
#>   .. .. ..- attr(*, "variables")= language list(rating, temp, contact)
#>   .. .. ..- attr(*, "factors")= int [1:3, 1:3] 0 1 0 0 0 1 0 1 1
#>   .. .. .. ..- attr(*, "dimnames")=List of 2
#>   .. .. .. .. ..$ : chr [1:3] "rating" "temp" "contact"
#>   .. .. .. .. ..$ : chr [1:3] "temp" "contact" "temp:contact"
#>   .. .. ..- attr(*, "term.labels")= chr [1:3] "temp" "contact" "temp:contact"
#>   .. .. ..- attr(*, "order")= int [1:3] 1 1 2
#>   .. .. ..- attr(*, "intercept")= int 1
#>   .. .. ..- attr(*, "response")= int 1
#>   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   .. .. ..- attr(*, "predvars")= language list(rating, temp, contact)
#>   .. .. ..- attr(*, "dataClasses")= Named chr [1:3] "ordered" "factor" "factor"
#>   .. .. .. ..- attr(*, "names")= chr [1:3] "rating" "temp" "contact"
#>  $ n            : int 72
#>  $ niter        : Named num [1:2] 6 0
#>   ..- attr(*, "names")= chr [1:2] "outer" "inner"
#>  $ nobs         : num 72
#>  $ start        : NULL
#>  $ terms        :Classes 'terms', 'formula'  language rating ~ temp * contact
#>   .. ..- attr(*, "variables")= language list(rating, temp, contact)
#>   .. ..- attr(*, "factors")= int [1:3, 1:3] 0 1 0 0 0 1 0 1 1
#>   .. .. ..- attr(*, "dimnames")=List of 2
#>   .. .. .. ..$ : chr [1:3] "rating" "temp" "contact"
#>   .. .. .. ..$ : chr [1:3] "temp" "contact" "temp:contact"
#>   .. ..- attr(*, "term.labels")= chr [1:3] "temp" "contact" "temp:contact"
#>   .. ..- attr(*, "order")= int [1:3] 1 1 2
#>   .. ..- attr(*, "intercept")= int 1
#>   .. ..- attr(*, "response")= int 1
#>   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
#>   .. ..- attr(*, "predvars")= language list(rating, temp, contact)
#>   .. ..- attr(*, "dataClasses")= Named chr [1:3] "ordered" "factor" "factor"
#>   .. .. ..- attr(*, "names")= chr [1:3] "rating" "temp" "contact"
#>  $ Theta        : num [1, 1:4] -1.41 1.14 3.38 4.94
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : NULL
#>   .. ..$ : chr [1:4] "1|2" "2|3" "3|4" "4|5"
#>  $ threshold    : chr "flexible"
#>  $ tJac         : num [1:4, 1:4] 1 0 0 0 0 1 0 0 0 0 ...
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : chr [1:4] "1|2" "2|3" "3|4" "4|5"
#>   .. ..$ : chr [1:4] "1|2" "2|3" "3|4" "4|5"
#>  $ vcov         : num [1:7, 1:7] 0.297 0.143 0.143 0.144 0.147 ...
#>   ..- attr(*, "dimnames")=List of 2
#>   .. ..$ : chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>   .. ..$ : chr [1:7] "1|2" "2|3" "3|4" "4|5" ...
#>  $ xlevels      :List of 2
#>   ..$ temp   : chr [1:2] "cold" "warm"
#>   ..$ contact: chr [1:2] "no" "yes"
#>  $ y            : Ord.factor w/ 5 levels "1"<"2"<"3"<"4"<..: 2 3 3 4 4 4 5 5 1 2 ...
#>   ..- attr(*, "names")= chr [1:72] "1" "2" "3" "4" ...
#>  $ y.levels     : chr [1:5] "1" "2" "3" "4" ...
#>  - attr(*, "class")= chr "clm"

Created on 2019-03-08 by the reprex package (v0.2.1)

The example from help(clm) and inspecting the object with str shows that there is no p-value. You do get Pr(>|z|) but that's not exactly the same.

0 Likes

closed #3

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.

0 Likes