2011-03-24 3 views
2

저는 심하게 비뚤어지는 100,000 개 이상의 관측치 (mean = $ 61,000, median = $ 20,000, max value = $ 15M)가있는 보험 청구 데이터 세트의 히스토그램을 플로팅하려고하는 초보자 R 프로그래머입니다.R 히스토그램 결과 빈 그래프

나는 $ 0- $ 10 만 도메인을 통해 adj_unl_claim 변수를 그래프로 다음 코드를 제출 한 :

hist(test$adj_unl_claim,freq=FALSE,ylim=c(0,1),xlim=c(0,100000),prob=TRUE,breaks=10,col='red') 

결과로 축 있지만 히스토그램 바 빈 그래프 인 - 그냥 빈 그래프.

문제가 내 데이터의 왜곡 된 성격과 관련이 있다고 생각하지만 모든 휴식 시간 및 xlim 조합을 시도했지만 아무런 효과가 없습니다. 모든 솔루션을 많이 주셔서 감사합니다!

답변

7

freq = FALSE로 설정하면 확률 밀도의 히스토그램을 얻게됩니다. 이것은 아마도 1보다 훨씬 적습니다. 결과적으로 히스토그램 막대가 X 축을 따라 초소형으로 인쇄됩니다. ylim을 설정하지 않고 다시 시도하면 R은 적절한 y 축 한계를 자동으로 계산합니다.

또한 xlim을 설정해도 실제 플롯이 변경되지는 않으며 그 중 얼마만큼 변경되는지 알 수 있습니다. 그래서 당신의 음모에서 100000 한계를 넘는다면 실제로 10 휴식을 볼 수 없습니다. 실제로 100,000을 초과하는 값을 제외하도록 데이터의 하위 집합을 만든 다음 축소 된 데이터 집합에 대한 히스토그램을 사용하여 원하는 플롯을 얻을 수 있습니다. 어쩌면 당신의 목적이 여기에 있는지 모르겠습니다.

1

타일러 (Tyler)의 제안을 사용하여 게임을 즐길 수도 있습니다. hist

Claim histogram

이 가진 문제는 히스토그램 후미 비록이 의사 데이터의 청구항의 약 82 %는 단지 약 31 %를 커버이다 같은 것을 제조

> claim <- c(15000000, rexp(99999, rate = 1/400)^1.76) 
> summary(claim) 
    Min. 1st Qu. Median  Mean 3rd Qu.  Max. 
     0  4261 20080 61730 67790 15000000 
> 
> hs <- 100000  # highest value to show on histogram 
> br <- 10   # number of bars to show on histogram 
> 
> hist(claim, xlim = c(0,hs), freq = FALSE, breaks = br*max(claim)/hs, col='red') 
> 
> length(claim[claim<hs])/length(claim) #proportion of claims shown 
[1] 0.82267 
> sum(claim[claim<hs]) /sum(claim) #proportion of value shown 
[1] 0.3057994 

청구의 가치 그래서 당신이 원하는 유일한 요점은 대부분의 주장이 작다는 것이 아니라면 다른 그래프를 고려하는 것이 좋습니다.

내 생각에 대부분의 클레임은 상당히 적지 만 비용의 대부분은 큰 클레임에 해당합니다. 큰 클레임은 스케일을 확장하더라도 히스토그램에 나타나지 않습니다. 예를 들어, 0- $ 1000 및 $ 1M +를 포함하여 서로 다른 폭의 그룹으로 클레임을 떼어 내고 (a) 각 그룹에 속하는 클레임의 비율과 (b) 클레임의 가치 중 어떤 비율이 하락하는지 각 그룹으로

1

두 가지 시도 :

hist(test$adj_unl_claim[test$adj_unl_claim < 100000]) 

미만 $ 100,000의 모든 주장의 히스토그램을 그릴 것입니다. 이렇게하면 대량의 데이터를 표시하기 위해 꼬리가 생략됩니다. 또한,

hist(log(test$adj_unl_claim)) 

는. 효과적으로 다시 긴 꼬리를 가져 오는

1

감사를 청구 크기를 로그 변환 내 데이터가 속임수를 썼는지 부분 집합 것입니다. 각 히스토그램 빈의 관측 비율을 계산 한 다음 두 개의 특정 y 및 x 하위 집합을 사용하여 두 줄의 코드를 추가했습니다.

k<-hist(gb2_agg$adj_unl_claim,prob=TRUE,breaks=100000) 
k$counts<-k$counts/sum(k$counts) 
plot(k,ylim=c(0,.02),xlim-c(0,50000),col='blue')