วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน 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

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

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