Hetero-esnekliği gerçekten anlamıyorum. Modelimin bu konuya göre uygun olup olmadığını bilmek istiyorum.
Hetero-esnekliği gerçekten anlamıyorum. Modelimin bu konuya göre uygun olup olmadığını bilmek istiyorum.
Yanıtlar:
@IrishStat'ın yorumladığı gibi, değişkenlikle ilgili sorunlar olup olmadığını görmek için gözlenen değerlerinizi hatalarınıza karşı kontrol etmeniz gerekir. Sonuna doğru buna geri döneceğim.
. Tamam, şimdiye kadar serin kodda görelim:
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
doğru, modelim nasıl davranıyor:
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");
Bu da size şöyle bir şey vermelidir: bu, artıklarınızın keyfi endeksinize (1. arsa - en az bilgilendirici) dayalı bariz bir eğilime sahip olmadığı, aralarında gerçek bir korelasyona sahip olmadığı anlamına gelir (2. arsa - oldukça önemli ve muhtemelen homoskedasticity'den daha önemlidir) ve uygun değerlerin bariz bir başarısızlık eğilimi yoktur, yani. kalan değerleriniz ve kalan değerleriniz oldukça rastgele görünüyor. Buna dayanarak, artıklarımız her yerde aynı varyansa sahip gibi göründüğü için heteroskedastisite problemimiz olmadığını söyleyebiliriz.
Tamam, heteroskedasticity istiyorsun. Aynı doğrusallık ve katkı maddesi varsayımları göz önüne alındığında, "bariz" heteroskedastisite problemleri olan başka bir üretken model tanımlayalım. Yani bazı değerlerden sonra gözlemimiz çok daha gürültülü olacaktır.
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
modelin basit teşhis grafikleri:
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");
şöyle bir şey vermek gerekir: Burada ilk arsa biraz "garip" görünüyor; küçük büyüklüklerde kümelenen birkaç artıklarımız var gibi görünüyor, ancak bu her zaman bir sorun değil ... İkinci grafik tamam, farklı gecikmelerdeki artıklarınız arasında bir korelasyonumuz olmadığı anlamına geliyor, bu yüzden bir an için nefes alabiliriz. Ve üçüncü arsa fasulyeleri döküyor: daha yüksek değerlere ulaştıkça artıklarımızın patladığı açıktır. Bu modelin artıklarında kesinlikle heteroskedastisite var ve hakkında bir şeyler yapmamız gerekiyor (örn. IRLS , Theil-Sen regresyonu , vb.)
Burada sorun gerçekten açıktı ama diğer durumlarda kaçırmış olabiliriz; onu kaçırmak şansımızı azaltmak için başka bir fikirsel konu IrishStat: Residuals vs. Gözlemlenen değerlere göre, ya da eldeki oyuncak sorunumuz için:
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")
hangi gibi bir şey vermeli:
burada ilk arsa, modelin kalıntılarında sadece biraz puslu bir artış eğilimi ile "nispeten iyi" gibi görünüyor (Scortchi'nin belirttiği gibi, neden endişe duymadığımızı burada görebilirsiniz ). İkinci arsa bu sorunu tam olarak sergiliyor. Gözlenen değerlerimizin değerlerine büyük ölçüde bağımlı olan hatalarımız olduğu çok açıktır. Bu, belirleme katsayısı ile ilgili konularda tezahür edereldeki modellerimizden; Örneğin. ayarlanmış "Tamam" modeli nın-nin "balık" biri . Dolayısıyla model yanlış tanımlamasının bir sorun olabileceğine inanmak için nedenlerimiz var. (Orijinal cevabımdaki yanıltıcı ifadeyi işaret ettiği için Scortchi'ye teşekkürler.)
Durumunuzun adaletinde, artıklarınız ve takılmış değerler grafiğiniz göreceli olarak iyi görünüyor. Kalıntılarınızı gözlemlediğiniz değerlerle karşılaştırmak muhtemelen güvenli tarafta olduğunuzdan emin olmak için yararlı olacaktır. ( QQ-grafiğinden ya da bunun gibi bir şeyden daha fazla şeyleri şaşırtmamak için bahsetmedim , ancak bunları kısaca kontrol etmek isteyebilirsiniz.) Umarım bu, heteroskedastisite anlayışınıza ve nelere dikkat etmeniz gerektiğine yardımcı olur.
Sorunuz heteroscedasticity ile ilgili gibi görünüyor (çünkü adıyla bahsettiğiniz ve etiketi eklediniz), ancak yayınınızın sonlandırılması (örneğin, başlıkta ve) daha geneldir, "modelimin uygun olup olmadığı arsa". Bir modelin uygunsuz olup olmadığının belirlenmesi, hetero-esnekliği değerlendirmekten daha fazlasıdır.
Bu web sitesini kullanarak verilerinizi kazımıştım (ht @Alexis). Verilerin artan düzeninde sıralandığını unutmayın fitted
. Regresyon ve sol üst plana dayanarak, yeterince sadık görünüyor:
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
Burada herhangi bir hetero-esneklik kanıtı görmüyorum. Sağ üst kısımdan (qq-plot), normallik varsayımı ile ilgili herhangi bir sorun görünmemektedir.
Öte yandan, kırmızı alçak uyumdaki (sol üst grafikte) "S" eğrisi ve (altta) acf ve pacf grafikleri (altta) sorunlu görünmektedir. En solda, artıkların çoğu gri 0 çizgisinin üzerindedir. Sağa doğru ilerledikçe, artıkların büyük kısmı 0'ın altına, sonra üstüne ve sonra tekrar altına düşer. Bunun sonucu olarak, size belirli bir kalıntıya baktığımı ve negatif bir değere sahip olduğumu söylersem (ama size hangisine baktığımı söylemedim), yakınlardaki kalıntıların olumsuz olarak değerlendirildi. Diğer bir deyişle, artıklar bağımsız değildir ; biri hakkında bir şeyler bilmek, diğerleri hakkında bilgi verir.
Grafiklere ek olarak, bu test edilebilir. Basit bir yaklaşım, bir çalıştırma testi kullanmaktır :
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
Bunun anlamı, modelinizin yanlış tanımlanmasıdır. İlişkide iki 'kıvrım' olduğu için, ve Bunu hesaba katmak için modelinize
Açık sorularınızı cevaplamak için: Çiziminiz, seri otokorelasyonları / artıklarınızın bağımsızlığını göstermez. Bu, modelinizin mevcut biçimine uygun olmadığı anlamına gelir.