lm에 대한 기본 진단 플롯의 가능한 확장은 무엇입니까 (R 및 일반적으로)?


11

나는 plot.lm 함수에 비트를 파기 시작했습니다 .이 함수는 lm에 대한 6 개의 플롯을 제공합니다.

  1. 적합치에 대한 잔차 그림
  2. 적합치에 대한 sqrt (| 잔차 |)의 스케일 위치 플롯
  3. 일반 QQ 플롯, Cook의 거리와 행 레이블의 플롯
  4. 레버리지에 대한 잔차 그림
  5. 레버리지 / (1- 레버리지)에 대한 Cook의 거리 플롯

그리고 선형 모델에 대해 현재 플롯의 다른 공통 / 유용한 확장이 무엇인지 궁금 하며 R에서 어떻게 수행 할 수 있습니까? (패키지 기사 링크도 환영합니다)

따라서 boxcox 함수 ({MASS})는 또 다른 유용한 진단 플롯의 예입니다 (그러한 답변은 훌륭 할 것입니다) .R의 lm에 대한 기존 기본 진단 플롯의 변형 / 확장에 대해 더 궁금합니다. 주제에 대한 다른 언급은 항상 환영합니다).

다음은 내가 의미하는 간단한 예입니다.

#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)

잔차 대 각 전위 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

qqplot에 0-1 행 (이 라인은 영어로 어떻게 호출됩니까?!)을 추가하여 qqline이 얼마나 많이 벗어나는지 확인

plot(fit, which = 2); abline(0,1, col = "green")

외부 적으로 학생 화 된 잔차를 사용하여 QQ 플롯을 플롯하려면

# 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

나는 본질적으로 lmer 객체에 대해이 질문을했다 : stats.stackexchange.com/questions/17785/… 추가 답변이 나올 것으로 기대합니다.
Michael Bishop

답변:


17

패키지 car에는 선형 및 일반화 된 선형 모델의 진단 플롯에 유용한 기능이 많이 있습니다. 바닐라 R 플롯과 비교할 때 종종 추가 정보로 향상됩니다. example("<function>")다음 함수를 사용하여 플롯의 모양을 확인하는 것이 좋습니다 . 모든 음모는 Fox & Weisberg의 6 장에 자세히 설명되어 있습니다. 응용 회귀 분석에 대한 R 동반자. 제 2 판

  • residualPlots() 각 예측 변수에 대한 Pearson 잔차를 플로팅합니다 (낮은 적합도를 포함한 숫자 변수의 산점도, 요인의 상자 그림).
  • marginalModelPlots() Lowess fit을 포함하여 각 수치 예측 변수에 대한 반응 변수의 산점도를 표시합니다
  • avPlots() 부분 회귀 그림을 표시합니다. 각 예측 변수에 대해 a) 모든 다른 예측 변수에 대한 반응 변수의 회귀 잔차에 대한 잔차 b) 다른 모든 예측 변수에 대한 예측 변수의 회귀 잔차
  • qqPlot() 신뢰 엔벨로프를 포함하는 Quantile-quantile 플롯
  • influenceIndexPlot() Cook의 거리, 모자-값, 이상치 테스트의 p- 값 및 관측 지수에 대한 스파이크 플롯의 학생 화 된 잔차에 대한 각 값을 표시합니다.
  • influencePlot()쿡의 거리에 해당하는 기포의 크기에 대한 값 모자 스튜던트 잔차 버블 플롯을 제공 참조 dfbetaPlots()leveragePlots()
  • boxCox() 변환 매개 변수 대한 로그 우도 프로파일을 표시합니다.λ
  • crPlots() 구성 요소 + 잔차 그림 용이며, 변형은 CERES 그림 (조건부 기대 값과 잔차 결합)으로 제공됩니다. ceresPlots()
  • spreadLevelPlot() 일정하지 않은 오차 분산을 평가하기위한 것이며 적합치에 대해 절대적으로 학생 화 된 잔차를 표시합니다
  • scatterplot() 축을 따라 상자 그림을 채우는 크게 강화 된 산점도, 이변 량 분포에 대한 신뢰 타원 및 신뢰 대역이있는 예측 선을 제공합니다.
  • scatter3d()패키지 기반 rgl이며 와이어 메시 신뢰 타원체 및 예측 평면을 포함하여 대화식 3D 산점도를 표시합니다.example("scatter3d")

또한 세 가지 변수의 공통 분포를 설명하는 또 다른 접근법에 대해서는 bplot()패키지 rms를 살펴보십시오 .


1
(+1) 그것은 우리 모두에게 유용한 아주 좋은 개요입니다!
chl

Caracal-이것은 훌륭한 목록입니다, 감사합니다! 당신에 의해 벌금 경우, 나는 (더 많은 사람들이, 아마도, 자신의 의견을 추가 한 후) 재 게시 내 블로그에이 작업을 끝낼 수 있습니다
탈 Galili 한

@TalGalili 물론입니다. 괜찮습니다.
caracal

4
여기에 몇 가지 예가 있습니다 : statmethods.net/stats/rdiagnostics.html
Michael Bishop

Caracal-다시 한 번 감사드립니다 :) Michael-좋은 연결입니다. 답변으로 추가하고 싶은 경우 (그리고 어쩌면 caracal 답변에 표시되지 않은 관련 그림 중 일부를 복사하여 붙여 넣기)-기꺼이 투표하겠습니다 ...
Tal Galili

7

이 답변은 Fox 패키지가 채택 할 가치가 있음에 동의하지만 외부 패키지가 아닌 기본 R에서 사용할 수있는 것에 중점을 둡니다.

이 함수 influence()(또는 래퍼 influence.measures())는 jacknifed 통계를 포함하여 모델 진단에 필요한 대부분을 반환합니다. S 의 Chambers and Hastie 's Statistical Models (Wadsworth & Brooks, 1992)에 명시된 바와 같이,와 조합하여 사용할 수 있습니다 summary.lm(). 소위 "백서"(pp. 130-131)에 제공된 예 중 하나는 표준화 된 (동일한 분산의 잔차) 및 학생 화 된 (SE의 다른 추정치와 동일) 잔차 DFBETAS ( 회귀 계수에 대해 SE에 의해 스케일링 된 계수), DFFIT (관찰이 드롭 될 때 적합치의 변화), 및 DFFITS (단위 분산과 동일)는 큰 어려움없이 측정된다.

예제를 기반으로 다음 객체를 정의합니다.

lms <- summary(fit)
lmi <- influence(fit)
e <- residuals(fit)
s <- lms$sigma
xxi <- diag(lms$cov.unscaled)
si <- lmi$sigma
h <- lmi$hat
bi <- coef(fit) - coef(lmi)

위의 수량을 다음과 같이 계산할 수 있습니다.

std. residuals    e / (s * (1-h)^.5
stud. residuals   e / (si * (1-h)^.5
dfbetas           bi / (si %o% xxi^.5 
dffit             h * e / (1-h)
dffits            h^.5 * e / (si * (1-h))

( 표 4.1 , 131 페이지)

Chambers와 Hastie는 DFBETAS 계산을 위해 다음 S / R 코드를 제공합니다.

dfbetas <- function(fit, lms = summary(fit), lmi = lm.influence(fit)) {
  xxi <- diag(lms$cov.unscaled)
  si <- lmi$sigma
  bi <- coef(fit) - coef(lmi)
  bi / (si %o% xxi^0.5)
}

왜 그 접근법을 언급합니까? 먼저, 나는 이것이 교육학적인 관점에서 흥미 롭다는 것을 알게 되었기 때문에 (그것은 기초 통계 과정을 가르 칠 때 내가 사용하는 것입니다) R에 맞는 적합 선형 모델의 출력에서 ​​계산할 수있는 것을 설명 할 수 있습니다. 다른 통계 패키지와 함께 적용). 둘째, 위의 수량이 R에서 간단한 벡터 또는 행렬로 반환되므로, 이러한 통계를 표시하거나 기존 통계를 향상시키기 위해 원하는 그래픽 장치 (예 : 격자 또는 ggplot)를 선택할 수 있습니다. 플롯 (예 : 다양한 포인트 크기로 산점도에서 DFFITS 값을 강조 표시 cex)


매우 유익하고 유용한 답변. 통계 논리를 문서화 한 이후 R에 초점을 두는 것은 실제로 그 가치를 떨어 뜨리지 않습니다.
DWin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.