Ortalamaları karşılaştırmak çok zayıf: bunun yerine dağılımları karşılaştırın.
Ayrıca, artıkların boyutlarının karşılaştırılması (belirtildiği gibi) veya artıkların kendilerinin karşılaştırılmasının daha istenip istenmediği ile ilgili bir soru vardır . Bu nedenle ikisini de değerlendiriyorum.
Anlamıyla ilgili spesifik olmak gerekirse, burada bazı olan R
kod karşılaştırma (paralel dizide verilen veri ve regresyonundan) y ile ilgili x içine artıklar, bölen üç kantil altında kesilerek grupları q 0 ve quantile yukarıda q 1 > q 0 ve (qq grafiği ile) bu iki grupla ilişkili x değerlerinin dağılımlarını karşılaştırır .(x,y)x
y
yxq0q1>q0x
test <- function(y, x, q0, q1, abs0=abs, ...) {
y.res <- abs0(residuals(lm(y~x)))
y.groups <- cut(y.res, quantile(y.res, c(0,q0,q1,1)))
x.groups <- split(x, y.groups)
xy <- qqplot(x.groups[[1]], x.groups[[3]], plot.it=FALSE)
lines(xy, xlab="Low residual", ylab="High residual", ...)
}
Bu işlevin beşinci bağımsız değişkeni abs0
, varsayılan olarak grupları oluşturmak için artıkların boyutlarını (mutlak değerler) kullanır. Daha sonra bunu, artıkları kullanan bir işlevle değiştirebiliriz.
Kalıntılar birçok şeyi tespit etmek için kullanılır: aykırı değerler, eksojen değişkenlerle olası korelasyonlar, uyum iyiliği ve homoscedasticity. Aykırı değerler, doğası gereği, az sayıda ve yalıtılmış olmalı ve dolayısıyla burada anlamlı bir rol oynamayacaktır. Bu analizi basit tutmak için, son ikisini inceleyelim: uyum iyiliği (yani, - y ilişkisinin doğrusallığı ) ve homoscedasticity (yani, artıkların büyüklüğünün sabitliği). Bunu simülasyon yoluyla yapabiliriz:xy
simulate <- function(n, beta0=0, beta1=1, beta2=0, sd=1, q0=1/3, q1=2/3, abs0=abs,
n.trials=99, ...) {
x <- 1:n - (n+1)/2
y <- beta0 + beta1 * x + beta2 * x^2 + rnorm(n, sd=sd)
plot(x,y, ylab="y", cex=0.8, pch=19, ...)
plot(x, res <- residuals(lm(y ~ x)), cex=0.8, col="Gray", ylab="", main="Residuals")
res.abs <- abs0(res)
r0 <- quantile(res.abs, q0); r1 <- quantile(res.abs, q1)
points(x[res.abs < r0], res[res.abs < r0], col="Blue")
points(x[res.abs > r1], res[res.abs > r1], col="Red")
plot(x,x, main="QQ Plot of X",
xlab="Low residual", ylab="High residual",
type="n")
abline(0,1, col="Red", lwd=2)
temp <- replicate(n.trials, test(beta0 + beta1 * x + beta2 * x^2 + rnorm(n, sd=sd),
x, q0=q0, q1=q1, abs0=abs0, lwd=1.25, lty=3, col="Gray"))
test(y, x, q0=q0, q1=q1, abs0=abs0, lwd=2, col="Black")
}
y∼β0+β1x+β2x2sd
q0q1abs0
n.trials
n
(x,y)verileri, kalıntılarının verileri ve çoklu denemelerin qq grafikleri - önerilen testlerin belirli bir model için nasıl çalıştığını anlamamıza yardımcı olmak için ( n
beta, s ve tarafından belirlenir sd
). Bu grafiklerin örnekleri aşağıda verilmiştir.
Şimdi bu araçları artıkların mutlak değerlerini kullanarak doğrusal olmama ve heteroseladastisitenin bazı gerçekçi kombinasyonlarını keşfetmek için kullanalım:
n <- 100
beta0 <- 1
beta1 <- -1/n
sigma <- 1/n
size <- function(x) abs(x)
set.seed(17)
par(mfcol=c(3,4))
simulate(n, beta0, beta1, 0, sigma*sqrt(n), abs0=size, main="Linear Homoscedastic")
simulate(n, beta0, beta1, 0, 0.5*sigma*(n:1), abs0=size, main="Linear Heteroscedastic")
simulate(n, beta0, beta1, 1/n^2, sigma*sqrt(n), abs0=size, main="Quadratic Homoscedastic")
simulate(n, beta0, beta1, 1/n^2, 5*sigma*sqrt(1:n), abs0=size, main="Quadratic Heteroscedastic")
xxx
xxx
Aynı şeyi, tam olarak aynı verileri kullanarak yapalım , ancak artıkların kendilerini analiz edelim . Bunu yapmak için, bu değişiklik yapıldıktan sonra önceki kod bloğu yeniden çalıştırıldı:
size <- function(x) x
x
Belki de bu iki tekniği birleştirmek işe yarayabilir. Bu simülasyonlar (ve ilgilenen okuyucunun boş zamanlarında çalıştırabileceği varyasyonları), bu tekniklerin haksız olmadığını göstermektedir.
x(x,y^−x)önerilen testlerin Breusch-Pagan gibi regresyon tabanlı testlerden daha az güçlü olmasını bekleyebiliriz .
IV
s kullanıyor mu? Eğer öyleyse, bunun amacını göremiyorum çünkü artık bölünme zaten bu bilgiyi kullanıyor. Bunu gördüğünüz yere bir örnek verebilir misiniz, bu benim için yeni mi?