Saya tidak begitu mengerti heteroskedastisitas. Saya ingin tahu apakah model saya sesuai atau tidak sesuai dengan plot ini.
Saya tidak begitu mengerti heteroskedastisitas. Saya ingin tahu apakah model saya sesuai atau tidak sesuai dengan plot ini.
Jawaban:
Seperti yang dikomentari @IrishStat, Anda perlu memeriksa nilai yang Anda amati terhadap kesalahan Anda untuk melihat apakah ada masalah dengan variabilitas. Saya akan kembali ke sini menjelang akhir.
. OK, keren sejauh ini mari kita lihat dalam kode:
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
begitu benar, bagaimana model saya berperilaku:
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");
yang seharusnya memberi Anda sesuatu seperti ini: yang berarti bahwa residu Anda tampaknya tidak memiliki tren yang jelas berdasarkan indeks sewenang-wenang Anda (plot 1 - paling tidak informatif benar-benar), tampaknya tidak memiliki korelasi nyata di antara mereka (plot 2 - cukup penting dan mungkin lebih penting daripada homoskedastisitas) dan bahwa nilai yang dipasang tidak memiliki kecenderungan kegagalan yang jelas, yaitu. nilai pas Anda vs residu Anda tampak cukup acak. Berdasarkan ini kita akan mengatakan bahwa kita tidak memiliki masalah heteroskedastisitas karena residu kita tampaknya memiliki varian yang sama di mana-mana.
OK, Anda ingin heteroskedastisitas. Dengan asumsi yang sama tentang linearitas dan aditivitas, mari kita definisikan model generatif lain dengan masalah heteroskedastisitas yang "jelas". Yaitu setelah beberapa nilai pengamatan kami akan jauh lebih berisik.
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
di mana plot diagnostik sederhana dari model:
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");
harus memberikan sesuatu seperti: Di sini plot pertama tampaknya agak "aneh"; kelihatannya kita memiliki beberapa residu yang mengelompok dalam besaran kecil tetapi itu tidak selalu menjadi masalah ... Plot kedua adalah OK, berarti kita tidak memiliki korelasi antara residu Anda dalam kelambatan yang berbeda sehingga kita dapat bernafas sejenak. Dan plot ketiga menumpahkan biji: sangat jelas bahwa ketika kita sampai pada nilai yang lebih tinggi, residu kita meledak. Kami pasti memiliki heteroskedastisitas dalam residual model ini dan kami perlu melakukan sesuatu tentang (mis. IRLS , regresi Theil-Sen , dll.)
Di sini masalahnya benar-benar jelas, tetapi dalam kasus-kasus lain kita mungkin telah ketinggalan; untuk mengurangi peluang kami melewatkannya, plot lain yang berwawasan luas adalah yang disebutkan oleh IrishStat: Residual versus nilai yang Diamati, atau untuk masalah mainan kami:
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")
yang seharusnya memberikan sesuatu seperti:
Dalam keadilan situasi Anda, residual Anda vs plot nilai pas tampaknya relatif OK. Memeriksa residu Anda vs nilai-nilai yang Anda amati mungkin akan membantu untuk memastikan Anda berada di sisi yang aman. (Saya tidak menyebutkan plot QQ atau semacamnya agar tidak membingungkan banyak hal, tetapi Anda mungkin ingin memeriksanya juga secara singkat.) Saya harap ini membantu dengan pemahaman Anda tentang heteroskedastisitas dan apa yang harus Anda perhatikan.
Pertanyaan Anda tampaknya tentang heteroskedastisitas (karena Anda menyebutkannya dengan nama dan menambahkan tag), tetapi pertanyaan eksplisit Anda (misalnya, dalam judul dan) mengakhiri posting Anda lebih umum, "apakah model saya sesuai atau tidak sesuai dengan ini merencanakan". Ada lebih banyak untuk menentukan apakah model tidak tepat daripada menilai heteroskedastisitas.
Saya memo data Anda menggunakan situs web ini (ht @Alexis). Perhatikan bahwa data diurutkan dalam urutan naik dari fitted
. Berdasarkan pada regresi dan plot kiri atas, tampaknya cukup setia:
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
Saya tidak melihat bukti heteroskedastisitas di sini. Dari kanan atas (qq-plot), tampaknya tidak ada masalah dengan asumsi normalitas.
Di sisi lain, kurva "S" pada fit lowess merah (di plot kiri atas), dan plot acf dan pacf (di bagian bawah) memang bermasalah. Di paling kiri, sebagian besar residu berada di atas garis abu-abu 0. Saat Anda bergerak ke kanan, sebagian besar residu turun di bawah 0, lalu di atas, dan kemudian di bawah lagi. Hasil dari ini adalah bahwa jika saya katakan saya melihat residu tertentu dan itu memiliki nilai negatif (tapi saya tidak memberi tahu Anda yang mana yang saya lihat), Anda bisa menebak dengan akurasi yang baik bahwa residu di dekatnya juga dinilai negatif. Dengan kata lain, residu tidak independen — mengetahui sesuatu tentang seseorang memberi Anda informasi tentang orang lain.
Selain plot, ini dapat diuji. Pendekatan sederhana adalah dengan menggunakan tes jalan :
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
Untuk menjawab pertanyaan eksplisit Anda: Plot Anda menunjukkan autokorelasi serial / non-independensi residu Anda. Ini berarti bahwa model Anda tidak sesuai dalam bentuknya saat ini.