วิธีจัดการกับข้อผิดพลาดเช่น“ ค่าสัมประสิทธิ์: 14 ไม่ได้ถูกนิยามเนื่องจากภาวะเอกฐาน” ใน R?


17

เมื่อทำ GLM และคุณได้รับข้อผิดพลาด "ไม่ได้ถูกกำหนดเนื่องจากภาวะเอกฐาน" ในผลลัพธ์ anova หนึ่งจะตอบโต้ข้อผิดพลาดนี้ได้อย่างไร

บางคนบอกว่าเป็นเพราะ collinearity ระหว่าง covariates หรือว่าหนึ่งในระดับที่ไม่ได้อยู่ในชุดข้อมูล (ดู: การตีความ "ไม่ได้กำหนดไว้เพราะเอกภาวะ" ใน lm )

ถ้าผมอยากจะดูว่า "การรักษาโดยเฉพาะอย่างยิ่ง" คือการขับรถรูปแบบและฉันมี 4 ระดับของการรักษา: Treat 1, Treat 2, Treat 3และTreat 4ซึ่งได้รับการบันทึกไว้ในสเปรดชีตของฉันเป็น: เมื่อTreat 11 ส่วนที่เหลือเป็นศูนย์เมื่อTreat 21 ส่วนที่เหลือเป็นศูนย์ เป็นต้นฉันต้องทำอย่างไร


ฉันเห็นคนจำนวนมากมีปัญหานี้ - ไม่มีใครเข้าใจคำตอบของบุคคลนี้หรือไม่ stat.ethz.ch/pipermail/r-help/2006-April/103836.html
Platypezid

คำตอบ:


28

คุณอาจได้รับข้อผิดพลาดนั้นเพราะตัวแปรอิสระสองตัวหรือมากกว่านั้นเป็นคอลลิเออร์ที่สมบูรณ์แบบ (เช่นตัวแปรดัมมี่ที่เข้ารหัสผิดเพื่อสร้างสำเนาที่เหมือนกัน)

ใช้คอร์ () กับข้อมูลหรือนามแฝง () ในโมเดลของคุณ


11
ขอบคุณไม่ทราบฟังก์ชัน alias () มันมีประโยชน์จริงๆ ไชโย, O.
OFish

ฟังก์ชั่นไม่รู้เช่นaliasกัน ค่อนข้างดี
igorkf

1

ข้อผิดพลาด "ไม่ได้กำหนดเนื่องจากมีภาวะเอกฐาน" จะเกิดขึ้นเนื่องจากมีความสัมพันธ์กันอย่างมากระหว่างตัวแปรอิสระของคุณ สิ่งนี้สามารถหลีกเลี่ยงได้โดยการมีตัวแปรจำลอง n-1 ในกรณีของคุณสำหรับตัวแปรการรักษาคุณควรใช้ตัวแปรดัมมี่ไบนารี 3 ตัว (Treat1, Treat2, Treat3)

ในการโปรแกรม R ฟังก์ชันการถดถอยเชิงเส้นใน LM () จะส่งผลให้ "NA" เป็นค่าใช้จ่ายร่วมสำหรับตัวแปรที่มีความสัมพันธ์สูง


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