Bu iki Breusch-Pagan Testi arasındaki fark nedir?


9

Bazı verilerde R kullanarak ve verilerimin heterossedastik olup olmadığını görmeye çalışırken, Breusch-Pagan testi, bptest (paket lmtest) ve ncvTest (paket araba) olmak üzere iki uygulama buldum . Ancak, bunlar farklı sonuçlar doğurur. İkisi arasındaki fark nedir? Birini veya diğerini ne zaman kullanmayı seçmelisiniz?

> model <- lm(y ~ x)
> bp <- bptest(model)
> bp
studentized Breusch-Pagan test

data:  model 
BP = 3.3596, df = 1, p-value = 0.06681

> ncvTest(model)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 3.858704    Df = 1     p = 0.04948855 

Bu örnek testlere göre verilerimin bir durumda heterossedastik, diğer durumda homoscedastik olduğunu göstermektedir. Bu soruyu burada buldum, bu yüzden bptest öğrenci olabilir ve ncvTest olmayabilir, ancak bu ne anlama geliyor?

Yanıtlar:


9

ncvTestTahmininiz doğru, Breusch-Pagan testinin orijinal sürümünü gerçekleştirir. Bu aslında ile karşılaştırılarak doğrulanabilir bptest(model, studentize = FALSE). (@ Helix123'ün belirttiği gibi, iki işlev de varsayılan argümanlar gibi diğer yönlerde farklılık gösterir, biri paket kılavuzlarını lmtestve cardaha fazla ayrıntı için kontrol etmelidir .)

Öğrenciye açık Breusch-Pagan testi, 1981 tarihli Heterossedastisite Testini Öğrencileştirme Üzerine Bir Not makalesinde R. Koenker tarafından önerilmiştir . İkisinin en belirgin farkı, farklı test istatistikleri kullanmalarıdır. Yani, , öğrenci test istatistikleri ve orijinal istatistik olsun ,ξ*ξ^

ξ^=λξ*,λ=var(ε2)2var(ε)2.

İşte ben sadece ne yazdı ( farawaypaketten alınan veri ) gösteren bir kod pasajı :

> mdl = lm(final ~ midterm, data = stat500)
> bptest(mdl)

    studentized Breusch-Pagan test

data:  mdl
BP = 0.86813, df = 1, p-value = 0.3515

> bptest(mdl, studentize = FALSE)

    Breusch-Pagan test

data:  mdl
BP = 0.67017, df = 1, p-value = 0.413

> ncvTest(mdl)
Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.6701721    Df = 1     p = 0.4129916 
> 
> n = nrow(stat500)
> e = residuals(mdl)
> bpmdl = lm(e^2 ~ midterm, data = stat500)
> lambda = (n - 1) / n * var(e^2) / (2 * ((n - 1) / n * var(e))^2)
> Studentized_bp = n * summary(bpmdl)$r.squared
> Original_bp = Studentized_bp * lambda
> 
> Studentized_bp
[1] 0.8681335
> Original_bp
[1] 0.6701721

Birinin orijinal BP testini neden öğrencileştirmek istediğine gelince, R.Koenker'in makalesinden doğrudan bir alıntı yararlı olabilir:

... Bu analizden iki sonuç çıkıyor:

  1. Breusch ve Pagan testinin asimptotik gücü dağılımının basıklığına son derece duyarlıdır veε
  2. testin asimptotik boyutu sadece Gauss kurtosis özel durumunda doğrudur.

Önceki sonuç, heterorosdadastisite için alternatif, sağlam testlerin önerildiği Koenker ve Bassett (1981) 'de genişletilmiştir. İkinci sonuç Breusch ve Pagan tarafından önerilen önem seviyelerinin sadece üzerindeki Gauss koşullarında doğru olacağı anlamına gelir . Bu koşullar genellikle kör inançlara farz ve doğrulamak oldukça zordur olduğundan, Breusch ve Pagan testinin bir modifikasyonu için dağılımların oldukça büyük bir sınıf için hangi doğru "studentise" test istatistiğini ve asimptotik doğru anlamlılık düzeylerine yol önerilir .εε

Kısacası, öğrenci BP testi orijinal testten daha sağlamdır.


2
Ancak, orada başka farktır: ncvTestve bptest, artıklar açıklamak argümanları görmek için farklı değişkenler kullanmak var.formulave varformulasırasıyla. Örneğinize başka bir regresör eklediğinizde sonuçlar farklılaşacaktır.
Helix123

@ Helix123: teşekkür ederim, sanırım özledim.
Francis

2

Pratik olarak, ncvTestdenklemin sol tarafını bptestkullanır ve varsayılan olarak sağ tarafını kullanır.

Bu Y ~ X, her iki testin de ( studentize = Fseçenekle ilgili bptest) aynı sonuçları sağlayacağı anlamına gelir . Ancak, gibi çok değişkenli bir analizde Y ~ X1 + X2, sonuçlar farklı olacaktır. (@ Helix123'ün işaret ettiği gibi)

Yardım dosyasından ncvTest : var.formula: "hata sapması için tek taraflı bir formül; atlanırsa, hata sapması takılan değerlere bağlıdır ." Bu, varsayılan olarak, takılan değerlerin kullanılacağı, ancak bağımsız değişkenlerin (X1 + X2) doğrusal bir kombinasyonunun kullanılmasına izin verdiği anlamına gelir.

Yardım dosyasından bptest : varformula: "Varsayılan olarak, ana regresyon modelinde olduğu gibi aynı açıklayıcı değişkenler alınır."

(Veri @Francis aynı örnekten devam stat500gelen farawaypaket):

> mdl_t = lm(final ~ midterm + hw, data = stat500)

Takılmış değerleri kullanarak BP testi:

> ncvTest(mdl_t) # Default

Non-constant Variance Score Test 
Variance formula: ~ fitted.values 
Chisquare = 0.6509135    Df = 1     p = 0.4197863 

> bptest(mdl_t, varformula = ~ fitted.values(mdl_t), studentize = F)

Breusch-Pagan test

data:  mdl_t
BP = 0.65091, df = 1, p-value = 0.4198

Öngörücülerin doğrusal bir kombinasyonunu kullanan BP testi:

> ncvTest(mdl_t, var.formula = ~ midterm + hw)
Non-constant Variance Score Test 
Variance formula: ~ midterm + hw 
Chisquare = 0.7689743    Df = 2     p = 0.6807997 

> bptest(mdl_t, studentize = F) # Default

Breusch-Pagan test

data:  mdl_t
BP = 0.76897, df = 2, p-value = 0.6808

"Doğrusal kombinasyon seçeneği", belirli bir bağımsız değişkenin doğrusal bağımlılığına bağlı heteroskedastisitenin araştırılmasına izin verir. Örneğin, sadece hwdeğişken:

> ncvTest(mdl_t, var.formula = ~ hw)
Non-constant Variance Score Test 
Variance formula: ~ hw 
Chisquare = 0.04445789    Df = 1     p = 0.833004 

> bptest(mdl_t, varformula = ~ stat500$hw, studentize = F)

Breusch-Pagan test

data:  mdl_t
BP = 0.044458, df = 1, p-value = 0.833

@Francis özetlendiği gibi Son olarak, ben genelde ile gitmek, "Kısacası, studentized BP testi orijinal olandan daha sağlamdır" bptestile, studentize = TRUE(varsayılan) ve varformula = ~ fitted.values(my.lm)homoskedasticity için bir başlangıç yaklaşım için, seçenekler olarak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.