ได้ฟิตโมเดลการถดถอยแล้ว ค่า R² ก็ดูดี และสัมประสิทธิ์ก็สอดคล้องกับสัญชาตญาณ แต่ตารางสรุปที่ดูสวยงามอาจซ่อนโมเดลที่ระบุรูปแบบผิดอย่างรุนแรงได้ กราฟกระจายเพียงกราฟเดียวที่มักจับสิ่งที่ตัวเลขมองข้ามไปได้คือ residual plot
บทความนี้ครอบคลุมว่า residual plot คืออะไร อ่านอย่างไร แพตเทิร์นแบบไหนที่ควรรู้ และวิธีสร้างทั้งใน Python และ R หลายคนข้ามขั้นตอนการวินิจฉัยไปโดยสิ้นเชิง จบตอนนี้แล้วจะไม่เป็นเช่นนั้น
Residual Plot คืออะไร?
Residual คือช่องว่างระหว่างค่าที่โมเดลทำนายกับสิ่งที่เกิดขึ้นจริง: residual = observed − predicted Residual plot นำช่องว่างเหล่านี้มาแสดง แกน x แสดงค่าที่ทำนาย (fitted) หรือค่าตัวแปรอธิบาย แกน y แสดง residual เส้นอ้างอิงแนวนอนอยู่ที่ศูนย์ แทนการทำนายที่แม่นยำพอดี
จุดกระจายแบบสุ่มรอบศูนย์: residual plot ที่สุขภาพดี ภาพโดยผู้เขียน
แนวคิดหลัก: หากโมเดลจับความสัมพันธ์ได้ดี residual ควรมีลักษณะเป็นสัญญาณรบกวน กระจายแบบสุ่มรอบศูนย์ ไม่เห็นรูปแบบชัดเจน ทันทีที่ปรากฏเป็นรูปร่าง โมเดลกำลังบอกบางอย่างที่สื่อผ่านสัมประสิทธิ์เพียงอย่างเดียวไม่ได้
วิธีตีความ Residual Plot
มองหาแพตเทิร์น โดยอุดมคติคือไม่ควรมีรูปแบบชัดเจน นั่นคือกฎข้อเดียว สิ่งที่ตำแหน่ง การกระจาย และรูปร่างของ residual เผยให้เห็นคือจุดที่น่าสนใจ
ตำแหน่ง: จุดกระจายอยู่กึ่งกลางที่ศูนย์หรือไม่?
Residual ที่อยู่เหนือศูนย์ในบางช่วงของค่าที่ฟิต และต่ำกว่าในช่วงอื่น หมายถึงโมเดลมีอคติ ทำนายสูงหรือต่ำเกินไปอย่างสม่ำเสมอในบางบริเวณ มักชี้ถึงตัวแปรที่ขาดหายไปหรือความสัมพันธ์ไม่เป็นเส้นตรงที่โมเดลเส้นตรงจับไม่ได้
การกระจาย: ความแปรปรวนคงที่คร่าว ๆ หรือไม่?
กวาดมองจากซ้ายไปขวา หากช่วงกระจายของ residual ใกล้เคียงกันตลอดช่วงค่าที่ฟิต ถือเป็นสัญญาณที่ดี หากจุดพัดกว้างออกเมื่อค่าที่ฟิตเพิ่มขึ้น แสดงว่าความแปรปรวนเปลี่ยนไป นี่เรียกว่า heteroscedasticity ไม่ได้ทำให้ค่าประมาณสัมประสิทธิ์พัง แต่ทำให้ค่า standard error ไม่น่าเชื่อถือ ซึ่งสำคัญหากทำ การทดสอบสมมติฐาน
รูปร่าง: มีเส้นโค้งหรือแนวโน้มหรือไม่?
ต้องการแบบแบนและไร้รูปแบบ โค้งเป็นตัวยูหรือเป็นซุ้มบอกว่าโมเดลขาดเทอมไม่เป็นเส้นตรง กลุ่มหรือแถบชี้ว่ามีอนุประชากรย่อยที่โมเดลปฏิบัติราวกับเป็นกลุ่มเดียว จุดเดียวที่อยู่ห่างจากจุดอื่นมากก็ควรตรวจสอบ
แพตเทิร์น Residual Plot ที่พบบ่อยและความหมาย
สี่แพตเทิร์นของ residual plot ที่ส่งสัญญาณปัญหาโมเดล ภาพโดยผู้เขียน
การกระจายแบบสุ่มรอบศูนย์
ผลลัพธ์ที่ดี จุดกระจายโดยคร่าว ๆ เหนือและใต้เส้นศูนย์อย่างเท่า ๆ กัน ไม่มีแนวโน้มที่เห็นชัด โดยทั่วไปบ่งชี้ว่าโมเดลจับความสัมพันธ์ได้ค่อนข้างดี ความสุ่มบางส่วนเป็นเรื่องปกติ
รูปแบบโค้ง
รูปโค้งหรือรูปซุ้มโดยมากหมายถึงความสัมพันธ์ไม่เป็นเส้นตรงที่ไม่ได้ใส่ลงในโมเดล โมเดลกำลังฟิตเส้นตรงผ่านข้อมูลที่โค้ง วิธีแก้โดยทั่วไปคือเพิ่มเทอมพหุนาม (เช่น x² ) หรือแปลงตัวแปรทำนาย นี่เป็นแพตเทิร์นที่พบได้บ่อย โดยเฉพาะเมื่อจำลองสิ่งอย่างเช่นราคาบ้านหรือการเติบโตทางชีวภาพ
รูปกรวยหรือพัด
Residual กระจายกว้างขึ้นเมื่อค่าที่ฟิตเพิ่มขึ้น: นั่นคือ heteroscedasticity ความแปรปรวนไม่คงที่ พบได้ทั่วไปในข้อมูลการเงินที่ความคลาดเคลื่อนของการทำนายเพิ่มตามขนาดผลลัพธ์ การแปลงลอการิทึมของตัวแปรตอบสนองมักเป็นก้าวแรกที่เหมาะสม อีกทางเลือกคือ weighted least squares
คลัสเตอร์หรือกลุ่ม
กลุ่มที่เห็นได้ชัดใน residual plot มักหมายถึงข้อมูลมีอนุประชากรย่อยที่โมเดลยังไม่คำนึงถึง น่าจะมีตัวแปรเชิงประเภท (ภูมิภาค กลุ่มการรักษา ประเภทสินค้า) ที่ควรอยู่ในโมเดล หากเห็นเป็นแถบแน่น ๆ สองหรือสามแถบ ให้เริ่มจากจุดนั้น
Residual ขนาดใหญ่ที่โดดเดี่ยว
จุดเดียวที่อยู่ห่างจากจุดอื่นมากสมควรแก่การตรวจสอบ อาจเป็น outlier จริง ข้อมูลพิมพ์ผิด หรือการสังเกตที่มีลักษณะผิดปกติ อย่าลบออกอัตโนมัติ ทำความเข้าใจก่อน จะเก็บหรือเอาออกขึ้นอยู่กับบริบท ไม่ใช่ความสะดวก
สำหรับแต่ละแพตเทิร์น residual plot ระบุอาการ ไม่ใช่การวินิจฉัย มันบอกว่ามีบางอย่างผิด แต่ต้องหาต่อว่าเพราะอะไร
Residual Plot ตรวจสมมติฐานการถดถอยอะไรได้บ้าง?
เมื่อเข้าใจแพตเทิร์นแล้ว ควรชัดเจนว่าวิธีนี้ตรวจสมมติฐานใดได้และไม่ได้
ความเป็นเชิงเส้น: หากความสัมพันธ์ระหว่างตัวทำนายและผลลัพธ์เป็นเส้นตรงจริง เมื่อพล็อต residual เทียบกับค่าที่ฟิตควรไม่เห็นแนวโน้ม เส้นโค้งหรือซุ้มเป็นสัญญาณเชิงภาพโดยตรงว่าความเป็นเชิงเส้นไม่ถือ
ความแปรปรวนคงที่: รูปแบบกรวยคือหน้าตาของ heteroscedasticity เป๊ะ หากการกระจายเพิ่มตามค่าที่ฟิต แปลว่าละเมิดความแปรปรวนเท่ากัน กราฟ residuals-vs-fitted เป็นเครื่องมือที่พบบ่อยที่สุดในการจับสิ่งนี้
ความเป็นอิสระ: หากการสังเกตมีลำดับธรรมชาติ (เวลา พื้นที่ คลัสเตอร์ของบุคคล) สามารถพล็อต residual เทียบกับลำดับนั้นเพื่อตรวจแพตเทิร์น Residual ที่มีแนวโน้มในกราฟเรียงตามเวลาบ่งชี้การอัตสหสัมพันธ์ กราฟ residuals-vs-fitted ธรรมดาอาจไม่เผยสิ่งนี้ ต้องใช้กราฟ residuals-vs-order โดยเฉพาะ
ค่าผิดปกติและการสังเกตที่มีอิทธิพล: Residual ขนาดใหญ่ที่โดดเดี่ยวคือธงเตือนการสังเกตที่โมเดลทำนายได้แย่ สำหรับ “อิทธิพล” โดยเฉพาะ คือการสังเกตที่ดึงเส้นถดถอยมากเกินไป กราฟ Residuals vs. Leverage ให้ข้อมูลมากกว่ากราฟ residual พื้นฐาน
สิ่งหนึ่งที่ residual plot ประเมินได้ไม่แม่นคือการเป็นปกติ กราฟ residuals-vs-fitted ที่แบนไม่ได้ยืนยันว่า error กระจายแบบปกติ สำหรับนั้นต้องใช้ Q-Q plot นี่เป็นความสับสนที่พบบ่อย ควรรู้ให้ชัด
วิธีสร้าง Residual Plot ใน Python
เวิร์กโฟลว์มาตรฐานใช้ scikit-learn เพื่อฟิตโมเดลและคำนวณ residual จากนั้นใช้ matplotlib เพื่อสร้างภาพ ต่อไปนี้เป็นตัวอย่างครบถ้วนด้วยการถดถอยเชิงเส้นอย่างง่ายกับข้อมูลราคาบ้าน:
import numpy as np
import matplotlib. pyplot as plt
from sklearn. linear_model import LinearRegression
sqft = np. array( [ 800 , 1000 , 1200 , 1500 , 1800 , 2000 , 2200 , 2500 , 3000 , 3500 ] )
price = np. array( [ 150 , 180 , 210 , 260 , 300 , 330 , 370 , 420 , 500 , 560 ] )
X = sqft. reshape( - 1 , 1 )
model = LinearRegression( )
model. fit( X, price)
predicted = model. predict( X)
residuals = price - predicted
plt. figure( figsize= ( 8 , 5 ) )
plt. scatter( predicted, residuals, color= 'steelblue' , edgecolors= 'white' , s= 80 )
plt. axhline( y= 0 , color= 'red' , linestyle= '--' , linewidth= 1.2 )
plt. xlabel( 'Fitted Values' )
plt. ylabel( 'Residuals' )
plt. title( 'Residual Plot' )
plt. tight_layout( )
plt. show( ) ขับเคลื่อนโดย
บรรทัดสำคัญคือ residuals = price - predicted คำสั่ง axhline() เพิ่มเส้นอ้างอิงศูนย์ หากไม่มีจะอ่านกราฟยากขึ้น หากผลลัพธ์ดูไร้รูปแบบโดยคร่าว ๆ ก็ถือว่าอยู่ในเกณฑ์ดี สังเกตว่า residual มีแนวโน้มใหญ่ขึ้นที่ค่าที่ฟิตสูงกว่า ด้วยจุดเพียง 10 จุดอาจสรุปยาก แต่เป็นสัญญาณรูปพัดอย่างที่กล่าวไว้ก่อนหน้า
สำหรับรายละเอียดเชิงลึกเกี่ยวกับการถดถอยใน Python คอร์ส Introduction to Regression with statsmodels in Python ของเรา ครอบคลุมการฟิตโมเดล การตรวจสมมติฐาน และการตีความอย่างละเอียด
วิธีสร้าง Residual Plot ใน R
R ทำได้ง่ายขึ้นเล็กน้อยตั้งแต่แรกเริ่ม เมื่อฟิตโมเดลด้วย lm() แล้ว ฟังก์ชัน plot() ที่มีมาให้จะสร้างแผงวินิจฉัยเต็มชุด รวมถึงกราฟ residuals-vs-fitted โดยอัตโนมัติ
sqft <- c( 800 , 1000 , 1200 , 1500 , 1800 , 2000 , 2200 , 2500 , 3000 , 3500 )
price <- c( 150 , 180 , 210 , 260 , 300 , 330 , 370 , 420 , 500 , 560 )
housing_model <- lm( price ~ sqft)
plot( housing_model, which = 1 ) ขับเคลื่อนโดย
อาร์กิวเมนต์ which = 1 ดึงเฉพาะกราฟ residuals-vs-fitted หากละไว้จะได้กราฟวินิจฉัยมาตรฐานสี่แบบ: residuals vs. fitted, Q-Q, scale-location และ residuals vs. leverage มีประโยชน์เมื่ออยากเห็นภาพรวมอย่างรวดเร็ว R ยังใส่คำกำกับสามจุดสุดโต่งที่สุดตามดัชนี ช่วยประหยัดเวลาค้นหา outlier ด้วยมือ
สำหรับบทเรียนเต็มเกี่ยวกับการถดถอยใน R คอร์ส Introduction to Regression in R ของเราครอบคลุมการสร้างโมเดลและการวินิจฉัยตั้งแต่พื้นฐาน
Residual Plot เทียบกับกราฟวินิจฉัยการถดถอยอื่น
กราฟ residuals-vs-fitted เป็นจุดเริ่ม ไม่ใช่ภาพรวมทั้งหมด กราฟที่เกี่ยวข้องบางแบบตอบคำถามต่างกัน
Residual plot เทียบกับ Q-Q plot
Residuals-vs-fitted ใช้ตรวจความเป็นเส้นตรงและความแปรปรวนคงที่ ส่วน Q-Q plot ตรวจการเป็นปกติ ว่า residual กระจายแบบปกติหรือไม่ เป็นคนละคำถาม Residual plot ที่ดูสะอาดไม่ได้รับประกันความเป็นปกติ และ Q-Q plot ก็ไม่บอกอะไรเกี่ยวกับความแปรปรวน โดยทั่วไปควรดูทั้งคู่
สองกราฟต่างกัน ตอบสองคำถามต่างกันเกี่ยวกับโมเดลของคุณ ภาพโดยผู้เขียน
Residual plot เทียบกับ scale-location plot
Scale-location plot (หรือ spread-location) พล็อตรากที่สองของค่าสัมบูรณ์ของ standardized residual เทียบกับค่าที่ฟิต ออกแบบมาเพื่อจับ heteroscedasticity และมักทำให้รูปกรวยเห็นได้ชัดกว่ากราฟ residual ดิบ เพราะตัดสัญญาณบวก/ลบออกและโฟกัสที่การกระจายล้วน ๆ
Residual plot เทียบกับ residuals vs. leverage plot
Leverage วัดว่าค่าตัวทำนายของการสังเกตนั้นผิดปกติเพียงใด ไม่ใช่ว่าโมเดลทำนายมันแย่เพียงใด Leverage สูงผสานกับ residual ใหญ่คือการสังเกตที่อาจมีอิทธิพล กราฟ residuals-vs-leverage ระบุการผสมผสานเหล่านี้และมักไฮไลต์จุดที่มีปัญหาที่สุดตามชื่อ หากกังวลว่าการสังเกตที่มีอิทธิพลบิดเบือนโมเดล ให้ตรวจกราฟนี้
ควรทำอย่างไรเมื่อ Residual Plot ชี้ปัญหา
Residual plot เป็นเครื่องมือวินิจฉัย ไม่ใช่คำตัดสิน การเห็นแพตเทิร์นไม่ได้หมายความว่าโมเดลใช้ไม่ได้ ต่อไปนี้คือการแมปแพตเทิร์นที่พบบ่อยกับขั้นตอนถัดไป:
รูปแบบโค้ง: พิจารณาเพิ่มเทอมพหุนามหรือแปลงตัวทำนาย การแปลง log ของ x หรือเพิ่มเทอม x² มักช่วยให้เป็นเส้นตรงขึ้น
รูปกรวย: ลองแปลงตัวแปรตอบสนองเป็นลอการิทึมหรือรากที่สอง หากยังไม่เวิร์ก ใช้ weighted least squares เพื่อลดอิทธิพลของการสังเกตที่มีเสียงรบกวนสูง
Residual ใหญ่โดดเดี่ยว: ตรวจสอบการสังเกตนั้นก่อน เช็คข้อผิดพลาดการป้อนข้อมูลก่อน หากจุดนั้นถูกต้อง พิจารณาว่าโมเดลต้องคำนึงถึงสิ่งที่ทำให้มันผิดปกติหรือไม่
คลัสเตอร์หรือกลุ่ม: มองหาตัวแปรเชิงประเภทที่ยังไม่ใส่ บางครั้งการสร้างโมเดลแยกตามอนุกรุ๊ปคือคำตอบที่ถูกต้อง
Residual plot แสดงอาการ ไม่บอกสาเหตุที่แท้จริง และแพตเทิร์นเดียวกันอาจมีคำอธิบายหลายแบบ ใช้มันเป็นตัวกระตุ้นให้ตั้งคำถามที่ดีขึ้น
ข้อผิดพลาดที่พบบ่อยเมื่ออ่าน Residual Plot
คาดหวังกราฟที่สุ่มสมบูรณ์แบบ : ข้อมูลจริงนั้นรก มีจุดที่ไม่สอดคล้องเล็กน้อย ความไม่สมมาตรเล็กน้อย การกระจุกที่ปลาย: เป็นเรื่องปกติ คำถามไม่ใช่ว่ากราฟสุ่มสมบูรณ์แบบหรือไม่ แต่คือมีรูปแบบเชิงระบบที่โมเดลที่ดีกว่าจะกำจัดได้หรือไม่
คิดว่าทุก outlier คือข้อมูลแย่: Residual ใหญ่หมายถึงโมเดลทำนายการสังเกตนั้นได้แย่ ไม่ได้หมายความว่าการสังเกตผิด บางครั้ง outlier คือจุดข้อมูลที่น่าสนใจที่สุด ลบออกก็ต่อเมื่อเข้าใจว่ามันคืออะไร
คิดว่า residual plot พิสูจน์ความเป็นปกติ: ไม่ใช่ กราฟ residuals-vs-fitted บอกเรื่องความเป็นเส้นตรงและความแปรปรวนคงที่ ความเป็นปกติต้องใช้ Q-Q plot กราฟสองแบบนี้เกื้อหนุนกัน แทนกันไม่ได้
ดูกราฟโดยไม่คำนึงบริบท: Residual plot จากโมเดลอนุกรมเวลาต้องอ่านต่างจากข้อมูลภาคตัดขวาง สิ่งที่น่ากังวลขึ้นกับโครงสร้างข้อมูล ขนาดตัวอย่าง และวัตถุประสงค์ของโมเดล แพตเทิร์นที่ควรแก้ในโมเดลพยากรณ์อาจเพิกเฉยได้ในการวิเคราะห์เชิงสำรวจ
สรุป
ฟิตโมเดล ตรวจสรุป รู้สึกดีกับ R² : หลายคนหยุดแค่นี้ Residual plot คือสิ่งที่ดูต่อจากนั้น และมักเล่าเรื่องอีกแบบ สิ่งที่ต้องการคือการกระจายแบบสุ่มรอบศูนย์ เส้นโค้ง รูปกรวย คลัสเตอร์ และจุดโดดเดี่ยวสุดขั้ว ล้วนบอกใบ้ว่ามีบางอย่างที่โมเดลยังไม่คำนึง
ไม่มีกราฟใดให้ภาพรวมทั้งหมด จับคู่กราฟ residuals-vs-fitted กับ Q-Q plot เพื่อตรวจความเป็นปกติ กับ scale-location plot เพื่อตรวจความแปรปรวน และ leverage plot หากกังวลการสังเกตที่มีอิทธิพล แต่ละกราฟตอบคำถามต่างกัน
หากต้องการไปไกลกว่านี้ คอร์ส Intermediate Regression with statsmodels in Python ของเราครอบคลุมการตรวจสมมติฐานอย่างลึก รวมถึงวิธีตอบสนองเมื่อการวินิจฉัยชี้ปัญหา สำหรับพื้นฐานกว้าง ๆ ของสมมติฐานการถดถอยและการประเมินโมเดล บทความ Assumptions of Linear Regression in Python เป็นการอ่านถัดไปที่เหมาะสม
ได้ฟิตโมเดลการถดถอยแล้ว ค่า R² ก็ดูดี และสัมประสิทธิ์ก็สอดคล้องกับสัญชาตญาณ แต่ตารางสรุปที่ดูสวยงามอาจซ่อนโมเดลที่ระบุรูปแบบผิดอย่างรุนแรงได้ กราฟกระจายเพียงกราฟเดียวที่มักจับสิ่งที่ตัวเลขมองข้ามไปได้คือ residual plot
บทความนี้ครอบคลุมว่า residual plot คืออะไร อ่านอย่างไร แพตเทิร์นแบบไหนที่ควรรู้ และวิธีสร้างทั้งใน Python และ R หลายคนข้ามขั้นตอนการวินิจฉัยไปโดยสิ้นเชิง จบตอนนี้แล้วจะไม่เป็นเช่นนั้น
Residual Plot คืออะไร?
Residual คือช่องว่างระหว่างค่าที่โมเดลทำนายกับสิ่งที่เกิดขึ้นจริง: residual = observed − predicted Residual plot นำช่องว่างเหล่านี้มาแสดง แกน x แสดงค่าที่ทำนาย (fitted) หรือค่าตัวแปรอธิบาย แกน y แสดง residual เส้นอ้างอิงแนวนอนอยู่ที่ศูนย์ แทนการทำนายที่แม่นยำพอดี
จุดกระจายแบบสุ่มรอบศูนย์: residual plot ที่สุขภาพดี ภาพโดยผู้เขียน
แนวคิดหลัก: หากโมเดลจับความสัมพันธ์ได้ดี residual ควรมีลักษณะเป็นสัญญาณรบกวน กระจายแบบสุ่มรอบศูนย์ ไม่เห็นรูปแบบชัดเจน ทันทีที่ปรากฏเป็นรูปร่าง โมเดลกำลังบอกบางอย่างที่สื่อผ่านสัมประสิทธิ์เพียงอย่างเดียวไม่ได้
วิธีตีความ Residual Plot
มองหาแพตเทิร์น โดยอุดมคติคือไม่ควรมีรูปแบบชัดเจน นั่นคือกฎข้อเดียว สิ่งที่ตำแหน่ง การกระจาย และรูปร่างของ residual เผยให้เห็นคือจุดที่น่าสนใจ
ตำแหน่ง: จุดกระจายอยู่กึ่งกลางที่ศูนย์หรือไม่?
Residual ที่อยู่เหนือศูนย์ในบางช่วงของค่าที่ฟิต และต่ำกว่าในช่วงอื่น หมายถึงโมเดลมีอคติ ทำนายสูงหรือต่ำเกินไปอย่างสม่ำเสมอในบางบริเวณ มักชี้ถึงตัวแปรที่ขาดหายไปหรือความสัมพันธ์ไม่เป็นเส้นตรงที่โมเดลเส้นตรงจับไม่ได้
การกระจาย: ความแปรปรวนคงที่คร่าว ๆ หรือไม่?
กวาดมองจากซ้ายไปขวา หากช่วงกระจายของ residual ใกล้เคียงกันตลอดช่วงค่าที่ฟิต ถือเป็นสัญญาณที่ดี หากจุดพัดกว้างออกเมื่อค่าที่ฟิตเพิ่มขึ้น แสดงว่าความแปรปรวนเปลี่ยนไป นี่เรียกว่า heteroscedasticity ไม่ได้ทำให้ค่าประมาณสัมประสิทธิ์พัง แต่ทำให้ค่า standard error ไม่น่าเชื่อถือ ซึ่งสำคัญหากทำ การทดสอบสมมติฐาน
รูปร่าง: มีเส้นโค้งหรือแนวโน้มหรือไม่?
ต้องการแบบแบนและไร้รูปแบบ โค้งเป็นตัวยูหรือเป็นซุ้มบอกว่าโมเดลขาดเทอมไม่เป็นเส้นตรง กลุ่มหรือแถบชี้ว่ามีอนุประชากรย่อยที่โมเดลปฏิบัติราวกับเป็นกลุ่มเดียว จุดเดียวที่อยู่ห่างจากจุดอื่นมากก็ควรตรวจสอบ
แพตเทิร์น Residual Plot ที่พบบ่อยและความหมาย
สี่แพตเทิร์นของ residual plot ที่ส่งสัญญาณปัญหาโมเดล ภาพโดยผู้เขียน
การกระจายแบบสุ่มรอบศูนย์
ผลลัพธ์ที่ดี จุดกระจายโดยคร่าว ๆ เหนือและใต้เส้นศูนย์อย่างเท่า ๆ กัน ไม่มีแนวโน้มที่เห็นชัด โดยทั่วไปบ่งชี้ว่าโมเดลจับความสัมพันธ์ได้ค่อนข้างดี ความสุ่มบางส่วนเป็นเรื่องปกติ
รูปแบบโค้ง
รูปโค้งหรือรูปซุ้มโดยมากหมายถึงความสัมพันธ์ไม่เป็นเส้นตรงที่ไม่ได้ใส่ลงในโมเดล โมเดลกำลังฟิตเส้นตรงผ่านข้อมูลที่โค้ง วิธีแก้โดยทั่วไปคือเพิ่มเทอมพหุนาม (เช่น x²) หรือแปลงตัวแปรทำนาย นี่เป็นแพตเทิร์นที่พบได้บ่อย โดยเฉพาะเมื่อจำลองสิ่งอย่างเช่นราคาบ้านหรือการเติบโตทางชีวภาพ
รูปกรวยหรือพัด
Residual กระจายกว้างขึ้นเมื่อค่าที่ฟิตเพิ่มขึ้น: นั่นคือ heteroscedasticity ความแปรปรวนไม่คงที่ พบได้ทั่วไปในข้อมูลการเงินที่ความคลาดเคลื่อนของการทำนายเพิ่มตามขนาดผลลัพธ์ การแปลงลอการิทึมของตัวแปรตอบสนองมักเป็นก้าวแรกที่เหมาะสม อีกทางเลือกคือ weighted least squares
คลัสเตอร์หรือกลุ่ม
กลุ่มที่เห็นได้ชัดใน residual plot มักหมายถึงข้อมูลมีอนุประชากรย่อยที่โมเดลยังไม่คำนึงถึง น่าจะมีตัวแปรเชิงประเภท (ภูมิภาค กลุ่มการรักษา ประเภทสินค้า) ที่ควรอยู่ในโมเดล หากเห็นเป็นแถบแน่น ๆ สองหรือสามแถบ ให้เริ่มจากจุดนั้น
Residual ขนาดใหญ่ที่โดดเดี่ยว
จุดเดียวที่อยู่ห่างจากจุดอื่นมากสมควรแก่การตรวจสอบ อาจเป็น outlier จริง ข้อมูลพิมพ์ผิด หรือการสังเกตที่มีลักษณะผิดปกติ อย่าลบออกอัตโนมัติ ทำความเข้าใจก่อน จะเก็บหรือเอาออกขึ้นอยู่กับบริบท ไม่ใช่ความสะดวก
สำหรับแต่ละแพตเทิร์น residual plot ระบุอาการ ไม่ใช่การวินิจฉัย มันบอกว่ามีบางอย่างผิด แต่ต้องหาต่อว่าเพราะอะไร
Residual Plot ตรวจสมมติฐานการถดถอยอะไรได้บ้าง?
เมื่อเข้าใจแพตเทิร์นแล้ว ควรชัดเจนว่าวิธีนี้ตรวจสมมติฐานใดได้และไม่ได้
สิ่งหนึ่งที่ residual plot ประเมินได้ไม่แม่นคือการเป็นปกติ กราฟ residuals-vs-fitted ที่แบนไม่ได้ยืนยันว่า error กระจายแบบปกติ สำหรับนั้นต้องใช้ Q-Q plot นี่เป็นความสับสนที่พบบ่อย ควรรู้ให้ชัด
วิธีสร้าง Residual Plot ใน Python
เวิร์กโฟลว์มาตรฐานใช้ scikit-learn เพื่อฟิตโมเดลและคำนวณ residual จากนั้นใช้ matplotlib เพื่อสร้างภาพ ต่อไปนี้เป็นตัวอย่างครบถ้วนด้วยการถดถอยเชิงเส้นอย่างง่ายกับข้อมูลราคาบ้าน:
บรรทัดสำคัญคือ
residuals = price - predictedคำสั่งaxhline()เพิ่มเส้นอ้างอิงศูนย์ หากไม่มีจะอ่านกราฟยากขึ้น หากผลลัพธ์ดูไร้รูปแบบโดยคร่าว ๆ ก็ถือว่าอยู่ในเกณฑ์ดี สังเกตว่า residual มีแนวโน้มใหญ่ขึ้นที่ค่าที่ฟิตสูงกว่า ด้วยจุดเพียง 10 จุดอาจสรุปยาก แต่เป็นสัญญาณรูปพัดอย่างที่กล่าวไว้ก่อนหน้าสำหรับรายละเอียดเชิงลึกเกี่ยวกับการถดถอยใน Python คอร์ส Introduction to Regression with statsmodels in Python ของเรา ครอบคลุมการฟิตโมเดล การตรวจสมมติฐาน และการตีความอย่างละเอียด
วิธีสร้าง Residual Plot ใน R
R ทำได้ง่ายขึ้นเล็กน้อยตั้งแต่แรกเริ่ม เมื่อฟิตโมเดลด้วย
lm()แล้ว ฟังก์ชันplot()ที่มีมาให้จะสร้างแผงวินิจฉัยเต็มชุด รวมถึงกราฟ residuals-vs-fitted โดยอัตโนมัติอาร์กิวเมนต์
which = 1ดึงเฉพาะกราฟ residuals-vs-fitted หากละไว้จะได้กราฟวินิจฉัยมาตรฐานสี่แบบ: residuals vs. fitted, Q-Q, scale-location และ residuals vs. leverage มีประโยชน์เมื่ออยากเห็นภาพรวมอย่างรวดเร็ว R ยังใส่คำกำกับสามจุดสุดโต่งที่สุดตามดัชนี ช่วยประหยัดเวลาค้นหา outlier ด้วยมือสำหรับบทเรียนเต็มเกี่ยวกับการถดถอยใน R คอร์ส Introduction to Regression in R ของเราครอบคลุมการสร้างโมเดลและการวินิจฉัยตั้งแต่พื้นฐาน
Residual Plot เทียบกับกราฟวินิจฉัยการถดถอยอื่น
กราฟ residuals-vs-fitted เป็นจุดเริ่ม ไม่ใช่ภาพรวมทั้งหมด กราฟที่เกี่ยวข้องบางแบบตอบคำถามต่างกัน
Residual plot เทียบกับ Q-Q plot
Residuals-vs-fitted ใช้ตรวจความเป็นเส้นตรงและความแปรปรวนคงที่ ส่วน Q-Q plot ตรวจการเป็นปกติ ว่า residual กระจายแบบปกติหรือไม่ เป็นคนละคำถาม Residual plot ที่ดูสะอาดไม่ได้รับประกันความเป็นปกติ และ Q-Q plot ก็ไม่บอกอะไรเกี่ยวกับความแปรปรวน โดยทั่วไปควรดูทั้งคู่
สองกราฟต่างกัน ตอบสองคำถามต่างกันเกี่ยวกับโมเดลของคุณ ภาพโดยผู้เขียน
Residual plot เทียบกับ scale-location plot
Scale-location plot (หรือ spread-location) พล็อตรากที่สองของค่าสัมบูรณ์ของ standardized residual เทียบกับค่าที่ฟิต ออกแบบมาเพื่อจับ heteroscedasticity และมักทำให้รูปกรวยเห็นได้ชัดกว่ากราฟ residual ดิบ เพราะตัดสัญญาณบวก/ลบออกและโฟกัสที่การกระจายล้วน ๆ
Residual plot เทียบกับ residuals vs. leverage plot
Leverage วัดว่าค่าตัวทำนายของการสังเกตนั้นผิดปกติเพียงใด ไม่ใช่ว่าโมเดลทำนายมันแย่เพียงใด Leverage สูงผสานกับ residual ใหญ่คือการสังเกตที่อาจมีอิทธิพล กราฟ residuals-vs-leverage ระบุการผสมผสานเหล่านี้และมักไฮไลต์จุดที่มีปัญหาที่สุดตามชื่อ หากกังวลว่าการสังเกตที่มีอิทธิพลบิดเบือนโมเดล ให้ตรวจกราฟนี้
ควรทำอย่างไรเมื่อ Residual Plot ชี้ปัญหา
Residual plot เป็นเครื่องมือวินิจฉัย ไม่ใช่คำตัดสิน การเห็นแพตเทิร์นไม่ได้หมายความว่าโมเดลใช้ไม่ได้ ต่อไปนี้คือการแมปแพตเทิร์นที่พบบ่อยกับขั้นตอนถัดไป:
Residual plot แสดงอาการ ไม่บอกสาเหตุที่แท้จริง และแพตเทิร์นเดียวกันอาจมีคำอธิบายหลายแบบ ใช้มันเป็นตัวกระตุ้นให้ตั้งคำถามที่ดีขึ้น
ข้อผิดพลาดที่พบบ่อยเมื่ออ่าน Residual Plot
สรุป
ฟิตโมเดล ตรวจสรุป รู้สึกดีกับ R²: หลายคนหยุดแค่นี้ Residual plot คือสิ่งที่ดูต่อจากนั้น และมักเล่าเรื่องอีกแบบ สิ่งที่ต้องการคือการกระจายแบบสุ่มรอบศูนย์ เส้นโค้ง รูปกรวย คลัสเตอร์ และจุดโดดเดี่ยวสุดขั้ว ล้วนบอกใบ้ว่ามีบางอย่างที่โมเดลยังไม่คำนึง
ไม่มีกราฟใดให้ภาพรวมทั้งหมด จับคู่กราฟ residuals-vs-fitted กับ Q-Q plot เพื่อตรวจความเป็นปกติ กับ scale-location plot เพื่อตรวจความแปรปรวน และ leverage plot หากกังวลการสังเกตที่มีอิทธิพล แต่ละกราฟตอบคำถามต่างกัน
หากต้องการไปไกลกว่านี้ คอร์ส Intermediate Regression with statsmodels in Python ของเราครอบคลุมการตรวจสมมติฐานอย่างลึก รวมถึงวิธีตอบสนองเมื่อการวินิจฉัยชี้ปัญหา สำหรับพื้นฐานกว้าง ๆ ของสมมติฐานการถดถอยและการประเมินโมเดล บทความ Assumptions of Linear Regression in Python เป็นการอ่านถัดไปที่เหมาะสม