วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน r
คู่มือนี้แสดงตัวอย่างวิธีดำเนิน การถดถอยเชิงเส้นหลายรายการ ใน R รวมถึง:
- ตรวจสอบข้อมูลก่อนติดตั้งโมเดล
- การปรับโมเดล
- การตรวจสอบสมมติฐานแบบจำลอง
- การตีความเอาท์พุตโมเดล
- การประเมินความดีของแบบจำลอง
- ใช้แบบจำลองในการทำนาย
ไปกันเถอะ!
สิ่งอำนวยความสะดวก
สำหรับตัวอย่างนี้ เราจะใช้ชุดข้อมูล R ในตัว mtcars ซึ่งมีข้อมูลเกี่ยวกับคุณลักษณะต่างๆ ของรถยนต์ 32 คันที่แตกต่างกัน:
#view first six lines of mtcars
head(mtcars)
# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
ในตัวอย่างนี้ เราจะสร้างแบบจำลองการถดถอยเชิงเส้นหลายตัวที่ใช้ mpg เป็นตัวแปรตอบสนอง และใช้ disp , hp และ drat เป็นตัวแปรทำนาย
#create new data frame that contains only the variables we would like to use to data <- mtcars[, c("mpg", "disp", "hp", "drat")] #view first six rows of new data frame head(data) # mpg disp hp drat #Mazda RX4 21.0 160 110 3.90 #Mazda RX4 Wag 21.0 160 110 3.90 #Datsun 710 22.8 108 93 3.85 #Hornet 4 Drive 21.4 258 110 3.08 #Hornet Sportabout 18.7 360 175 3.15 #Valiant 18.1 225 105 2.76
การตรวจสอบข้อมูล
ก่อนที่จะปรับโมเดลให้เหมาะสม เราสามารถดูข้อมูลเพื่อทำความเข้าใจได้ดีขึ้น และยังประเมินด้วยภาพว่าการถดถอยเชิงเส้นพหุคูณอาจเป็นแบบจำลองที่ดีในการใส่ข้อมูลนี้หรือไม่
โดยเฉพาะอย่างยิ่ง เราต้องตรวจสอบว่าตัวแปรทำนายมีความสัมพันธ์ เชิงเส้น กับตัวแปรตอบสนองหรือไม่ ซึ่งจะบ่งชี้ว่าแบบจำลองการถดถอยเชิงเส้นหลายตัวอาจเหมาะสม
เมื่อต้องการทำเช่นนี้ เราสามารถใช้ฟังก์ชัน pairs() เพื่อสร้าง Scatterplot ของคู่ตัวแปรที่เป็นไปได้แต่ละคู่:
pairs(data, pch = 18, col = "steelblue")
จากกราฟคู่นี้ เราจะเห็นสิ่งต่อไปนี้:
- mpg และ ความพร้อมใช้งาน ดูเหมือนจะมีความสัมพันธ์เชิงเส้นเชิงลบที่แข็งแกร่ง
- mpg และ hp ดูเหมือนจะมีความสัมพันธ์เชิงเส้นเชิงบวกที่แข็งแกร่ง
- mpg และ drat ดูเหมือนจะมีความสัมพันธ์เชิงเส้นเชิงลบเล็กน้อย
โปรดทราบว่าเรายังสามารถใช้ฟังก์ชัน ggpairs() จากไลบรารี GGally เพื่อสร้างพล็อตที่คล้ายกันซึ่งมี ค่าสัมประสิทธิ์สหสัมพันธ์เชิงเส้น จริงสำหรับตัวแปรแต่ละคู่:
#install and load the GGally library install.packages("GGally") library(GGally) #generate the pairs plot ggpairs(data)
ตัวแปรทำนายแต่ละตัวดูเหมือนจะมีความสัมพันธ์เชิงเส้นที่เห็นได้ชัดเจนกับตัวแปรตอบสนอง mpg ดังนั้นเราจะดำเนินการปรับแบบจำลองการถดถอยเชิงเส้นให้พอดีกับข้อมูล
การปรับโมเดล
ไวยากรณ์พื้นฐานสำหรับการปรับโมเดลการถดถอยเชิงเส้นหลายตัวใน R ให้เหมาะสมคือ:
lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)
การใช้ข้อมูลของเรา ทำให้เราสามารถใส่โมเดลได้โดยใช้โค้ดต่อไปนี้:
model <- lm(mpg ~ disp + hp + drat, data = data)
การตรวจสอบสมมติฐานแบบจำลอง
ก่อนที่จะดำเนินการตรวจสอบผลลัพธ์ของแบบจำลอง เราต้องตรวจสอบก่อนว่าเป็นไปตามสมมติฐานของแบบจำลอง กล่าวคือ เราต้องตรวจสอบสิ่งต่อไปนี้:
1. การกระจายตัวของแบบจำลองที่เหลือควรจะเป็นปกติโดยประมาณ
เราสามารถตรวจสอบได้ว่าเป็นไปตามสมมติฐานนี้หรือไม่โดยสร้างฮิสโตแกรมแบบง่ายของสารตกค้าง:
hist(residuals(model), col = "steelblue")
แม้ว่าการกระจายตัว จะเอียงไปทางขวา เล็กน้อย แต่ก็ไม่ได้ผิดปกติพอที่จะทำให้เกิดข้อกังวลหลัก
2. ความแปรปรวนของสารตกค้างจะต้องสอดคล้องกันสำหรับการสังเกตทั้งหมด
สภาวะที่ต้องการนี้เรียกว่าภาวะโฮโมสซิดาสติก การละเมิดสมมติฐานนี้เรียกว่าความ ต่างศักย์
เพื่อตรวจสอบว่าเป็นไปตามสมมติฐานนี้หรือไม่ เราสามารถสร้าง กราฟที่ปรับปรุง/มูลค่าคงเหลือได้:
#create fitted value vs residual plot plot(fitted(model), residuals(model)) #add horizontal line at 0 abline(h = 0, lty = 2)
ตามหลักการแล้ว เราต้องการให้ส่วนที่เหลือกระจายเท่ากันตามค่าที่ติดตั้งแต่ละค่า จากกราฟเราจะเห็นได้ว่าการกระจายมีแนวโน้มที่จะเพิ่มขึ้นเล็กน้อยสำหรับค่าที่ติดตั้งที่มากขึ้น แต่แนวโน้มนี้ไม่มากพอที่จะทำให้เกิดความกังวลมากเกินไป
การตีความเอาท์พุตโมเดล
เมื่อเราตรวจสอบแล้วว่าเป็นไปตามสมมติฐานของโมเดลอย่างเพียงพอแล้ว เราสามารถตรวจสอบเอาต์พุตของโมเดลได้โดยใช้ฟังก์ชัน summary() :
summary(model) #Call: #lm(formula = mpg ~ disp + hp + drat, data = data) # #Residuals: # Min 1Q Median 3Q Max #-5.1225 -1.8454 -0.4456 1.1342 6.4958 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 19.344293 6.370882 3.036 0.00513 ** #disp -0.019232 0.009371 -2.052 0.04960 * #hp -0.031229 0.013345 -2.340 0.02663 * #drat 2.714975 1.487366 1.825 0.07863 . #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.008 on 28 degrees of freedom #Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 #F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09
จากผลลัพธ์เราจะเห็นได้ดังนี้:
- สถิติ F โดยรวมของแบบจำลองคือ 32.15 และค่า p ที่สอดคล้องกันคือ 3.28e-09 สิ่งนี้บ่งชี้ว่าแบบจำลองโดยรวมมีนัยสำคัญทางสถิติ กล่าวอีกนัยหนึ่ง แบบจำลองการถดถอยโดยรวมมีประโยชน์
- disp มีนัยสำคัญทางสถิติที่ระดับนัยสำคัญ 0.10 โดยเฉพาะอย่างยิ่ง ค่าสัมประสิทธิ์จากผลลัพธ์ของแบบจำลองบ่งชี้ว่าการเพิ่มขึ้นของ ความพร้อมใช้งาน หนึ่งหน่วยสัมพันธ์กับการลดลง -0.019 หน่วยโดยเฉลี่ยใน หน่วย mpg โดยสมมติว่า แรงม้า และ อัตราการสิ้นเปลืองเชื้อเพลิง คงที่ .
- hp มีนัยสำคัญทางสถิติที่ระดับนัยสำคัญ 0.10 โดยเฉพาะอย่างยิ่ง ค่าสัมประสิทธิ์จากผลลัพธ์ของแบบจำลองบ่งชี้ว่าการเพิ่ม แรงม้า หนึ่งหน่วยสัมพันธ์กับการลดลงโดยเฉลี่ย -0.031 หน่วยใน หน่วย mpg โดยสมมติว่า disp และ drat ยังคงที่
- drat มีนัยสำคัญทางสถิติที่ระดับนัยสำคัญ 0.10 โดยเฉพาะอย่างยิ่ง ค่าสัมประสิทธิ์จากผลลัพธ์ของแบบจำลองบ่งชี้ว่า การใช้น้ำมันเบนซิน ที่เพิ่มขึ้นหนึ่งหน่วยสัมพันธ์กับการเพิ่มขึ้นเฉลี่ย 2,715 หน่วย mpg โดยสมมติว่า อัตราการไหล และ แรงม้า คงที่
การประเมินความดีของแบบจำลอง
เพื่อประเมินว่าแบบจำลองการถดถอยเหมาะสมกับข้อมูลเพียงใด เราสามารถดูเมตริกต่างๆ สองสามรายการได้:
1. R-กำลังสองหลายอัน
วิธีนี้จะวัดความแข็งแกร่งของความสัมพันธ์เชิงเส้นระหว่างตัวแปรทำนายและตัวแปรตอบสนอง ผลคูณ R-squared ของ 1 บ่งชี้ถึงความสัมพันธ์เชิงเส้นที่สมบูรณ์แบบ ในขณะที่ผลคูณ R-squared ของ 0 บ่งชี้ว่าไม่มีความสัมพันธ์เชิงเส้น
ตัวคูณ R ยังเป็นรากที่สองของ R กำลังสอง ซึ่งเป็นสัดส่วนของความแปรปรวนในตัวแปรตอบสนองที่สามารถอธิบายได้ด้วยตัวแปรทำนาย ในตัวอย่างนี้ ผลคูณ R-squared คือ 0.775 ดังนั้น R กำลังสองคือ 0.775 2 = 0.601 สิ่งนี้บ่งชี้ว่า 60.1% ของความแปรปรวนใน mpg สามารถอธิบายได้ด้วยตัวทำนายแบบจำลอง
ที่เกี่ยวข้อง: ค่า R-squared ที่ดีคืออะไร?
2. ข้อผิดพลาดมาตรฐานที่เหลือ
เป็นการวัดระยะห่างเฉลี่ยระหว่างค่าที่สังเกตได้กับเส้นถดถอย ในตัวอย่างนี้ ค่า ที่ สังเกตได้จะเบี่ยงเบนโดยเฉลี่ย 3.008 หน่วย จากเส้นการถดถอย
ที่เกี่ยวข้อง: ทำความเข้าใจกับข้อผิดพลาดมาตรฐานของการถดถอย
ใช้แบบจำลองในการทำนาย
จากผลลัพธ์ของแบบจำลอง เรารู้ว่าสมการการถดถอยเชิงเส้นพหุคูณที่พอดีคือ:
หมวก mpg = -19.343 – 0.019*disp – 0.031*hp + 2.715*drat
เราสามารถใช้สมการนี้เพื่อคาดการณ์ว่า mpg จะเป็นเท่าใดสำหรับ การสังเกต ใหม่ ตัวอย่างเช่น เราสามารถค้นหาค่า mpg ที่คาดการณ์สำหรับรถยนต์ที่มีคุณสมบัติดังต่อไปนี้:
- จอแสดงผล = 220
- ช = 150
- แดรต = 3
#define the coefficients from the model output intercept <- coef(summary(model))["(Intercept)", "Estimate"] disp <- coef(summary(model))["disp", "Estimate"] hp <- coef(summary(model))["hp", "Estimate"] drat <- coef(summary(model))["drat", "Estimate"] #use the model coefficients to predict the value for mpg intercept + disp*220 + hp*150 + drat*3 #[1] 18.57373
สำหรับรถยนต์ที่มี disp = 220, hp = 150 และ drat = 3 แบบจำลองคาดการณ์ว่ารถจะได้ 18.57373 mpg
คุณสามารถค้นหารหัส R แบบเต็มที่ใช้ในบทช่วยสอนนี้ ได้ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีปรับโมเดลการถดถอยประเภทอื่นๆ ให้เหมาะสมใน R:
วิธีดำเนินการถดถอยกำลังสองใน R
วิธีดำเนินการถดถอยพหุนามใน R
วิธีดำเนินการถดถอยเอ็กซ์โปเนนเชียลใน R