R'de çok terimli bir logit modeli nasıl kurulur ve tahmin edilir?


20

JMP'de bir multinomial logit modeli çalıştırdım ve her bir parametre tahmini için AIC ve ki-kare p-değerlerini içeren sonuçları geri aldım. Modelin bir kategorik sonucu ve 7 kategorik açıklayıcı varyasyonu vardır.

Sonra nnet paketindeki multinomişlevi kullanarak, R aynı modeli inşa düşündüğüm uygun .

Kod temel olarak:

fit1 <- multinom(y ~ x1+x2+...xn,data=mydata);
summary(fit1);

Ancak ikisi farklı sonuçlar vermektedir. JMP ile AIC 2923.21 ve nnet::multinomAIC ile 3116.588'dir.

Benim Yani ilk soru ise: modeller yanlış biri mi?

İkinci şey, JMP ihtiyacım olan her parametre tahmini için ki kare p değerleri verir. Multinom üzerinde özet çalışması fit1yapmaz - sadece AIC ve Sapma tahminlerini verir.

Benim ikinci soru böylece: kullanılırken model ve tahminler için p-değerleri almak için bir yolu var mı nnet::multinom?

Mlogit bunun için başka bir R paket olduğunu biliyorum ve çıktı p-değerleri içerir gibi görünüyor; ancak mlogitverilerimi kullanarak çalışamadım . Sanırım veriler doğru biçimlendirilmişti, ancak geçersiz bir formülüm olduğunu söyledi. Kullandığım formülün aynısını kullandım multinom, ancak bir pipo kullanarak farklı bir format gerektiriyor ve bunun nasıl çalıştığını anlamıyorum.

Teşekkürler.


2
Hessian'ı multinomdan geri almak ve ardından p-değerlerini manuel olarak hesaplamak için Hess = TRUE bağımsız değişkenini ayarlayabilirsiniz. Ancak mlogit kütüphanesini kullanmanızı öneririm (ortak değişkenler doğru ölçeklenmediğinde nnet yakınsama sorunları yaşayabilir). Mlogit vinyetleri oldukça iyidir ve verilerinizi doğru şekilde ayarlamanıza yardımcı olmalıdır. Vinyetler her zamanki yerde bulunabilir: cran.r-project.org/web/packages/mlogit
Jason Morgan

Yanıtlar:


9

Bu yazı çok eski olduğu için çözümlerinizi zaten bulduğunuzdan eminim, ancak hala çözüm arayanlarımız için - http://youtu.be/-Cp_KP9mq94 , nasıl yapılacağı konusunda talimatlar için harika bir kaynak buldum mlogit paketini kullanarak R'de çok terimli bir lojistik regresyon modeli çalıştırın. Ekononometri akademisi web sitesine giderseniz o tüm komut dosyaları, R ve SAS ve STATA için veri var sanırım ya da bunlardan biri SPSS.

Hangi tür verilerinizi "uzun" biçimine veya "geniş" biçimine dönüştürmek için nasıl / neden ve ne yapılacağını açıklar. Büyük olasılıkla, dönüşüm gerektiren geniş bir formatınız var.

https://sites.google.com/site/econometricsacademy/econometrics-models/multinomial-probit-and-logit-models


3

Genel olarak, iki farklı yazılım parçası arasındaki AIC değerlerindeki farklılıklar tamamen şaşırtıcı değildir. Olasılıkların hesaplanması genellikle aynı verilerin farklı modelleri arasında aynı olan bir sabit içerir. Farklı geliştiriciler, bu sabitin içinde veya dışında ne bırakılacağı konusunda farklı seçimler yapabilirler. Endişelenmeniz gereken, iki model arasındaki AIC değerlerindeki farklılıkların farklı olmasıdır. Aslında multinom(), özdeş X değerlerine sahip satırların nasıl daraltıldığını değiştirmenize ve bunun sapmanın temelini ve dolayısıyla AIC'yi değiştirmesine izin veren bir argüman fark ettim . Summ argümanının farklı değerlerini deneyebilir ve bunun sapmaları kabul edip etmediğini görebilirsiniz. JMP'nin ne yaptığını bilmiyoruz! :)

Tahmini katsayılar ve standart hatalar aynıysa, o zaman iyisinizdir. Katsayılar aynı değilse, JMP'nin katsayıları hesaplamak için farklı bir temel sonuç seçebileceğini unutmayın. örneğin multinom()farklı seçimler yapar mlogit().

Multinom () sonucunun özet () sonucundan p değerleri almak oldukça kolaydır. Modellerinizi yeniden oluşturamıyorum, işte multinom () yardım sayfasındaki örnek:

library("nnet")
data("Fishing", package = "mlogit")
fishing.mu <- multinom(mode ~ income, data = Fishing)
sum.fishing <- summary(fishing.mu) # gives a table of outcomes by covariates for coef and SE
str(sum.fishing)
# now get the p values by first getting the t values
pt(abs(sum.fishing$coefficients / sum.fishing$standard.errors),
  df=nrow(Fishing)-6,lower=FALSE)

Mlogit paketini bulmanın biraz zor olduğunu kabul ediyorum! Vinyetleri dikkatlice okuyun. Yardım ediyorlar.


FishingVeri kümesindeki diğer (genel) değişkenleri multinom ile nasıl kullanabilirim ?
gregmacfarlane

@gmacfarlane Sadece formüle istediğiniz değişkenleri multinom'da ekleyin (mod ~ gelir + fiyat.beach, ...
atiretoo

@atiretoo Benim pvals almak için bir yol arıyordum çok teşekkürler! ama sadece açıklama için - 6 df ile nereden geliyor? benim df almak için ne saymalıyım gibi? Modelimde sürekli değişken ve kategorik değişken (4 kategori) var. Peki bu 5 df olur mu? Ayrıca, balıkçılık tüm veri seti doğru mu? Hangi örnek boyutu serbestlik derecesi olduğunu.
Kerry

@ özür dilerim, ben sadece logit regresyon çalıştırmak için nnet paketi kullanarak - aslında etkili df hesaplar ve nnet nesnesi içinde saklanır bulundu. Böylece, df'yi modelden çıkarabilir ve kullanabilirim. Mlogit nesnesinin aynı bilgilere sahip olup olmadığını kontrol etmedim.
Kerry

@Kerry bulduğuna sevindim.
atiretoo

1

Ayrıca glmnet paketini kullanarak çok terimli bir logit çalıştırmayı deneyebilirsiniz. Tüm değişkenleri korumaya nasıl zorlayacağından emin değilim, ama bunun mümkün olduğuna eminim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.