포아송 회귀에 대한 좋은 시각화는 무엇입니까?


11

코드 결함을 근접성과 같은 코드 복잡성 메트릭과 연관시키고 싶습니다. 일반적인 모델 중 하나는 이것을 Poisson 프로세스로 보는 것인데, 여기서 지속 시간은 코딩에 소요되는 시간과 밀도는 코드 복잡성의 함수입니다. 회귀를 수행하고 유의성 값 등을 얻을 수 있습니다.

그러나 결과를 시각화하기가 어렵습니다 (수학적으로 기울어지지 않은 동료에게는 더 어렵습니다). 선형 추세 인 경우 이상 치를 볼 수있는 좋은 방법이 있습니까? (R 패키지에 대한 링크는 높이 평가됩니다.)

예를 들어, 나는 단지 음모를 꾸밀 수 Defects / Time ~ Complexity는 있지만 이것은 상당히 시끄럽고 Defects불연속적이고 매우 작기 때문에 추세를보기가 어렵습니다. 내가 생각한 것 중 하나는 데이터를 Quantile로 분할 한 다음 Quantile 당 회귀를 수행하고 결과 밀도를 플로팅 할 수 있다는 것입니다. 특히 데이터가 정상적으로 분포되어 있지 않기 때문에 이것이 얼마나 유효한지 확실하지 않습니다. Quantile이 무엇인지 사람들을 오도합니다.

답변:


6

모형을 적합하게 만든 후에는 예측 결함을 변수로 사용하여 다른 표준 기술에 의미가있는 다른 기법을 비교해보십시오. 연속 변수라는 장점이 있으므로 작은 차이도 볼 수 있습니다. 예를 들어, 사람들은 둘 다 1로 반올림하더라도 1.4와 0.6의 예상 결함 수의 차이를 이해할 것입니다.

예측 된 값이 두 변수에 어떻게 의존하는지에 대한 예를 보려면 예측 된 결함을 표시하기 위해 두 축과 색상 및 윤곽으로 복잡성 v. 실제 데이터 포인트를 맨 위에 겹쳐 놓습니다.

아래 그림은 연마와 범례가 필요하지만 시작점이 될 수 있습니다.

여기에 이미지 설명을 입력하십시오

대안은 기존 가우스 응답 회귀에서 더 친숙한 추가 변수 도표 또는 부분 회귀 도표입니다. 이들은 자동차 라이브러리에서 구현됩니다. 효과적으로 나머지 설명 변수가 응답 및 설명 변수 모두에 대한 기여를 제거한 후 응답의 남은 것과 설명 변수 중 하나의 남은 것 사이의 관계를 효과적으로 보여줍니다. 내 경험상 대부분의 비 통계적 청중들은 이것들을 이해하기가 어렵다는 것을 알게됩니다 (물론 내 설명이 좋지 않을 수도 있습니다).

여기에 이미지 설명을 입력하십시오

#--------------------------------------------------------------------
# Simulate some data
n<-200
time <- rexp(n,.01)
complexity <- sample(1:5, n, prob=c(.1,.25,.35,.2,.1), replace=TRUE)
trueMod <- exp(-1 + time*.005 + complexity*.1 + complexity^2*.05)
defects <- rpois(n, trueMod)
cbind(trueMod, defects)


#----------------------------------------------------------------------
# Fit model
model <- glm(defects~time + poly(complexity,2), family=poisson)
# all sorts of diagnostic checks should be done here - not shown


#---------------------------------------------------------------------
# Two variables at once in a contour plot

# create grid
gridded <- data.frame(
    time=seq(from=0, to=max(time)*1.1, length.out=100),
    complexity=seq(from=0, to=max(complexity)*1.1, length.out=100))

# create predicted values (on the original scale)
yhat <- predict(model, newdata=expand.grid(gridded), type="response")

# draw plot
image(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE),
    xlab="Time", ylab="Complexity", main="Predicted average number of defects shown as colour and contours\n(actual data shown as circles)")
contour(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE), add=TRUE, levels=c(1,2,4,8,15,20,30,40,50,60,70,80,100))

# Add the original data
symbols(time, complexity, circles=sqrt(defects), add=T, inches=.5)

#--------------------------------------------------------------------
# added variable plots

library(car)
avPlots(model, layout=c(1,3))

2

따라서 카운트 데이터 변수 "결함"에 대해 포아송 회귀 분석을 실행하고 중요한 차이를 시각화하려고합니다. 회귀가 조건부 평균 , 여기서 는 결함이고 는 코드 복잡성과 같은 회귀 변수입니다.y i x i이자형[와이나는|엑스나는]와이나는엑스나는

이를 시각화하는 가장 쉬운 방법은 에 대해 두 가지 다른 값 ( 예 : 높은 복잡도 및 낮은 복잡도)을 다음 두 복잡도 수준에 대해 예측 빈도 등을 것입니다. 결과 히스토그램은 슬라이드 3에서 다음과 같이 표시 됩니다. 차이가 강하면 해당 주파수의 히스토그램이 매우 다르게 보일 것입니다 (예 : 복잡도가 낮은 경우 0, 복잡도가 높은 경우 많은 결함). 이 두 히스토그램을 오버레이하거나 예측 된 결함의 차이를 표시하는 것이 좋을 수 있습니다.y i = 0 , y i = 1엑스나는와이나는=0,와이나는=1

를 2 개의 범주로 줄이는 것이 지나치게 단순화 된 것 같다면 개별 세트에 대해 동일한 작업을 수행 할 수 있지만 한 번에 청중에게 4 개 이상의 그래프를 던지면 좋은 시각적 표현을 할 수 없습니다. .x 엑스나는엑스나는

또는 가 연속적이면 해당 에 따라 하나의 예측 카운트 (예 : 결함 = 0)를 표시 할 수 있습니다. 어쩌면 결과와 일치하는 멋진 모노톤 기능을 얻을 수 있습니다.x 엑스나는엑스나는

Btw : 데이터에 부정적인 이항 회귀 분석을 수행 했습니까? 결과가 매우 다른가요? 그렇다면 포아송 가정 (조건부 평균이 조건부 분산과 동일 함)이 너무 제한적일 수 있습니다 ( "과대 산포"참조). 예를 들어 변수 "결함"에 많은 0이있는 경우가 이에 해당합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.