วิธีแก้ไขใน r: มีค่าสัมประสิทธิ์นามแฝงในโมเดล
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Error in vive.default(model): there are aliased coefficients in the model
ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อมี multicollinearity ในแบบจำลองการถดถอย นั่นคือตัวแปรทำนายตั้งแต่สองตัวขึ้นไปในแบบจำลองมีความสัมพันธ์กันสูง (หรือสมบูรณ์แบบ)
เมื่อสิ่งนี้เกิดขึ้น เราบอกว่าตัวแปรนั้นเป็น “นามแฝง” ของตัวแปรอื่น ซึ่งทำให้เกิดปัญหาเมื่อปรับโมเดลการถดถอยให้เหมาะสม
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเราใช้ แบบจำลองการถดถอย ต่อไปนี้ใน R:
#make this example reproducible
set. seeds (0)
#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)
#fit regression model
model <- lm(y~x1+x2+x3)
เราสามารถใช้ฟังก์ชัน vive() ของแพ็คเกจ รถยนต์ เพื่อคำนวณค่า VIF สำหรับตัวแปรทำนายแต่ละตัวในโมเดลเพื่อพิจารณาว่าปัญหาหลายเส้นตรงเป็นปัญหาหรือไม่:
library (car)
#calculate VIF values for predictor variables
lively(model)
Error in vive.default(model): there are aliased coefficients in the model
เราได้รับข้อผิดพลาดที่ระบุว่า ” มีค่าสัมประสิทธิ์นามแฝงในแบบจำลอง” “
สิ่งนี้บอกเราว่าตัวแปรทำนายตั้งแต่สองตัวขึ้นไปในแบบจำลองมีความสัมพันธ์กันอย่างสมบูรณ์แบบ
วิธีการแก้ไขข้อผิดพลาด
ในการพิจารณาว่าตัวแปรทำนายใดมีความสัมพันธ์กันอย่างสมบูรณ์ เราสามารถใช้ฟังก์ชัน cor() เพื่อสร้าง เมทริกซ์สหสัมพันธ์ สำหรับตัวแปรได้:
#place variables in data frame
df <- data. frame (x1, x2, x3, y)
#create correlation matrix for data frame
cor(df)
x1 x2 x3 y
x1 1.00000000 0.126886263 0.126886263 0.065047543
x2 0.12688626 1.000000000 1.000000000 -0.009107573
x3 0.12688626 1.000000000 1.000000000 -0.009107573
y 0.06504754 -0.009107573 -0.009107573 1.000000000
เราจะเห็นว่าตัวแปร x2 และ x3 มี ค่าสัมประสิทธิ์สหสัมพันธ์ เป็น 1 ซึ่งบอกเราว่าตัวแปรทั้งสองนี้ทำให้เกิดข้อผิดพลาดเนื่องจากมีความสัมพันธ์กันอย่างสมบูรณ์
หากต้องการแก้ไขข้อผิดพลาดนี้ เพียงปรับแบบจำลองการถดถอยอีกครั้งและปล่อยตัวแปรตัวใดตัวหนึ่งจากสองตัวนี้ออกไป
ไม่สำคัญว่าเราจะละเว้นตัวแปรใดเนื่องจากทั้งคู่ให้ข้อมูลที่เหมือนกันทุกประการในแบบจำลองการถดถอย
เพื่อความง่าย ให้ลบ x3 ออกแล้วใส่โมเดลการถดถอยอีกครั้ง:
library (car)
#make this example reproducible
set. seeds (0)
#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)
#fit regression model
model <- lm(y~x1+x2)
#calculate VIF values for predictor variables in model
lively(model)
x1 x2
1.016364 1.016364
โปรดทราบว่าเราจะไม่ได้รับข้อผิดพลาดใด ๆ ในครั้งนี้เมื่อคำนวณค่า VIF สำหรับโมเดล เนื่องจาก multicollinearity ไม่ใช่ปัญหาอีกต่อไป
ที่เกี่ยวข้อง: วิธีการคำนวณและตีความค่า VIF ใน R
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีการซ่อมแซมใน R: การเปลี่ยนมีความยาวเป็นศูนย์
วิธีแก้ไขในอาร์กิวเมนต์ R: เกี่ยวข้องกับจำนวนบรรทัดที่แตกต่างกัน
วิธีแก้ไขในอาร์กิวเมนต์ R: ไม่ใช่ทั้งตัวเลขหรือตรรกะ: return na