ฉันไม่เข้าใจความแตกต่างอย่างแท้จริง ฉันต้องการทราบว่าโมเดลของฉันเหมาะสมหรือไม่ตามพล็อตนี้
ฉันไม่เข้าใจความแตกต่างอย่างแท้จริง ฉันต้องการทราบว่าโมเดลของฉันเหมาะสมหรือไม่ตามพล็อตนี้
คำตอบ:
ในฐานะที่เป็น @IrishStat แสดงความคิดเห็นคุณต้องตรวจสอบค่าที่สังเกตได้กับข้อผิดพลาดของคุณเพื่อดูว่ามีปัญหากับความแปรปรวน ฉันจะกลับมาที่จุดสิ้นสุด
เพื่อให้คุณเข้าใจว่าเราหมายถึงอะไรโดย heteroskedasticity: เมื่อคุณใส่โมเดลเชิงเส้นบนตัวแปรคุณจะบอกว่าคุณตั้งสมมติฐานว่าy ∼ N ( X β , σ 2 )หรือตามเงื่อนไขของคนธรรมดาที่คุณปีที่คาดว่าจะติดลบX βบวกข้อผิดพลาดบางอย่างที่มีความแปรปรวนσ 2 นี่เป็นแบบจำลองเชิงเส้นของคุณy = 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")
ซึ่งควรให้อะไรเช่น:
0.03919ดังนั้นเราจึงมีเหตุผลที่เชื่อว่าการสะกดผิดแบบจำลองอาจเป็นปัญหา (ขอบคุณ Scortchi ที่ชี้ให้เห็นข้อความที่ทำให้เข้าใจผิดในคำตอบเดิมของฉัน)
ในความเป็นธรรมของสถานการณ์ของคุณพล็อตของคุณกับค่าพล็อตที่ติดตั้งดูเหมือนว่าตกลง การตรวจสอบส่วนที่เหลือของคุณเทียบกับค่าที่สังเกตได้อาจเป็นประโยชน์เพื่อให้แน่ใจว่าคุณอยู่ในด้านที่ปลอดภัย (ฉันไม่ได้พูดถึงแผนการแปลง QQหรืออะไรทำนองนั้นที่จะไม่ทำให้สับสนมากขึ้น แต่คุณอาจต้องการตรวจสอบสั้น ๆ เหล่านั้นเช่นกัน) ฉันหวังว่าสิ่งนี้จะช่วยให้คุณเข้าใจถึงความแตกต่างและสิ่งที่คุณควรระวัง
คำถามของคุณดูเหมือนจะเกี่ยวกับความแตกต่างที่รุนแรง (เพราะคุณพูดถึงมันด้วยชื่อและเพิ่มแท็ก) แต่คำถามที่ชัดเจนของคุณ (เช่นในชื่อและ) การสิ้นสุดโพสต์ของคุณนั้นกว้างกว่าทั่วไป "โมเดลของฉันเหมาะสมหรือไม่ พล็อต" มีมากกว่าการพิจารณาว่ารูปแบบที่ไม่เหมาะสมกว่าการประเมินความแตกต่างที่แตกต่างกัน
ฉันคัดลอกข้อมูลของคุณโดยใช้เว็บไซต์นี้ (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
ความหมายของสิ่งนี้คือโมเดลของคุณถูกสะกดผิด เนื่องจากมีความสัมพันธ์สองแบบ 'โค้ง' คุณจะต้องเพิ่ม และ ข้อกำหนดสำหรับรุ่นของคุณเพื่อพิจารณา
ในการตอบคำถามที่ชัดเจนของคุณ: พล็อตของคุณจะแสดง autocorrelations ต่อเนื่อง / ไม่ใช่ความเป็นอิสระของส่วนที่เหลือของคุณ หมายความว่าแบบจำลองของคุณไม่เหมาะสมในรูปแบบปัจจุบัน