아래에 표시된 내 종속 변수는 내가 알고있는 재고 분포와 맞지 않습니다. 선형 회귀는 이상한 Y로 예측 된 Y와 관련하여 다소 비정규의 오른쪽으로 치우친 잔차를 생성합니다 (2 차 플롯). 가장 유효한 결과와 최상의 예측 정확도를 얻을 수있는 변형이나 다른 방법에 대한 제안이 있습니까? 가능한 경우 5 가지 값 (예 : 0, lo %, med %, hi %, 1)으로 분류되는 서투른 피하고 싶습니다.
아래에 표시된 내 종속 변수는 내가 알고있는 재고 분포와 맞지 않습니다. 선형 회귀는 이상한 Y로 예측 된 Y와 관련하여 다소 비정규의 오른쪽으로 치우친 잔차를 생성합니다 (2 차 플롯). 가장 유효한 결과와 최상의 예측 정확도를 얻을 수있는 변형이나 다른 방법에 대한 제안이 있습니까? 가능한 경우 5 가지 값 (예 : 0, lo %, med %, hi %, 1)으로 분류되는 서투른 피하고 싶습니다.
답변:
검열 회귀 분석 방법은 이와 같은 데이터를 처리 할 수 있습니다. 그들은 잔차 가 일반적인 선형 회귀에서와 같이 작동 한다고 가정 하지만 수정되었습니다.
(왼쪽 검열) : 데이터와 무관하지만 (사례에 따라 다를 수있는) 낮은 임계 값보다 작은 모든 값은 정량화되지 않았습니다. 그리고 / 또는
(오른쪽 검열) : 데이터와 무관 한 (그러나 경우에 따라 다를 수있는) 높은 임계 값보다 큰 모든 값은 정량화되지 않았습니다.
"정량화되지 않음"은 값이 임계 값 이하 (또는 그 이상)에 해당하는지 여부를 알고 있지만 그 전부입니다.
피팅 방법은 일반적으로 최대 가능성을 사용합니다. 벡터 해당하는 반응 대한 모형 이 다음과 같은 경우
if 과 PDF (여기서 는 "불량 매개 변수") 와 공통 분포 를 가지며, 검열이 없으면 관측의 로그 가능성 은 다음과 같습니다.
검열이 존재하면 사례를 세 개의 클래스로 나눌 수 있습니다. 인덱스 ~ 경우, 는 더 낮은 임계 값을 포함하고 왼쪽 검열 된 데이터를 나타냅니다 . 인덱스 내지 에 대해, 가 정량화되고; 나머지 인덱스의 경우, 는 상위 임계 값을 포함하고 올바른 검열 된 데이터를 나타냅니다 . 로그 우도는 이전과 같은 방식으로 얻습니다. 확률의 곱에 대한 로그입니다.
이것은 의 함수로 수치 적으로 최대화됩니다 .
내 경험상 데이터의 절반 미만이 검열되면 그러한 방법이 효과적 일 수 있습니다. 그렇지 않으면 결과가 불안정 할 수 있습니다.
다음은 R
censReg
패키지 를 사용하여 OLS와 검열 된 결과가 많은 데이터에서도 어떻게 다를 수 있는지를 보여주는 간단한 예 입니다. 문제의 데이터를 질적으로 재생산합니다.
library("censReg")
set.seed(17)
n.data <- 2960
coeff <- c(-0.001, 0.005)
sigma <- 0.005
x <- rnorm(n.data, 0.5)
y <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen <- y
y.cen[y < 0] <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))
주목해야 할 주요 사항은 매개 변수입니다. 실제 기울기는 , 실제 절편은 , 실제 오류 SD는 입니다.− 0.001 0.005
둘 다 사용 lm
하고 censReg
한 줄에 맞추 겠습니다 .
fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)
로 주어진이 검열 된 회귀의 결과는 다음 print(fit)
과 같습니다.
(Intercept) x sigma
-0.001028 0.004935 0.004856
이들은 정확한 값 현저히 가까운 , , 및 각각.0.005 0.005
fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)
로 주어진 OLS 적합 print(fit.OLS)
은
(Intercept) x
0.001996 0.002345
멀리서도 가까이 있지 않습니다! 에 의해보고 된 추정 표준 오차 summary
는 실제 값의 절반보다 작습니다. 이러한 종류의 편향은 많은 검열 된 데이터를 갖는 전형적인 회귀입니다.
비교를 위해 회귀를 정량화 된 데이터로 제한합니다.
fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)
(Intercept) x[0 <= y & y <= 0.01]
0.003240 0.001461
더 나쁜!
몇 가지 그림이 상황을 요약합니다.
lineplot <- function() {
abline(coef(fit)[1:2], col="Red", lwd=2)
abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")
"가설 데이터"와 "검열 된 데이터"플롯의 차이점 은 전자에서 거나 보다 높은 모든 y- 값 이 각각의 임계 값으로 이동하여 후자의 플롯을 생성한다는 것입니다. 결과적으로, 검열 된 데이터가 모두 하단과 상단을 따라 정렬되어있는 것을 볼 수 있습니다.0.01
빨간색 실선은 검열 된 데이터에 기반한 검열 된 맞춤 , OLS가 맞는 파선으로 된 파란색 선 입니다. 녹색 점선은 수량화 된 데이터에만 적합합니다. 파란색과 초록색 선이 눈에 띄게 불량하고 빨간색 (검열 된 회귀 적합)의 경우 오른쪽 만 보입니다. 오른쪽의 히스토그램 은이 합성 데이터 세트 의 값이 실제로 질문의 값과 동일 하다는 것을 확인합니다 (평균 = , SD = ). 가장 오른쪽 막대 그래프는 막대 그래프의 중앙 (양자화) 부분을 자세히 보여줍니다.0.0032 0.0037
값이 항상 0과 1 사이입니까?
그렇다면 베타 배포 및 베타 회귀를 고려할 수 있습니다.
그러나 데이터로 이어지는 프로세스를 생각해야합니다. 당신은 또한 0과 1 팽창 모델을 할 수 있습니다 (0 팽창 모델이 일반적입니다, 당신은 아마 자신에 의해 1 팽창 팽창해야 할 것입니다). 큰 차이는 이러한 스파이크가 많은 수의 정확한 0과 1을 나타내거나 0과 1에 가까운 값을 나타내는 경우입니다.
최선의 방법을 찾으려면 현지 통계 전문가 (비공개 계약서와 함께 데이터가 제공되는 위치에 대해 자세히 논의 할 수 있음)와 상담하는 것이 가장 좋습니다.
와 일치에서 그렉 눈의 조언 나는 베타 모델 (A 스미 & verkuilen, 2006 참조 아니라 같은 상황에서 유용 들었어요 더 나은 레몬 스 퀴저 (뿐만 아니라 분위수 회귀) Bottai 등., 2010 )하지만, 이러한 바닥과 천장의 효과가 부적절 할 수 있습니다 (특히 베타 회귀).
또 다른 대안은 검열 된 회귀 모델, 특히 Tobit Model의 유형을 고려하는 것입니다 . 여기서 관측 된 결과는 연속적인 (그리고 아마도 정상적인) 일부 잠재 잠재 변수에 의해 생성되는 것으로 간주됩니다. 히스토그램을 고려할 때이 기본 연속 모델이 합리적이라고 말하지는 않지만 분포 (바닥을 무시)가 장비의 낮은 값에서 더 높은 밀도를 가지며 천천히 더 높은 값으로 감소하는 것을 볼 때 약간의 지원을 찾을 수 있습니다 가치.
운이 좋으면 검열이 너무 극적으로 진행되어 극단적 인 버킷 내에서 유용한 정보를 많이 복구하는 것은 상상하기 어렵습니다. 샘플의 거의 절반이 바닥과 천장 상자에 들어간 것 같습니다.