ฉันจะเรียกใช้การวิเคราะห์การถดถอยโลจิสติกแบบ Ordinal ใน R ด้วยค่าตัวเลข / หมวดหมู่ได้อย่างไร


17

ฐานข้อมูล : ฉันมีคนประมาณ 1,000 คนที่มีการประเมินผล: '1,' [ดี] '2,' [กลาง] หรือ '3' [ไม่ดี] - นี่คือค่าที่ฉันพยายามทำนายสำหรับคนในอนาคต . นอกจากนั้นฉันยังมีข้อมูลด้านประชากรศาสตร์: เพศ (หมวดหมู่: M / F) อายุ (ตัวเลข: 17-80) และเชื้อชาติ (หมวดหมู่: ดำ / ผิวขาว / ลาติน)

ฉันส่วนใหญ่มีสี่คำถาม:

  1. ตอนแรกฉันพยายามเรียกใช้ชุดข้อมูลที่อธิบายไว้ข้างต้นเป็นการวิเคราะห์ถดถอยหลายครั้ง แต่เมื่อเร็ว ๆ นี้ฉันได้เรียนรู้ว่าเนื่องจากการพึ่งพาของฉันเป็นปัจจัยที่สั่งและไม่ใช่ตัวแปรต่อเนื่องฉันควรใช้การถดถอยแบบลอจิสติกอันดับสำหรับสิ่งนี้ ตอนแรกฉันใช้บางอย่างที่mod <- lm(assessment ~ age + gender + race, data = dataset)ใครสามารถชี้ให้ฉันไปในทิศทางที่ถูกต้อง?

  2. จากตรงนั้นสมมติว่าฉันได้ค่าสัมประสิทธิ์ที่ฉันรู้สึกสบายใจฉันเข้าใจวิธีการใส่ค่าตัวเลขเพียงอย่างเดียวใน x1, x2 และอื่น ๆ - แต่ฉันจะจัดการกับเผ่าพันธุ์ได้อย่างไรเช่นมีหลายคำตอบ: ดำ / ผิวขาว / ลาติน? ดังนั้นถ้ามันบอกฉันว่าค่าสัมประสิทธิ์ผิวขาวคือ 0.289 และใครบางคนที่ฉันพยายามจะทำนายก็คือผิวขาวฉันจะเสียบกลับเข้าที่ใหม่ได้อย่างไรเนื่องจากค่าไม่ใช่ตัวเลข?

  3. ฉันยังมีค่าสุ่มที่หายไป - บางอย่างสำหรับการแข่งขันบางอย่างสำหรับเพศ ฯลฯ ฉันต้องทำอะไรเพิ่มเติมเพื่อให้แน่ใจว่านี่จะไม่บิดเบือนอะไรหรือไม่? (ฉันสังเกตว่าเมื่อชุดข้อมูลของฉันถูกโหลดลงใน R-Studio เมื่อข้อมูลที่หายไปถูกโหลดในขณะที่NAR บอกว่าคล้าย(162 observations deleted due to missingness)- แต่ถ้าพวกเขาโหลดเป็นช่องว่างมันจะไม่ทำอะไรเลย)

  4. สมมติว่าทั้งหมดนี้เป็นไปได้และฉันมีข้อมูลใหม่เกี่ยวกับเพศอายุและเชื้อชาติที่ฉันต้องการทำนาย - มีวิธีที่ง่ายกว่าใน R ในการดำเนินการทั้งหมดผ่านสูตรใด ๆ ที่มีสัมประสิทธิ์ใหม่ปรากฏขึ้น แทนที่จะทำด้วยตนเอง? (หากคำถามนี้ไม่เหมาะสมที่นี่ฉันสามารถนำกลับไปที่ฟอรัม R)

คำตอบ:


16

นี่คือข้อมูลเล็กน้อยที่อาจชี้คุณไปในทิศทางที่ถูกต้อง

เกี่ยวกับข้อมูลของคุณสิ่งที่คุณมีคือการตอบสนองที่มีหลายหมวดหมู่และเมื่อใดก็ตามที่คุณพยายามสร้างแบบจำลองการตอบสนองซึ่งเป็นหมวดหมู่คุณมีสิทธิ์ที่จะลองและใช้โมเดลเชิงเส้นทั่วไป (GLM) ในกรณีของคุณคุณมีข้อมูลเพิ่มเติมที่คุณต้องคำนึงถึงเกี่ยวกับการตอบกลับของคุณและนั่นคือระดับการตอบสนองของคุณมีการเรียงลำดับตามธรรมชาติ> กลาง> ไม่ดีสังเกตว่ามันแตกต่างจากการพยายามสร้างแบบจำลองการตอบสนองอย่างไร มีแนวโน้มที่จะซื้อ (แดง / น้ำเงิน / เขียว) ค่าเหล่านี้ไม่มีการสั่งซื้อตามธรรมชาติ เมื่อทำแบบจำลองนี้ด้วยการตอบสนองที่สั่งซื้อคุณอาจต้องการพิจารณาใช้แบบจำลองอัตราต่อรองแบบสัดส่วน

http://en.wikipedia.org/wiki/Ordered_logit

ฉันไม่ได้ใช้ด้วยตัวเอง แต่polr()ฟังก์ชั่นในแพ็คเกจ MASS นั้นน่าจะมีประโยชน์บ้างหรือฉันใช้lrm()ฟังก์ชั่นในแพ็คเกจ rms เพื่อทำการวิเคราะห์แบบเดียวกันและพบว่ามันมีประโยชน์มาก หากคุณโหลดแพ็คเกจเหล่านี้เพียงแค่ใช้?polrหรือ?lrmสำหรับข้อมูลฟังก์ชั่น

พื้นหลังพอคำถามของคุณ:

  1. สิ่งนี้ควรได้รับการกล่าวถึงข้างต้นลองดูแพ็คเกจ / ฟังก์ชั่นเหล่านี้และอ่านข้อมูลเกี่ยวกับการถดถอยโลจิสติกอันดับและรูปแบบอัตราต่อรองแบบสัดส่วน

  2. เมื่อใดก็ตามที่คุณมีโควาเรียต์ซึ่งเป็นหมวดหมู่ (เชื้อชาติ / เพศ / สีผม) คุณต้องการที่จะปฏิบัติต่อสิ่งเหล่านี้เป็น 'ปัจจัย' ในการเข้ารหัส R ของคุณเพื่อสร้างแบบจำลองเหล่านั้นอย่างเหมาะสม สิ่งสำคัญคือต้องรู้ว่าปัจจัยคืออะไรและได้รับการปฏิบัติอย่างไร แต่โดยพื้นฐานแล้วคุณถือว่าแต่ละหมวดหมู่เป็นระดับที่แยกจากกันและจากนั้นสร้างแบบจำลองเหล่านั้นด้วยวิธีที่เหมาะสม เพียงแค่อ่านปัจจัยต่าง ๆ ในแบบจำลองและคุณควรจะสามารถหยอกล้อสิ่งที่เกิดขึ้น โปรดทราบว่าการรักษาตัวแปรเด็ดขาดเป็นปัจจัยไม่ได้มีความเฉพาะเจาะจงกับโมเดล GLM หรือโมเดลอัตราต่อรองแบบสัดส่วน แต่โดยทั่วไปแล้วทุกรุ่นจะจัดการกับตัวแปรเด็ดขาดอย่างไร http://www.stat.berkeley.edu/classes/s133/factors.html

  3. บางครั้งค่าที่ขาดหายไปอาจเป็นเรื่องยุ่งยากที่จะจัดการ แต่ถ้าคุณทำการวิเคราะห์ขั้นพื้นฐานอย่างเป็นธรรมมันอาจจะปลอดภัยที่จะลบแถวข้อมูลที่มีค่าที่หายไป (นี่ไม่จริงเสมอไป แต่ขึ้นอยู่กับระดับประสบการณ์ของคุณในปัจจุบัน) การคาดเดาคุณไม่จำเป็นต้องเกี่ยวข้องกับข้อมูลเฉพาะของเวลาและวิธีจัดการกับค่าที่ขาดหายไป) ในความเป็นจริงนี่เป็นสิ่งที่ R ทำ หากคุณมีข้อมูลที่คุณใช้เป็นแบบจำลองหากคุณไม่มีข้อมูลในแถวสำหรับการตอบกลับหรือค่าความแปรปรวนร่วมในรูปแบบ R กำลังจะแยกข้อมูลนี้ออก (นี่คือคำเตือนของคุณที่เห็น) เห็นได้ชัดว่าหากคุณไม่รวมสัดส่วนข้อมูลขนาดใหญ่ของคุณเนื่องจากการขาดหายไปผลลัพธ์ของคุณอาจลำเอียงและอาจเป็นเรื่องดีที่จะลองและรับข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่มีค่าขาดหายไปมากมาย แต่ถ้าคุณ ' กำลังหายไป 162 ข้อสังเกตใน 10,000 แถวของข้อมูลฉันจะไม่เหงื่อมากเกินไป คุณสามารถใช้วิธีการจัดการข้อมูลที่ขาดหายไปได้หากคุณสนใจในรายละเอียดเพิ่มเติม

  4. เกือบทุกรุ่น R วัตถุ ( lm, glm,lrm , ... ) จะมีการเชื่อมโยงpredict()การทำงานซึ่งจะช่วยให้คุณสามารถคำนวณค่าที่คาดการณ์สำหรับการสร้างแบบจำลองชุดปัจจุบันของคุณและนอกจากนี้สำหรับชุดข้อมูลอื่นที่คุณต้องการที่จะทำนายผลการ เพียงค้นหา?predict.glmหรือ?predict.lmลองและรับข้อมูลเพิ่มเติมสำหรับประเภทของโมเดลที่คุณต้องการใช้งาน นี่เป็นสิ่งที่คนทั่วไปต้องการทำกับแบบจำลองดังนั้นคุณสามารถมั่นใจได้ว่ามีฟังก์ชั่นและวิธีการบางอย่างที่ควรทำให้ตรงไปตรงมา

ขอให้โชคดี!


2
  1. ใช่สั่ง logit หรือ probit จะเป็นจุดเริ่มต้น ต่อไปนี้เป็นบทช่วยสอนเกี่ยวกับการสั่งซื้อ logit ที่ใช้คำถาม CV อื่น ๆ อาจช่วยคุณในการแก้ปัญหาใด ๆ - ลองใช้แท็ก 'logit' 'probit' และ 'ordinal'

  2. วิธีการมาตรฐานในการจัดการกับตัวแปรอิสระเด็ดขาดด้วย k ค่าคือการใช้รหัสจำลองมัน k-1ค่าไบนารี สิ่งนี้อธิบายได้อย่างสมบูรณ์มากขึ้นที่นี่แต่โดยย่อ: ผลกระทบของหมวดหมู่หนึ่งถูกรวมเข้ากับการสกัดกั้น ในตัวอย่างของคุณจะมีตัวแปรดัมมี่caucasianที่จะถูกเข้ารหัสเป็น 1 สำหรับผู้ตอบชาวคอเคเซียน 0 มิฉะนั้น

  3. การจัดการกับข้อมูลที่หายไปนั้นขึ้นอยู่กับปัญหาที่เกิดขึ้นและใช่วิธีที่คุณจัดการกับข้อมูลที่หายไปอาจทำให้เกิดอคติได้ ข้อความที่ตัดตอนมาจากหนังสือเล่มนี้อธิบายกลไกสี่อย่างที่สามารถสร้างข้อมูลที่หายไปซึ่งจะช่วยให้คุณพิจารณาอคติที่อาจเกิดขึ้นในปัญหาของคุณเอง (โดยเฉพาะอย่างยิ่งมาตรา 25.1, หน้า. 530)

  4. แพ็คเกจการสร้างแบบจำลองจำนวนมากมีpredictฟังก์ชั่นของการเรียงลำดับและแน่นอนการสอนครั้งแรกที่เชื่อมโยงข้างต้นรวมถึงการสาธิต


ขอบคุณมาก! การติดตามอย่างรวดเร็วใน # 2: นั่นเป็นข้อสมมติฐานพื้นฐานของฉัน - แต่รหัสคืออะไรมีตัวแปรมากกว่าสองตัว ตัวอย่างเช่นผิวขาว, ดำ, ละติน
Ryan

ยินดีต้อนรับค่อนข้างมาก! ในตัวอย่างนั้นคุณจะต้องเลือกหมวดหมู่หนึ่งหมวดย่อยเพื่อเข้าไปในการสกัดกั้นการพูดlatinoและหุ่นสำหรับอีกสองรายการ ค่า 1 สำหรับcaucasiandummy แสดงถึงผู้ตอบชาวคอเคเชี่ยนซึ่งคล้ายกับblackตัวแปรจำลอง ค่า 0 สำหรับทั้งคู่ระบุว่าผู้ตอบแบบลาติน ทำให้รู้สึก?
ฌอนอีสเตอร์

ดังนั้นฉันควรเปลี่ยนชุดข้อมูลจากหนึ่งคอลัมน์ที่มีการตอบกลับหลายรายการ ('ดำ', 'ผิวขาว,' และ 'ละติน') เป็นคอลัมน์ 'ดำ' หนึ่งคอลัมน์ด้วย 1s และ 0s หนึ่งคอลัมน์ 'ผิวขาว' กับ 1s และ 0s และหนึ่ง คอลัมน์ 'ลาติน' ที่มี 1 วินาทีและ 0 วินาทีใช่ไหม
Ryan

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

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