Membandingkan berarti terlalu lemah: sebagai gantinya, bandingkan distribusi.
Ada juga pertanyaan mengenai apakah lebih diinginkan untuk membandingkan ukuran residu (seperti yang dinyatakan) atau membandingkan residu itu sendiri. Karena itu, saya mengevaluasi keduanya.
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", ...)
}
Argumen kelima untuk fungsi ini abs0
,, secara default menggunakan ukuran (nilai absolut) dari residu untuk membentuk grup. Nanti kita bisa menggantinya dengan fungsi yang menggunakan residu itu sendiri.
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)data, dari residu mereka, dan plot qq dari banyak percobaan - untuk membantu kami memahami bagaimana tes yang diusulkan bekerja untuk model yang diberikan (sebagaimana ditentukan oleh n
, beta, s dan sd
). Contoh plot ini muncul di bawah.
Mari kita sekarang menggunakan alat-alat ini untuk mengeksplorasi beberapa kombinasi realistis nonlinier dan heteroskedastisitas, menggunakan nilai absolut residu:
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
Mari kita lakukan hal yang sama, menggunakan data yang persis sama , tetapi menganalisis residu itu sendiri. Untuk melakukan ini, blok kode sebelumnya dijalankan kembali setelah melakukan modifikasi ini:
size <- function(x) x
x
Mungkin menggabungkan kedua teknik ini akan berhasil. Simulasi-simulasi ini (dan variasi dari mereka, yang dapat dijalankan oleh pembaca yang tertarik di waktu luang) menunjukkan bahwa teknik-teknik ini bukan tanpa prestasi.
x(x,y^−x)kita dapat mengharapkan tes yang diusulkan menjadi kurang kuat daripada tes berbasis regresi seperti Breusch-Pagan .
IV
s yang sama ? Jika demikian, saya tidak dapat melihat intinya karena split residual sudah menggunakan informasi itu. Bisakah Anda memberi contoh di mana Anda pernah melihat ini, ini baru bagi saya?