วิธีแก้ไขใน 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *