Comparar os meios é muito fraco: compare as distribuições.
Há também uma questão sobre se é mais desejável comparar os tamanhos dos resíduos (como indicado) ou comparar os próprios resíduos. Portanto, eu avalio os dois.
Para ser específico sobre o significado, aqui está um R
código para comparar dados (fornecidos em matrizes paralelas e ) regredindo em , dividindo os resíduos em três grupos, cortando-os abaixo do quantil e acima do quantil e (por meio de um gráfico qq) comparando as distribuições de valores associados a esses dois grupos.( x , y)x
y
yxq0 0q1> q0 0x
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", ...)
}
O quinto argumento para essa função abs0
,, por padrão, usa os tamanhos (valores absolutos) dos resíduos para formar os grupos. Posteriormente, podemos substituí-lo por uma função que utiliza os próprios resíduos.
Os resíduos são usados para detectar muitas coisas: discrepâncias, possíveis correlações com variáveis exógenas, qualidade de ajuste e homoscedasticidade. Os forasteiros, por sua natureza, devem ser poucos e isolados e, portanto, não terão um papel significativo aqui. Para manter essa análise simples, vamos explorar as duas últimas: qualidade do ajuste (isto é, linearidade da relação - ) e homoscedasticidade (isto é, constância do tamanho dos resíduos). Podemos fazer isso através de simulação: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")
}
Este código aceita argumentos que determinam o modelo linear: seus coeficientes , os desvios padrão dos termos de erro , os quantis e , a função de tamanho e o número de independentes. ensaios na simulação ,. O primeiro argumento é a quantidade de dados a serem simulados em cada tentativa. Ele produz um conjunto de gráficos - dos dados , de seus resíduos e gráficos qq de várias tentativas - para nos ajudar a entender como os testes propostos funcionam para um determinado modelo (conforme determinado pelo beta, se ). Exemplos desses gráficos aparecem abaixo.y∼ β0 0+ β1x + β2x2sd
q0 0q1abs0
n.trials
n
( x , y)n
sd
Vamos agora usar essas ferramentas para explorar algumas combinações realistas de não linearidade e heterocedasticidade, usando os valores absolutos dos resíduos:
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")
A saída é um conjunto de gráficos. A linha superior mostra um conjunto de dados simulado, a segunda linha mostra um gráfico de dispersão de seus resíduos em relação a (codificado por cores pelo quantil: vermelho para valores grandes, azul para valores pequenos, cinza para quaisquer valores intermediários que não são mais utilizados) e a terceira linha mostra os gráficos qq para todas as tentativas, com o gráfico qq para o conjunto de dados simulado mostrado em preto. Um gráfico qq individual compara os valores de associados a altos resíduos com os valores de associados a baixos resíduos; depois de muitos testes, um envelope cinza de prováveis gráficos qq emerge. Estamos interessados em saber como e com que intensidade esses envelopes variam de acordo com o modelo linear básico: variações fortes implicam uma boa discriminação.xxx
As diferenças entre as três últimas e as primeiras colunas deixam claro que esse método é capaz de detectar heterocedasticidade, mas pode não ser tão eficaz na identificação de uma não linearidade moderada. Poderia facilmente confundir a não linearidade com a heterocedasticidade. Isso ocorre porque a forma de heterocedasticidade simulada aqui (o que é comum) é aquela em que os tamanhos esperados dos resíduos tendem com . Essa tendência é fácil de detectar. A não linearidade quadrática, por outro lado, criará grandes resíduos nas duas extremidades e no meio da faixa de valores . É difícil distinguir apenas olhando as distribuições dos valores afetados .xxx
Vamos fazer a mesma coisa, usando exatamente os mesmos dados , mas analisando os próprios resíduos. Para fazer isso, o bloco de código anterior foi executado novamente depois de fazer esta modificação:
size <- function(x) x
Essa variação não detecta bem a heterocedasticidade: veja como os gráficos qq são semelhantes nas duas primeiras colunas. No entanto, ele faz um bom trabalho ao detectar a não linearidade. Isso ocorre porque os resíduos separam os em uma porção intermediária e uma externa, que serão bem diferentes. Conforme mostrado na coluna mais à direita, no entanto, a heterocedasticidade pode mascarar as não linearidades.x
Talvez a combinação dessas duas técnicas funcionasse. Essas simulações (e variações delas, que o leitor interessado pode executar à vontade) demonstram que essas técnicas não são sem mérito.
Em geral, no entanto, é melhor servir muito melhor examinando os resíduos de maneira padrão. Para o trabalho automatizado, testes formais foram desenvolvidos para detectar os tipos de coisas que procuramos em gráficos residuais. Por exemplo, o teste Breusch-Pagan regride os resíduos quadrados (em vez de seus valores absolutos) contra . Os testes propostos nesta pergunta podem ser entendidos no mesmo espírito. No entanto, agrupando os dados em apenas dois grupos e, assim, negligenciando a maioria das informações bivariadas fornecidas pelos pares , podemos esperar que os testes propostos sejam menos poderosos do que os testes baseados em regressão, como o Breusch-Pagan .x( x , y^- x )
IV
s? Nesse caso, não consigo entender o motivo disso, porque a divisão residual já está usando essas informações. Você pode dar um exemplo de onde você viu isso? É novo para mim?