Comecei a cavar um pouco a função plot.lm , essa função fornece seis gráficos para lm, são eles:
- uma plotagem de resíduos contra valores ajustados
- uma plotagem Scale-Location de sqrt (| resíduos |) em relação aos valores ajustados
- um gráfico QQ normal, um gráfico das distâncias de Cook versus rótulos de linha
- uma plotagem de resíduos contra alavancas
- um gráfico das distâncias de Cook em relação à alavancagem / (1 alavancagem)
E estou me perguntando que outras extensões comuns / úteis dos gráficos atuais existem para modelos lineares, e como elas podem ser feitas em R? (links para artigos de pacotes também são bem-vindos)
Portanto, a função boxcox (de {MASS}) é um exemplo de outro gráfico de diagnóstico útil (e essa resposta seria ótima); no entanto, estou mais curioso sobre variações / extensões nos gráficos de diagnóstico padrão existentes para lm em R (embora gerais outras observações sobre o tema são sempre bem-vindas).
Aqui estão alguns exemplos simples do que quero dizer:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Plotar os resíduos versus cada um dos potenciais x
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Para adicionar a linha 0-1 (como essa linha é chamada em inglês ?!) ao qqplot para ver quanto a qqline se desvia dela
plot(fit, which = 2); abline(0,1, col = "green")
Plotar o gráfico qq usando resíduos estudados externamente
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Tal Galili
fonte
fonte
Respostas:
O pacote
car
possui várias funções úteis para gráficos de diagnóstico de modelos lineares e lineares generalizados. Comparado aos gráficos R de baunilha, eles geralmente são aprimorados com informações adicionais. Eu recomendo que você tenteexample("<function>")
as seguintes funções para ver como são os gráficos. Todas as parcelas são descritas em detalhes no capítulo 6 da Fox & Weisberg. 2011. Um companheiro R para regressão aplicada. 2nd ed.residualPlots()
plota os resíduos de Pearson em relação a cada preditor (gráficos de dispersão para variáveis numéricas, incluindo um ajuste de Lowess, gráficos de caixa para fatores)marginalModelPlots()
exibe gráficos de dispersão da variável de resposta em relação a cada preditor numérico, incluindo um ajuste de LowessavPlots()
exibe gráficos de regressão parcial: para cada preditor, este é um gráfico de dispersão de a) os resíduos da regressão da variável resposta em todos os outros preditores contra b) os resíduos da regressão do preditor em relação a todos os outros preditoresqqPlot()
para um gráfico quantil-quantil que inclua um envelope de confiançainfluenceIndexPlot()
exibe cada valor para a distância de Cook, o valor do chapéu, o valor de p para o teste externo e o resíduo estudantil em um gráfico de picos em relação ao índice de observaçãoinfluencePlot()
fornece um gráfico de bolhas de resíduos estudantis em relação aos valores de chapéu, com o tamanho da bolha correspondente à distância de Cook, também verdfbetaPlots()
eleveragePlots()
boxCox()
exibe um perfil da probabilidade de log para o parâmetro de transformação em uma transformação de potência Box-CoxcrPlots()
é para parcelas componentes + residuais, uma variante das quais são parcelas CERES (combinando expectativas condicionais e residuais), fornecidas porceresPlots()
spreadLevelPlot()
é para avaliar a variação de erro não constante e exibe resíduos estudantis absolutos em relação aos valores ajustadosscatterplot()
fornece gráficos de dispersão muito aprimorados, incluindo gráficos de caixas ao longo dos eixos, elipses de confiança para a distribuição bivariada e linhas de previsão com faixas de confiançascatter3d()
é baseado no pacotergl
e exibe gráficos de dispersão 3D interativos, incluindo elipsóides de confiança de malha de arame e planos de previsão, certifique-se de executarexample("scatter3d")
Além disso, dê uma olhada no
bplot()
pacoterms
para outra abordagem para ilustrar a distribuição comum de três variáveis.fonte
Esta resposta se concentra no que está disponível na base R, em vez de nos pacotes externos, embora eu concorde que vale a pena adotar o pacote da Fox.
A função
influence()
(ou seu invólucroinfluence.measures()
) retorna a maior parte do que precisamos para o diagnóstico do modelo, incluindo estatísticas com jacknifed. Como afirmado em Chambers and Hastie Statistical Models in S (Wadsworth & Brooks, 1992), ele pode ser usado em combinação comsummary.lm()
. Um dos exemplos fornecidos no chamado "livro branco" (pp. 130-131) permite calcular resíduos padronizados (resíduos com igual variação) e estudados (o mesmo com uma estimativa diferente para SE), DFBETAS (mudança no coeficientes dimensionados pelo SE para os coeficientes de regressão), DFFIT (alteração no valor ajustado quando a observação é interrompida) e DFFITS (o mesmo, com variação unitária) medem sem muita dificuldade.Com base no seu exemplo e definindo os seguintes objetos:
podemos calcular as quantidades acima da seguinte maneira:
(Esta é a Tabela 4.1 , p. 131.)
Chambers e Hastie fornecem o seguinte código S / R para calcular o DFBETAS:
Por que eu mencionei essa abordagem? Porque, primeiro, acho isso interessante do ponto de vista pedagógico (é o que estou usando ao ministrar cursos introdutórios de estatística), pois permite ilustrar o que pode ser calculado a partir da saída de um modelo linear ajustado ajustado em R (mas o mesmo seria aplicar com qualquer outro pacote estatístico). Segundo, como as quantidades acima serão retornadas como vetores ou matrizes simples em R, isso também significa que podemos escolher o dispositivo gráfico que queremos --- treliça ou ggplot --- para exibir essas estatísticas ou usá-las para aprimorar um conjunto existente. plot (por exemplo, realce os valores DFFITS em um gráfico de dispersão variando o tamanho do ponto
cex
).fonte