ggplot은 회귀에 대한 신뢰 구간을 어떻게 계산합니까?


15

R 플로팅 패키지 ggplot2에는 관련 신뢰 대역으로 회귀선 (또는 곡선)을 플로팅하기위한 stat_smooth 라는 멋진 기능이 있습니다.

그러나 회귀 라인 (또는 "방법")의 모든 시간에 대해이 신뢰 대역이 어떻게 생성되는지 정확하게 파악하기가 어렵습니다. 이 정보를 어떻게 찾을 수 있습니까?


2
링크에서 "세부 사항"섹션을 참조하십시오.
Stéphane Laurent

1
@ StéphaneLaurent : 해당 섹션을 읽었지만 점을 연결하는 데 여전히 문제가 있습니다. 선을 피팅하기 위해 "rlm"방법을 사용합니다. 신뢰 구간은 어떻게 계산됩니까 (수학적으로 어떤 방정식 / 알고리즘?)? 그 정보를 어떻게 찾을 수 있습니까?
static_rtti

1
더 정확한 질문을해야한다고 생각합니다.
Stéphane Laurent

1
귀하의 질문은 합리적으로 정확하다고 생각하지만 귀하는 여기에 답변을 얻지 못할 것으로 생각합니다. ggplot2 Google 그룹에서 더 나은 행운을 누리 실 수 있습니다 : groups.google.com/forum/?fromgroups#!forum/ggplot2
russellpierce

답변:


22

로부터 Details도움의 섹션

계산은 (현재 문서화되지 않은) predictdf 일반 함수와 그 방법에 의해 수행됩니다. 대부분의 방법에서 신뢰 한계는 예측 방법을 사용하여 계산됩니다. 예외는 t 기반 근사를 사용하는 경우와 링크 신뢰도에서 정상 신뢰 구간이 구성되어 응답 척도로 역변환되는 glm의 경우를 제외합니다.

따라서 predictdf 는 일반적 으로을 호출 하고 스무딩 방법에 대한 stats::predict올바른 predict방법을 호출합니다 . stat_smooth 와 관련된 다른 함수 도 고려하는 것이 유용합니다.

대부분의 모델 피팅 함수 에는 모델 predict과 연관된 메소드 가 있습니다 class. 이들은 일반적으로 표준 오차의 적합 여부를 나타내는 newdata객체와 인수 se.fit를 취합니다 . ?predict자세한 내용 은을 참조 하십시오.

se
주변에 신뢰 구간 표시? (기본적으로 TRUE, 제어 수준 참조

이것은 적절한 표준 오류를 반환하기 위해 예측 방법으로 직접 전달됩니다 (방법에 따라 다름)

fullrange
적합도가 도표의 전체 범위에 걸쳐 있거나 데이터 만

예측이 평가 될 newdata값을 정의합니다.x

level 사용할 신뢰 수준 (기본적으로 0.95)

신뢰 구간은 (예를 들어, 적절한 임계 값을 정의 할 수 있도록 직접 전달 방식은 예측 predict.lm용도qt((1 - level)/2, df) 표준 오차에 곱하기 위해

n 보다 매끄럽게 평가할 포인트 수

와 함께 값 fullrange을 정의하기 위해 사용xnewdata객체 .

에 전화 내에서 stat_smooth정의 할 수있는 se부분 일치 무엇 인 se.fit(또는 se), 그리고 정의합니다 interval필요한 경우 인수.level신뢰 구간의 수준을 제공합니다 (기본값 0.95).

newdata개체가 설정에 따라 처리에서 정의되는 fullrange길이의 시퀀스n 플롯 또는 데이터의 전체 범위에있다.

귀하의 경우을 사용 rlm하면을 사용합니다 predict.rlm.

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

따라서 내부적으로 분해 및 인수 predict.lm의 적절한 스케일링을 호출 합니다.qrscale


... 및 predict.rlm은 MASS 안에 숨겨져 있으며 predictdf 호출은 모델, xseq, se 및 레벨 인수를 predict.rlm에 전달합니다. 그러나 그 값은 어디에서 왔습니까? 글쎄, 난 그 인수가 StatSmooth에 stat_smooth에서 전달 될 때 발생에 따라 달라집니다 추측 새로운 $ ... 어떤 차례로 호출에 ...
russellpierce

1
내 요점은, 당신의 대답이 올바른 방향으로 나아가는 단계이지만 OPs 질문에 대답하는 것은 처음에 생각하는 것처럼 사소한 것이 아닙니다 (하지만 코드가 현명하게 행동 할 것이라고 기대하지만 ... 완전히 추적하지 않으면 확실하지 않습니다 )
russellpierce

2
predict방법이 표준 방식으로 설정된 경우 코드가 현명하게 작동 할 것으로 예상합니다 . 첫 번째 의견에서 제기 된 문제를 해결하기 위해 답변을 수정했습니다.
mnel

@ mnel : 매우 상세하고 유용한 답변에 감사드립니다!
static_rtti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.