Mendapatkan nilai-p untuk "multinom" di R (paket nnet)

19

Bagaimana cara saya mendapatkan nilai-p menggunakan multinomfungsi nnetpaket R?

Saya memiliki dataset yang terdiri dari "Skor patologi" (Absen, Ringan, Parah) sebagai variabel hasil, dan dua efek utama: Usia (dua faktor: dua puluh / tiga hari) dan Kelompok Perawatan (empat faktor: terinfeksi tanpa ATB; terinfeksi + ATB1; terinfeksi + ATB2; terinfeksi + ATB3).

Pertama saya mencoba menyesuaikan model regresi ordinal, yang tampaknya lebih sesuai mengingat karakteristik variabel dependen saya (ordinal). Namun, asumsi peluang proporsionalitas sangat dilanggar (secara grafis), yang mendorong saya untuk menggunakan model multinomial sebagai gantinya, menggunakan nnetpaket.

Pertama saya memilih level hasil yang perlu saya gunakan sebagai kategori baseline:

Data$Path <- relevel(Data$Path, ref = "Absent")

Kemudian, saya perlu mengatur kategori dasar untuk variabel independen:

Data$Age <- relevel(Data$Age, ref = "Twenty")
Data$Treat <- relevel(Data$Treat, ref="infected without ATB") 

Model:

test <- multinom(Path ~ Treat + Age, data = Data) 
# weights:  18 (10 variable) 
initial value 128.537638 
iter 10 value 80.623608 
final  value 80.619911 
converged

Hasil:

Coefficients:
         (Intercept)   infected+ATB1   infected+ATB2   infected+ATB3    AgeThirty
Moderate   -2.238106   -1.1738540      -1.709608       -1.599301        2.684677
Severe     -1.544361   -0.8696531      -2.991307       -1.506709        1.810771

Std. Errors:
         (Intercept)    infected+ATB1   infected+ATB2   infected+ATB3    AgeThirty
Moderate   0.7880046    0.8430368       0.7731359       0.7718480        0.8150993
Severe     0.6110903    0.7574311       1.1486203       0.7504781        0.6607360

Residual Deviance: 161.2398
AIC: 181.2398

pnnet:multinomppsummarymultinomt

pt(abs(summary1$coefficients / summary1$standard.errors), df=nrow(Data)-10, lower=FALSE) 

         (Intercept)   infected+ATB1   infected+ATB2   infected+ATB3    AgeThirty
Moderate 0.002670340   0.08325396      0.014506395     0.02025858       0.0006587898
Severe   0.006433581   0.12665278      0.005216581     0.02352202       0.0035612114

ptzmultinom

p

Luciano
sumber
Anda dapat menggunakan perbandingan model dengan uji rasio kemungkinan untuk model penuh dan dikurangi dengan menggunakan nnet's anova()fungsi.
caracal

Jawaban:

14

Bagaimana dengan menggunakan

z <- summary(test)$coefficients/summary(test)$standard.errors
# 2-tailed Wald z tests to test significance of coefficients
p <- (1 - pnorm(abs(z), 0, 1)) * 2
p

Pada dasarnya, ini akan didasarkan pada estimasi koefisien relatif terhadap kesalahan standar mereka, dan akan menggunakan uji az untuk menguji terhadap perbedaan yang signifikan dengan nol berdasarkan pada uji dua sisi. Faktor dua mengoreksi masalah yang disebutkan Peter Dalgaard di atas (Anda memerlukannya karena Anda menginginkan tes dua sisi, bukan tes satu sisi), dan menggunakan uji-z, bukan uji-t, untuk menyelesaikan yang lain masalah yang Anda sebutkan.

Anda juga bisa mendapatkan hasil yang sama (Wald z-tes) menggunakan

library(AER)
coeftest(test)

Tes rasio kemungkinan umumnya dianggap lebih akurat daripada tes Wald z (yang terakhir menggunakan perkiraan normal, tes LR tidak), dan ini bisa didapat dengan menggunakan

library(afex)
set_sum_contrasts() # use sum coding, necessary to make type III LR tests valid
library(car)
Anova(test,type="III")

Jika Anda ingin melakukan tes posthoc Tukey berpasangan, maka ini dapat diperoleh dengan menggunakan lsmeanspaket seperti yang dijelaskan dalam posting saya yang lain !

Tom Wenseleers
sumber
Penjelasan lebih lanjut tentang langkah-langkah ini dapat membantu OP.
Momo
1
Menambahkan sedikit penjelasan sekarang ...
Tom Wenseleers
1
Berikut ini adalah halaman yang bagus yang memperluas pada opsi uji-z Wald: stats.idre.ucla.edu/r/dae/multinomial-logistic-regress
DirtStats