ฉันจะตีความพล็อตส่วนที่เหลือเทียบกับส่วนที่เหลือนี้ได้อย่างไร


17

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่เข้าใจความแตกต่างอย่างแท้จริง ฉันต้องการทราบว่าโมเดลของฉันเหมาะสมหรือไม่ตามพล็อตนี้


โปรดเตรียมพล็อตที่เหลือกับค่าที่สังเกตได้ หากความแปรปรวนของข้อผิดพลาดสามารถเชื่อมโยงกับค่าที่สังเกตได้นี่อาจแนะนำปัญหาความแตกต่าง
IrishStat

1
@IrishState ส่วนที่เหลือเทียบกับข้อสังเกตจะแสดงความสัมพันธ์ พวกมันตีความยากขึ้นเพราะเรื่องนี้ ส่วนที่เหลือเทียบกับการติดตั้งแสดงการประมาณที่ดีที่สุดที่เรามีต่อความผิดพลาดที่เกี่ยวข้องกับค่าเฉลี่ยของประชากรและค่อนข้างมีประโยชน์สำหรับการตรวจสอบการพิจารณาตามปกติในการถดถอยว่าความแปรปรวนเกี่ยวข้องกับค่าเฉลี่ยหรือไม่
Glen_b -Reinstate Monica

คำตอบ:


18

ในฐานะที่เป็น @IrishStat แสดงความคิดเห็นคุณต้องตรวจสอบค่าที่สังเกตได้กับข้อผิดพลาดของคุณเพื่อดูว่ามีปัญหากับความแปรปรวน ฉันจะกลับมาที่จุดสิ้นสุด

เพื่อให้คุณเข้าใจว่าเราหมายถึงอะไรโดย heteroskedasticity: เมื่อคุณใส่โมเดลเชิงเส้นบนตัวแปรคุณจะบอกว่าคุณตั้งสมมติฐานว่าy N ( X β , σ 2 )หรือตามเงื่อนไขของคนธรรมดาที่คุณปีที่คาดว่าจะติดลบX βบวกข้อผิดพลาดบางอย่างที่มีความแปรปรวนσ 2 นี่เป็นแบบจำลองเชิงเส้นของคุณy = X β + ϵซึ่งข้อผิดพลาดϵ N ( 0 , σ 2yyN(Xβ,σ2)yXβσ2y=Xβ+ϵϵN(0,σ2). ตกลงตอนนี้เรามาดูโค้ดกันดีกว่า:

set.seed(1);            #set the seed for reproducability
N = 100;                #Sample size
x = runif(N)            #Independant variable
beta = 4;               #Regression coefficient
epsilon = rnorm(N);     #Error with variance 1 and mean 0
y = x * beta + epsilon  #Your generative model
lin_mod <- lm(y ~x)  #Your linear model

ถูกต้องแล้วแบบจำลองของฉันทำงานอย่างไร:

x11(); par(mfrow=c(1,3));   #Make a new 1-by-3 plot
plot(residuals(lin_mod)); 
title("Simple Residual Plot - OK model")
acf(residuals(lin_mod), main = ""); 
title("Residual Autocorrelation Plot - OK model");
plot(fitted(lin_mod), residuals(lin_mod)); 
title("Residual vs Fit. value - OK model");

ซึ่งควรให้อะไรแบบนี้กับคุณ: ป้อนคำอธิบายรูปภาพที่นี่ ซึ่งหมายความว่าเศษของคุณดูเหมือนจะไม่มีแนวโน้มชัดเจนขึ้นอยู่กับดัชนีโดยพลการของคุณ (พล็อตที่ 1 - ข้อมูลน้อยที่สุดจริงๆ) ดูเหมือนจะไม่มีความสัมพันธ์ที่แท้จริงระหว่างพวกเขา (พล็อตที่ 2 - ค่อนข้างสำคัญและ อาจสำคัญกว่า homoskedasticity) และค่าติดตั้งนั้นไม่มีแนวโน้มของความล้มเหลวที่ชัดเจนเช่น ค่าติดตั้งของคุณเทียบกับส่วนที่เหลือของคุณปรากฏค่อนข้างสุ่ม จากนี้เราจะบอกว่าเราไม่มีปัญหาของ heteroskedasticity เนื่องจากส่วนที่เหลือของเราดูเหมือนจะมีความแปรปรวนเดียวกันทุกที่

ตกลงคุณต้องการ heteroskedasticity แม้ว่า เมื่อพิจารณาจากความเหมือนกันของความเป็นเชิงเส้นและความตรงเพิ่มลองกำหนดรูปแบบการกำเนิดแบบอื่นด้วยปัญหาที่เห็นได้ชัด หลังจากค่าบางอย่างการสังเกตของเราจะมีเสียงดังมากขึ้น

epsilon_HS = epsilon;               
epsilon_HS[ x>.55  ] = epsilon_HS[x>.55 ] * 9       #Heteroskedastic errors

y2 = x * beta + epsilon_HS      #Your generative model
lin_mod2 <- lm(y2 ~x)            #Your unfortunate LM

โดยที่พล็อตการวิเคราะห์แบบง่ายของโมเดล:

 par(mfrow=c(1,3));   #Make a new 1-by-3 plot
 plot(residuals(lin_mod2)); 
 title("Simple Residual Plot - Fishy model")
 acf(residuals(lin_mod2), main = ""); 
 title("Residual Autocorrelation Plot - Fishy model");
 plot(fitted(lin_mod2), residuals(lin_mod2)); 
 title("Residual vs Fit. value - Fishy model");

ควรให้อะไรเช่น: ที่ ป้อนคำอธิบายรูปภาพที่นี่ นี่พล็อตแรกดูเหมือนว่า "แปลก"; ดูเหมือนว่าเรามีเศษเล็กเศษน้อยที่กระจุกในกระจุกขนาดเล็ก แต่นั่นไม่ใช่ปัญหาเสมอไป ... พล็อตที่สองก็โอเคหมายความว่าเราไม่ได้มีความสัมพันธ์กันระหว่างเศษเหลือของคุณในความล่าช้าที่แตกต่างกัน และพล็อตที่สามกระจายถั่ว: มันตายชัดเจนว่าเมื่อเราได้ค่าที่สูงกว่าระเบิดที่เหลือของเรา เรามี heteroskedasticity ในส่วนที่เหลือของรุ่นนี้อย่างแน่นอนและเราต้องทำอะไรบางอย่าง (เช่นIRLS , การถดถอยของ Theil – Senฯลฯ )

นี่เป็นปัญหาที่ชัดเจนจริงๆ แต่ในกรณีอื่นเราอาจพลาด เพื่อลดโอกาสที่เราจะพลาดมันอีกหนึ่งแผนการที่ชาญฉลาดคือสิ่งที่ชาวไอริชกล่าวถึง: ค่าส่วนที่เหลือเทียบกับค่าสังเกตหรือในปัญหาของเล่นของเรา:

 par(mfrow=c(1,2))
 plot(y, residuals(lin_mod) ); 
 title( "Residual vs Obs. value - OK model")
 plot(y2, residuals(lin_mod2) ); 
 title( "Residual vs Obs. value - Fishy model")

ซึ่งควรให้อะไรเช่น:

ป้อนคำอธิบายรูปภาพที่นี่R2R20.59890.03919 0.03919ดังนั้นเราจึงมีเหตุผลที่เชื่อว่าการสะกดผิดแบบจำลองอาจเป็นปัญหา (ขอบคุณ Scortchi ที่ชี้ให้เห็นข้อความที่ทำให้เข้าใจผิดในคำตอบเดิมของฉัน)

ในความเป็นธรรมของสถานการณ์ของคุณพล็อตของคุณกับค่าพล็อตที่ติดตั้งดูเหมือนว่าตกลง การตรวจสอบส่วนที่เหลือของคุณเทียบกับค่าที่สังเกตได้อาจเป็นประโยชน์เพื่อให้แน่ใจว่าคุณอยู่ในด้านที่ปลอดภัย (ฉันไม่ได้พูดถึงแผนการแปลง QQหรืออะไรทำนองนั้นที่จะไม่ทำให้สับสนมากขึ้น แต่คุณอาจต้องการตรวจสอบสั้น ๆ เหล่านั้นเช่นกัน) ฉันหวังว่าสิ่งนี้จะช่วยให้คุณเข้าใจถึงความแตกต่างและสิ่งที่คุณควรระวัง


4
คุณไม่ควรแปลกใจหรือกังวลที่จะเห็นความสัมพันธ์ระหว่างค่าตกค้างกับค่าที่สังเกตได้ ลองคำนวณผลลัพธ์ทางทฤษฎีสำหรับแบบจำลองที่ระบุอย่างถูกต้อง
Scortchi - Reinstate Monica

4
หรือดูที่นี่
Scortchi - Reinstate Monica

+1 ความคิดเห็นของคุณทั้งคู่ ขอบคุณสำหรับการชี้ปัญหานั้น ความคิดเห็นของคุณคือ / เป็นจุดที่ ฉันแก้ไขข้อความนั้นเพื่อให้สามารถอ่านได้อย่างถูกต้องในขณะนี้
usεr11852พูดว่า Reinstate Monic

1
ไม่เป็นไร ฉันยังคงไม่แน่ใจว่าคุณคิดว่าค่าเศษซากกับค่าการตอบสนองที่สังเกตเห็นนั้นเพิ่มขึ้นเท่าใด การดำรงอยู่และลักษณะของ heteroskedasticity นั้นชัดเจนน้อยกว่าในพล็อตของส่วนที่เหลือเมื่อเทียบกับค่าการตอบสนองที่เหมาะสม
Scortchi - Reinstate Monica

ฉันเห็นด้วย (ส่วนใหญ่) อย่างที่คุณเห็นมันไม่ใช่แผนการวินิจฉัยครั้งแรกของฉันเช่นกัน มันถูกแนะนำโดย IrishStat แม้ว่าและฉันคิดว่ามันเป็นสิ่งจำเป็นสำหรับคำตอบแบบเต็มสำหรับ OP
usεr11852พูดว่า Reinstate Monic

9

คำถามของคุณดูเหมือนจะเกี่ยวกับความแตกต่างที่รุนแรง (เพราะคุณพูดถึงมันด้วยชื่อและเพิ่มแท็ก) แต่คำถามที่ชัดเจนของคุณ (เช่นในชื่อและ) การสิ้นสุดโพสต์ของคุณนั้นกว้างกว่าทั่วไป "โมเดลของฉันเหมาะสมหรือไม่ พล็อต" มีมากกว่าการพิจารณาว่ารูปแบบที่ไม่เหมาะสมกว่าการประเมินความแตกต่างที่แตกต่างกัน

ฉันคัดลอกข้อมูลของคุณโดยใช้เว็บไซต์นี้ (ht @Alexis) fittedทราบว่าข้อมูลจะถูกจัดเรียงในลำดับของ จากการถดถอยและพล็อตซ้ายบนดูเหมือนว่ามีความซื่อสัตย์เพียงพอ:

mod = lm(residuals~fitted)
summary(mod)
# ...
# Residuals:
#   Min       1Q   Median       3Q      Max 
# -0.78374 -0.13559  0.00928  0.19525  0.48107 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.06406    0.35123   0.182    0.856
# fitted      -0.01178    0.05675  -0.208    0.836
# 
# Residual standard error: 0.2349 on 53 degrees of freedom
# Multiple R-squared:  0.0008118,  Adjusted R-squared:  -0.01804 
# F-statistic: 0.04306 on 1 and 53 DF,  p-value: 0.8364

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่เห็นหลักฐานของความแตกต่างที่ชัดเจนที่นี่ จากมุมบนขวา (qq-plot) ดูเหมือนว่าจะไม่มีปัญหาใด ๆ กับการสันนิษฐานทั่วไป

ในทางกลับกันเส้นโค้ง "S" ที่อยู่ในจุดต่ำสีแดง (ในพล็อตซ้ายบน) และแผนการ acf และ pacf (ที่ด้านล่าง) ดูเหมือนจะมีปัญหา ที่ด้านซ้ายสุดส่วนใหญ่ที่เหลืออยู่เหนือเส้นสีเทา 0 ในขณะที่คุณเลื่อนไปทางขวาจำนวนเศษสิ่งตกค้างจะลดลงต่ำกว่า 0 จากนั้นไปด้านบนและด้านล่างอีกครั้ง ผลลัพธ์ของสิ่งนี้คือถ้าฉันบอกคุณว่าฉันกำลังมองหาสิ่งที่เหลืออยู่และมันมีค่าเป็นลบ (แต่ฉันไม่ได้บอกคุณว่าฉันกำลังมองหาสิ่งใดอยู่) คุณสามารถเดาได้อย่างแม่นยำว่าส่วนที่เหลืออยู่ใกล้เคียง ก็มีคุณค่าทางลบเช่นกัน ในคำอื่น ๆ ที่เหลือไม่ได้เป็นอิสระ - การรู้บางสิ่งเกี่ยวกับสิ่งหนึ่งจะให้ข้อมูลเกี่ยวกับผู้อื่น

นอกจากแปลงแล้วสิ่งนี้สามารถทดสอบได้ วิธีการง่าย ๆ คือใช้ทดสอบการทำงาน :

library(randtests)
runs.test(residuals)
#  Runs Test
# 
# data:  residuals
# statistic = -3.2972, runs = 16, n1 = 27, n2 = 27, n = 54, p-value = 0.0009764
# alternative hypothesis: nonrandomness

ความหมายของสิ่งนี้คือโมเดลของคุณถูกสะกดผิด เนื่องจากมีความสัมพันธ์สองแบบ 'โค้ง' คุณจะต้องเพิ่มX2 และ X3 ข้อกำหนดสำหรับรุ่นของคุณเพื่อพิจารณา

ในการตอบคำถามที่ชัดเจนของคุณ: พล็อตของคุณจะแสดง autocorrelations ต่อเนื่อง / ไม่ใช่ความเป็นอิสระของส่วนที่เหลือของคุณ หมายความว่าแบบจำลองของคุณไม่เหมาะสมในรูปแบบปัจจุบัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.