Soru:
Breusch-Pagan testi, heteroskedastik olmayacak şekilde tasarlanmış simüle edilmiş verilerde neden önemlidir?
Dail
2011-08-27 15:35:46 UTC
view on stackexchange narkive permalink

Doğrusal bir regresyonun kalıntılarını, Heteroscedastisiteyi tespit etmek için Breusch-Pagan Testini kullanarak test ediyorum.

Artıkların grafiği şu şekildedir: Residuals

ve bu R kodudur:

  > library (lmtest) > > mod <- lm (rnorm (1000) ~ 1) > > bptest (mod) öğrencili Breusch-Pagan testdata: mod BP = 0, df = 0, p-değeri < 2.2e-16  

Biri bana homoskedastik hataların boş hipotezini neden reddettiğini söyleyebilir mi?

Arsa heteroskedastik görünmüyor.

DÜZENLEME:

Ancak konu bir örnek, iki fiyat listem var ( fiyatA ve priceB ), bu iki listenin doğrusal bir regresyonuyla üretilen artıkların: lm (fiyatA ~ fiyatB + 0) Sıfır kesişimin evsel amaçlı olup olmadığını kontrol etmem gerekiyor. Biri bana küçük bir örnek verebilir mi? Her bir fiyat listesinin uzunluğu 750'dir.

DÜZENLEME:

Ayrıca şunu da elde ederim:

BP = 67.4362, df = 1 , p-değeri < 2.2e-16

bu grafikle new charts

Eşcinsellik mi? Kalıntıları işaretledim.

@Wolfgang , bu sonucu gönderdiğiniz örnekten sonra alıyorum.

  > özeti (mod) $ r .squared * 750 [1] 681.0114  
İndeks * anlamlı bir miktar * olmadığı sürece (örneğin, bir zaman değişkeniyle doğrudan ilişkili), bu grafik size pek bir şey anlatmaz. Artıkların bir grafiğine ve takılan değerlere bakarak başlayabilirsiniz.
@cardinal Kalıntılarımın homo / hetero skedastik olup olmadığını kontrol etmek için bir yönteme ihtiyacım var. Amacım sonucun bir şeyi çizdiğini görmek değil. Yukarıdaki tabloyu çiziyorum çünkü garip bir p değeri alıyorum, ancak sadece model homoskedastik ise bir yanıta ihtiyacım var. Bu yöntem benim için iyi olabilir mi? fiyatları olan bir matrisim var, bu yüzden: lm (fiyatlar [, 1] ~ fiyatlar [, 2] +0) Sıfır kesişim gerekir .... +0 koyarsam her zaman p değeri <2.2e-16 elde ederim
Kesişmenin neden 0 olmasını istiyorsunuz?
@Wolfgang, çünkü bir hisse +2 yükseliyorsa diğeri de aynı olmalıdır.
Maalesef, oradaki mantığınızı gerçekten anlamıyorum. Kalıntılardaki varyansın ("fiyatlar [, 2]" üzerindeki "fiyatları [, 1]" gerilediğinde) "fiyatlar [, 2]" nin bir fonksiyonu olarak değişip değişmediğini incelemek istiyorsanız, o zaman yapmanızı öneririm " bptest (lm (fiyatlar [, 1] ~ fiyatlar [, 2])) `.
Bu, "lm (fiyatlar [, 1] ~ fiyatlar [, 2])" modelinden kalanların bir grafiği mi? Bu durumda, kalıntıların görünmesi gerektiği gibi görünmediğini söylemek için herhangi bir teste ihtiyacınız yoktur. Görünür bir desen olmadan 0 civarında rastgele dağılmalıdırlar. Açıkça yok. Bu kalıntılarda güçlü bir otokorelasyon var. Farklı varyansın sorunlarınızın en küçüğü olduğunu söyleyebilirim.
@Wolfgang, EVET, lm (fiyatlar [, 1] ~ fiyatlar [, 2]) kalıntılar homoskedastik / heteroskedastikse, "otokorelasyonu" kontrol etmek için başka bir test kullanmam gerektiğini düşünüyor musunuz? Bu durumda bana hangi yöntemi tavsiye edersiniz? Açıkçası bunu programlı olarak yapmam gerekiyor, bu yüzden her grafiği görsel olarak kontrol edemiyorum. Otokorelasyon kontrolleri benim için iyi olmalı mı?
Otokorelasyonu test etmenize gerek yok. Konudan otokorelasyon olduğu açıktır.
üç yanıtlar:
#1
+16
Wolfgang
2011-08-27 16:32:11 UTC
view on stackexchange narkive permalink

Hayır, veriler heteroskedastik değildir (onları nasıl simüle ettiğinize göre). Testin 0 serbestlik derecesini fark ettiniz mi? Bu, burada bir şeylerin ters gittiğine dair bir ipucu. B-P testi, modeldeki kalıntıların karesini alır ve modeldeki yordayıcıların (veya belirlediğiniz diğer tahmin edicilerin) bu değerlerde önemli miktarda değişkenliği hesaba katıp katamayacağını test eder. Modelde yalnızca kesişme noktası bulunduğundan, tanım gereği herhangi bir değişkenliği hesaba katamaz.

Bir göz atın: http://en.wikipedia.org/wiki/Breusch-Pagan_test

Ayrıca, yardım (bptest) bölümünü okuduğunuzdan emin olun. Bu, bazı şeyleri açıklığa kavuşturmaya yardımcı olmalı.

Burada yanlış giden bir şey, görünüşe göre bptest () işlevinin bu hatalı durumu test etmemesi ve küçük bir p değeri. Aslında, bptest () işlevinin altında yatan koda dikkatlice bakarsanız, esasen şu oluyor:

  format.pval (pchisq (0,0), digits = 4)  

"< 2.2e-16" değerini verir. Dolayısıyla, pchisq (0,0) 0 döndürür ve bu format.pval tarafından "< 2.2e-16" haline getirilir. () . Bir bakıma, hepsi doğrudur, ancak bu tür bir karışıklığı önlemek için bptest () içinde sıfır dfs'yi test etmek muhtemelen yardımcı olacaktır.

EDIT

Bu soruyla ilgili hala çok fazla kafa karışıklığı var. Belki de B-P testinin gerçekte ne yaptığını göstermenin gerçekten faydası vardır. İşte bir örnek. İlk olarak, homoskedastik olan bazı verileri simüle edelim. Sonra iki yordayıcıya sahip bir regresyon modeli uydururuz. Daha sonra bptest () işlevi ile BP testini gerçekleştiriyoruz.

  library (lmtest) n <- 100 x1i <- rnorm (n) x2i <- rnorm (n) yi <- rnorm (n) mod <- lm (yi ~ x1i + x2i) bptest (mod)  

Peki gerçekten ne oluyor? İlk olarak, regresyon modeline göre kalan kareleri alın. Daha sonra, orijinal modele dahil edilen tahmin edicilerdeki bu kare artıkları geri getirirken $ n \ times R ^ 2 $ alın ( bptest () işlevinin orijinal modeldeki aynı öngörücüleri kullandığını unutmayın, ancak, heteroskedisitenin diğer değişkenlerin bir fonksiyonu olduğundan şüpheleniliyorsa, burada başka yordayıcılar da kullanılabilir). B-P testi için test istatistiği budur. Eşit varyansın boş hipotezi altında, bu test istatistiği, testte kullanılan yordayıcıların sayısına eşit serbestlik derecelerine sahip bir ki-kare dağılımını takip eder (kesişme hariç). Öyleyse, aynı sonuçları alıp alamayacağımızı görelim:

  e2 <- resid (mod) ^ 2bp <- summary (lm (e2 ~ x1i + x2i)) $ r.squared * nbppchisq (bp, df = 2, lower.tail = FALSE)  

Evet, işe yarıyor. Şans eseri, yukarıdaki test önemli olabilir (simüle edilen veriler homoskedastik olduğundan bu bir Tip I hatasıdır), ancak çoğu durumda önemli olmayacaktır.

Ben şu anda taciz oldum. Birçok fiyatı olan iki vektörüm var (hisse senedi fiyatları). Kalıntılarının sabit olup olmadığını bu yöntemle test edebilir miyim? bana küçük bir örnek verebilir misin? çok teşekkür ederim!
Kalıntılardaki varyans heteroskedastik olduğunda, varyansın yordayıcı değişkenlerden birinin bir fonksiyonu olarak, modelde yer almayan başka bir değişkenin bir fonksiyonu olarak değiştiği ve / veya zamanla değiştiği anlamına gelir. Örneğin, Karl'ın daha önce belirttiği gibi, varyansın zaman içinde değişip değişmediğini test etmek için gözlemlerin indeksini açıklayıcı bir değişken olarak kullanabilirsiniz.
indeks ile şu gibi bir vektör mü kastediyorsunuz: c (1: N) burada N, artıklar vektörümün uzunluğu?
Evet. Karl'ın gösterdiği gibi.
: Wolfgang BP, tüm "bilgilerin" tahmin edicilerden çıkarıldığı hipezini test ediyor. Sabit olmayan varyans bir dizi kaynaktan ortaya çıkabileceğinden, bu, sabit olmayan varyansı kapsamlı bir şekilde test etmekten çok uzaktır. Lütfen http://stats.stackexchange.com/questions/14842/how-to-check-if-the-volatility-is-stationary adresindeki yorumuma bakın
@IrishStat Test anlamlıysa, bu, test için kullanılan yordayıcıların bir fonksiyonu olarak heteroskedastisiteyi gösterir. Testin yaptığı tek şey bu. Farklı varyansın gerçek nedenleri başka bir konudur. Hatalardaki varyans gerçekten değişiyor olabilir, ancak örneğin ihmal edilmiş tahmin edicilerden de kaynaklanıyor olabilir.
@Wolfgang, bptest kullanırsam (lm (fiyatlar [, 1] ~ fiyatlar [, 2])) almaya devam ederim: BP = 67.4362, df = 1, p-değeri <2.2e-16, yeni grafiğe bir göz atın yukarıda.
#2
+4
Karl
2011-08-27 16:31:48 UTC
view on stackexchange narkive permalink

Sonuçlar, bir tahmin aracı olmadan anlamlı değildir (not df = 0 ). Heteroskedastik , varyansın sabit olmadığı, ancak neye göre sabit olmadığı anlamına gelir? Belki aklınızda endeksi (ölçüm sırası) var mı? O zaman yapmalısınız

  y <- rnorm (1000) x <- 1: 1000mod <- lm (y ~ x) bptest (mod) # I get p = 0.59  

Yalnızca bir sayı vektörünüz varsa, "Varyans sabit mi?" sorusunun pek bir anlamı yoktur. Örneğin, farklı varyanslara sahip iki normal dağılımın bir karışımını düşünün:

  v <- sample (c (1,10), 100, repl = TRUE) y <- rnorm (100, 0 , v)  

$ \ text {var} (y | v) $ sabit değil, $ v $ 'a bağlıdır. Ancak koşulsuz olarak, $ \ text {var} (y) $ yalnızca bir sayıdır.

y öğeleri nelerdir?
Senin örneğinden takip ediyordum; daha net olacak şekilde düzenlendi
son örnek sabit görünüyor, şunu anlıyorum: BP = 0,0133, df = 1, p-değeri = 0,9083
ancak söylediğim gibi, iki fiyat listesi lm (fiyatlarA ~ FiyatlarB) ile bir regresyondan elde edilen kalıntıları kontrol etmek için bu teste ihtiyacım var. Kalıntılarını kontrol etmek için bu yöntemi nasıl kullanabilirim?
yaparsam ne olacak: newMod <- lm (artık (mod) ~ c (1,750)) burada 750 fiyat vektörünün uzunluğudur. Sonra, lm (resid (mod) ~ rep (1,750)) denedim her zaman bir p-değeri = 1 alıyorum kesinlikle aptalca bir soru ama nedenini açıklayabilir misin? Çok teşekkür ederim!
`Mod <- lm (fiyatlarA ~ Fiyat)` modeli için, sadece bptest (fiyatlar ~ Fiyatlar) 'istediğinizi düşünüyorum.
hmmm, bu durumda elimde: öğrencileştirilmiş Breusch-Pagan test verileri: fiyatlar [, 1] ~ fiyatlar [, 2] BP = 67.4362, df = 1, p-değeri <2.2e-16
aksi takdirde test edersem: bptest (artık (mod) ~ c (1: 750)) alırım: öğrencileştirilmiş Breusch-Pagan test verileri: kalıntı (mod) ~ c (1: 750) BP = 2.0368, df = 1, p-değeri = 0.1535 bu doğru çünkü testi kesinlikle homoskedastik olan bir model üzerinde yaptım. Yani şimdi yalnızca "indeks" içeren test iyi çalışıyor gibi görünüyor
Karl, Yukarıdaki grafiğini çizdiğim kalıntıları içeren modelde "indeksi" kullanırsam, doğru olan 2.2e-16 elde ederim çünkü veriler heteroskedastiktir ... öyleyse şimdi, nasıl doğru kullanılır? indeksli mi yoksa indekssiz mi?
@Dail B-P testi regresyon için * kare * artıkları alır. Cevabımı daha fazla ayrıntı sağlamak ve neler olduğunu gerçekten göstermek için güncelledim. Umarım bu sizin için işleri netleştirir.
#3
  0
IrishStat
2011-08-28 06:29:01 UTC
view on stackexchange narkive permalink

: Dail Sabit olmayan varyansı test etmek için, popüler istatistiksel testlerin arkasındaki hipotezi anlamak gerekir. Bir serinin sabit olmayan varyansa sahip olduğunun tam olarak kanıtlanamadığını tam olarak doğrulamak için Uçuculuğun sabit olup olmadığı nasıl kontrol edilir? bölümünde özetlediğim testleri, yani tarifi izlemeniz gerekir. Ana hatlarını çizdiğim altı testin tümü, sabit olmayan varyansın boş hipotezini kabul etmelidir. 6 testten herhangi birinin reddedilmesi, hata varyansının gerçekten sabit olmadığını gösterir.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...