วิธีการตั้งค่าและประเมินโมเดล logom แบบมัลติโนเมียลใน R


20

ฉันใช้โมเดล login แบบหลายมิติใน JMP และได้ผลลัพธ์กลับมาซึ่งรวมถึง AIC และค่า p-chi-squared สำหรับการประมาณพารามิเตอร์แต่ละตัว แบบจำลองมีผลลัพธ์เด็ดขาดหนึ่งรายการและมีคำอธิบายอย่างละเอียด 7 ข้อ

ฉันพอดีกับสิ่งที่ฉันคิดว่าจะสร้างรูปแบบเดียวกันใน R โดยใช้multinomฟังก์ชั่นในแพ็คเกจnnet

รหัสนั้นเป็นพื้น:

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

อย่างไรก็ตามทั้งสองให้ผลลัพธ์ที่แตกต่าง ด้วย JMP AIC คือ 2923.21 และnnet::multinomAIC คือ 3116.588

ดังนั้นคำถามแรกของฉันคือ: หนึ่งในรุ่นผิดหรือเปล่า?

สิ่งที่สองคือ JMP ให้ค่า chi-squared สำหรับการประมาณการพารามิเตอร์แต่ละครั้งซึ่งฉันต้องการ การสรุปผลการทำงานบน multinom fit1ไม่ได้ - เพียงแค่ให้ค่าประมาณ, AIC และ Deviance

คำถามที่สองของฉันคือ: มีวิธีรับค่า p สำหรับแบบจำลองและการประมาณค่าเมื่อใช้nnet::multinomหรือไม่

ฉันรู้ว่าmlogitเป็นแพ็กเกจ R อื่นสำหรับสิ่งนี้และดูเหมือนว่าเอาต์พุตจะรวมค่า p ไว้ด้วย อย่างไรก็ตามฉันไม่สามารถเรียกmlogitใช้โดยใช้ข้อมูลของฉันได้ ฉันคิดว่าฉันมีรูปแบบข้อมูลที่ถูกต้อง แต่มันบอกว่าฉันมีสูตรที่ไม่ถูกต้อง ฉันใช้สูตรเดียวกับที่ฉันใช้multinomแต่ดูเหมือนว่าต้องใช้รูปแบบที่แตกต่างกันโดยใช้ไพพ์และฉันไม่เข้าใจวิธีการทำงาน

ขอบคุณ


2
คุณสามารถตั้งค่าอาร์กิวเมนต์ Hess = TRUE เพื่อให้ได้ Hessian กลับมาจาก multinom จากนั้นคำนวณค่า p ด้วยตนเอง แต่ฉันขอแนะนำให้คุณใช้ mlogit ไลบรารี่ (nnet สามารถมีปัญหาการลู่เข้าเมื่อ covariates ไม่ถูกปรับขนาดอย่างถูกต้อง) บทความสั้นสำหรับ mlogit ค่อนข้างดีและควรช่วยให้คุณตั้งค่าข้อมูลของคุณได้อย่างถูกต้อง บทความสั้น ๆ สามารถพบได้ตามปกติ: cran.r-project.org/web/packages/mlogit
Jason Morgan

คำตอบ:


9

ฉันแน่ใจว่าคุณพบโซลูชันของคุณแล้วเนื่องจากโพสต์นี้เก่ามาก แต่สำหรับพวกเราที่ยังคงมองหาวิธีแก้ปัญหา - ฉันพบhttp://youtu.be/-Cp_KP9mq94เป็นแหล่งข้อมูลที่ดีสำหรับคำแนะนำเกี่ยวกับวิธีการ รันโมเดลการถดถอยโลจิสติกหลายมิติใน R โดยใช้แพ็คเกจ mlogit หากคุณไปที่เว็บไซต์สถาบันการศึกษา econonometrics เธอมีสคริปต์ทั้งหมดข้อมูลสำหรับ R และ SAS และ STATA ฉันคิดหรือ SPSS อย่างใดอย่างหนึ่ง

ประเภทใดอธิบายวิธี / สาเหตุและสิ่งที่ต้องทำเกี่ยวกับการแปลงข้อมูลของคุณเป็นรูปแบบของรูปแบบ "ยาว" เทียบกับ "กว้าง" เป็นไปได้ว่าคุณจะมีรูปแบบที่หลากหลายซึ่งต้องมีการแปลงรูปแบบ

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


3

โดยทั่วไปแล้วความแตกต่างของค่า AIC ระหว่างซอฟต์แวร์สองชิ้นนั้นไม่น่าแปลกใจเลย การคำนวณความน่าจะเป็นมักจะเกี่ยวข้องกับค่าคงที่ที่เหมือนกันระหว่างแบบจำลองต่างๆของข้อมูลเดียวกัน ผู้พัฒนาที่แตกต่างกันสามารถสร้างทางเลือกที่แตกต่างกันเกี่ยวกับสิ่งที่จะออกจากหรือคงที่ เมื่อคุณควรกังวลคือเมื่อความแตกต่างในค่า AIC ระหว่างสองรุ่นแตกต่างกัน ที่จริงฉันเพิ่งสังเกตเห็นข้อโต้แย้งที่จะmultinom()ช่วยให้คุณเปลี่ยนวิธีการยุบแถวที่มีค่า X เหมือนกันและสิ่งนี้มีผลต่อพื้นฐานของการเบี่ยงเบนและ AIC คุณสามารถลองใช้ค่าที่ต่างกันของข้อโต้แย้งซัมซุงและดูว่าสิ่งนั้นทำให้ค่าเบี่ยงเบนเป็นไปตามที่ตกลงหรือไม่ เราไม่รู้ว่า JMP กำลังทำอะไร! :)

หากค่าสัมประสิทธิ์โดยประมาณและข้อผิดพลาดมาตรฐานเท่ากันแสดงว่าคุณทำได้ดี หากค่าสัมประสิทธิ์ไม่เหมือนกันอย่าลืมว่า JMP อาจเลือกผลลัพธ์พื้นฐานอื่นเพื่อคำนวณค่าสัมประสิทธิ์ multinom()ทำให้ตัวเลือกที่แตกต่างจากmlogit()ตัวอย่างเช่น

การรับค่า p จากสรุป () ผลลัพธ์ของ multinom () นั้นค่อนข้างง่าย ฉันไม่สามารถทำแบบจำลองของคุณได้ดังนั้นนี่คือตัวอย่างจากหน้าช่วยเหลือใน multinom ():

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 เป็นเรื่องที่ท้าทาย! อ่านบทความสั้น ๆ อย่างระมัดระวัง พวกเขาช่วยได้


ฉันจะใช้ตัวแปรอื่น ๆ (ทั่วไป) จากFishingชุดข้อมูลกับ multinom ได้อย่างไร
gregmacfarlane

@gmacfarlane เพียงแค่เพิ่มตัวแปรที่คุณต้องการให้กับสูตรในรูปแบบ multinom (โหมด ~ Income + price.beach, ...
atiretoo

@atiretoo ฉันกำลังมองหาวิธีที่จะได้รับช่วงเวลาของฉันดังนั้นขอบคุณ! แต่เพื่อความกระจ่าง - 6 มาจากไหนกับ df? เหมือนสิ่งที่ฉันควรจะนับเพื่อรับ df ของฉัน ฉันมีตัวแปรต่อเนื่องและตัวแปรเด็ดขาด (4 หมวดหมู่) ในแบบจำลองของฉัน นั่นจะเป็น df ของ 5 หรือไม่? นอกจากนี้การตกปลาเป็นชุดข้อมูลทั้งหมดใช่มั้ย ซึ่งเป็นตัวอย่างของขนาดอิสระ
Kerry

@atiretoo ฉันขอโทษฉันเพิ่งพบว่าถ้าใช้ package nnet เพื่อรัน logit regression - จริง ๆ แล้วมันจะคำนวณ df ที่มีประสิทธิภาพและมันถูกเก็บไว้ในวัตถุ nnet ดังนั้นฉันสามารถแยก df จากโมเดลและใช้มันได้ ฉันไม่ได้ตรวจสอบว่าวัตถุ mlogit จะมีข้อมูลเหมือนกันหรือไม่
Kerry

@Kerry คุณดีใจที่พบมัน
atiretoo

1

คุณสามารถลองใช้งาน login แบบหลายสัญลักษณ์โดยใช้แพ็คเกจ glmnet ฉันไม่แน่ใจว่าจะบังคับให้เก็บตัวแปรทั้งหมดได้อย่างไร แต่ฉันแน่ใจว่าเป็นไปได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.