Comparer les moyennes est trop faible: comparez plutôt les distributions.
Il y a aussi une question de savoir s'il est plus souhaitable de comparer les tailles of the residuals (as stated) or to compare the residuals themselves. Therefore, I evaluate both.
Pour être précis sur ce que l'on veut dire, voici du R
code à comparer( x ,y)données (données dans des tableaux parallèles x
et y
) en régressanty sur X, divisant les résidus en trois groupes en les coupant en dessous du quantileq0 et au-dessus du quantile q1> q0, et (au moyen d'un tracé qq) comparer les distributions de X valeurs associées à ces deux groupes.
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", ...)
}
Le cinquième argument de cette fonction, abs0
utilise par défaut les tailles (valeurs absolues) des résidus pour former les groupes. Plus tard, nous pouvons remplacer cela par une fonction qui utilise les résidus eux-mêmes.
Les résidus sont utilisés pour détecter de nombreuses choses: valeurs aberrantes, corrélations possibles avec des variables exogènes, qualité de l'ajustement et homoscédasticité. Les valeurs aberrantes, de par leur nature, devraient être peu nombreuses et isolées et ne joueront donc pas un rôle significatif ici. Pour garder cette analyse simple, explorons les deux derniers: qualité de l'ajustement (c'est-à-dire, linéarité duX-yrelation) et l’homoscédasticité (c’est-à-dire la constance de la taille des résidus). Nous pouvons le faire grâce à la simulation:
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")
}
Ce code accepte des arguments déterminant le modèle linéaire: ses coefficients y∼ β0+ β1x + β2X2, the standard deviations of the error terms sd
, the quantiles q0 and q1, the size function abs0
, and the number of independent trials in the simulation, n.trials
. The first argument n
is the amount of data to simulate in each trial. It produces a set of plots--of the (x,y) data, of their residuals, and qq plots of multiple trials--to help us understand how the proposed tests work for a given model (as determined by n
, the beta,s and sd
). Examples of these plots appear below.
Let us now use these tools to explore some realistic combinations of nonlinearity and heteroscedasticity, using the absolute values of the residuals:
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")
The output is a set of plots. The top row shows one simulated dataset, the second row shows a scatterplot of its residuals against x (color-coded by quantile: red for large values, blue for small values, gray for any intermediate values not further used), and the third row shows the qq plots for all trials, with the qq plot for the one simulated dataset shown in black. An individual qq plot compares the X valeurs associées à des résidus élevés à la Xvaleurs associées à de faibles résidus; après de nombreux essais, une enveloppe grise de parcelles qq probables émerge. Nous nous intéressons à la manière et à la force avec laquelle ces enveloppes varient en fonction des écarts par rapport au modèle linéaire de base: une forte variation implique une bonne discrimination.
Les différences entre les trois dernières et les premières colonnes montrent clairement que cette méthode est capable de détecter l'hétéroscédasticité, mais qu'elle pourrait ne pas être aussi efficace pour identifier une non-linéarité modérée. Cela pourrait facilement confondre la non-linéarité avec l'hétéroscédasticité. En effet, la forme d'hétéroscédasticité simulée ici (qui est courante) est celle où les tailles attendues de la tendance des résidus avecX. Cette tendance est facile à détecter. La non-linéarité quadratique, d'autre part, créera de grands résidus aux deux extrémités et au milieu de la plage deXvaleurs. Ceci est difficile à distinguer simplement en regardant les distributions desX valeurs.
Faisons la même chose, en utilisant exactement les mêmes données , mais en analysant les résidus eux-mêmes. Pour ce faire, le bloc de code précédent a été réexécuté après avoir effectué cette modification:
size <- function(x) x
Cette variation ne détecte pas bien l'hétéroscédasticité: voyez à quel point les graphes qq sont similaires dans les deux premières colonnes. Cependant, il détecte bien la non-linéarité. En effet, les résidus séparent lesXest dans une partie médiane et une partie extérieure, qui seront assez différentes. Comme indiqué dans la colonne de droite, cependant, l'hétéroscédasticité peut masquer les non-linéarités.
Peut-être que la combinaison de ces deux techniques fonctionnerait. Ces simulations (et leurs variantes, que le lecteur intéressé peut exécuter à loisir) démontrent que ces techniques ne sont pas sans mérite.
En général, cependant, on est beaucoup mieux servi en examinant les résidus de manière standard. Pour le travail automatisé, des tests formels ont été développés pour détecter le genre de choses que nous recherchons dans les parcelles résiduelles. Par exemple, le test de Breusch-Pagan régresse les résidus au carré (plutôt que leurs valeurs absolues) contreX. Les tests proposés dans cette question peuvent être compris dans le même esprit. Cependant, en regroupant les données en deux groupes seulement et en négligeant ainsi la plupart des informations bivariées fournies par le( x , y^- x )paires, nous pouvons nous attendre à ce que les tests proposés soient moins puissants que les tests basés sur la régression comme le Breusch-Pagan .
IV
s? Si c'est le cas, je ne vois pas l'intérêt de cela parce que la répartition résiduelle utilise déjà cette information. Pouvez-vous donner un exemple de l'endroit où vous avez vu cela, c'est nouveau pour moi?