平均の比較は弱すぎます。代わりに、分布を比較してください。
また、(述べたように)残差のサイズを比較するのが望ましいのか、残差自体を比較するのが望ましいのかという疑問もあります。したがって、両方を評価します。
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", ...)
}
この関数の5番目の引数abs0
、デフォルトでは、残差のサイズ(絶対値)を使用してグループを形成します。後で、残差自体を使用する関数に置き換えることができます。
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)データ、その残差、および複数の試行のqqプロット-提案されたテストが特定のモデルに対してどのように機能するかを理解するのに役立ちます(n
、ベータ、およびによって決定されsd
ます)。これらのプロットの例を以下に示します。
これらのツールを使用して、残差の絶対値を使用して、非線形性と不均一分散の現実的な組み合わせを調べてみましょう。
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
まったく同じdataを使用して同じことを行いますが、残差自体を分析します。これを行うには、この変更を行った後、前のコードブロックを再実行しました。
size <- function(x) x
x
おそらく、これらの両方のテクニックを組み合わせることでうまくいくでしょう。これらのシミュレーション(および興味のある読者が自由に実行できるそれらのバリエーション)は、これらの手法にはメリットがないわけではないことを示しています。
x(x,y^−x)提案されたテストは、Bresch-Paganのような回帰ベースのテストよりも強力ではないと予想できます。
IV
sを使用しますか?もしそうなら、残差分割がすでにその情報を使用しているので、私はこの点を見ることができません。これを見た場所の例を挙げていただけますか、それは私にとって新しいことですか?