R直方图导致空图

R直方图导致空图,r,histogram,R,Histogram,我是一名初级R程序员,试图绘制保险索赔数据集的柱状图,该数据集包含100000多个严重倾斜的观测值(平均值=61000美元,中位数=20000美元,最大值=1500万美元) 我已经提交了以下代码来绘制$0-$100000域上的adj_unl_索赔变量: hist(test$adj_unl_claim, freq=FALSE, ylim=c(0,1), xlim=c(0,100000), prob=TRUE, breaks=10, col='red') 结果是一个有轴但没有直方图条的

我是一名初级R程序员,试图绘制保险索赔数据集的柱状图,该数据集包含100000多个严重倾斜的观测值(平均值=61000美元,中位数=20000美元,最大值=1500万美元)

我已经提交了以下代码来绘制$0-$100000域上的adj_unl_索赔变量:

hist(test$adj_unl_claim, freq=FALSE, ylim=c(0,1), xlim=c(0,100000), 
     prob=TRUE, breaks=10, col='red')
结果是一个有轴但没有直方图条的空图-只是一个空图


我怀疑这个问题与我的数据的扭曲性质有关,但我尝试了break和xlim的每一种组合,但都没有效果。非常感谢任何解决方案

如果设置了freq=FALSE,则会得到概率密度的直方图。这些可能远小于1。因此,直方图条可能会沿着x轴打印得非常小。在不设置ylim的情况下重试,R将自动计算合理的y轴限制


还要注意的是,设置xlim不会改变实际的绘图,只会改变您看到的部分。因此,如果你的情节中有一些突破了100000的限制,你可能不会看到10次突破。实际上,您可能希望先将数据子集以排除100000以上的值,然后对缩减后的数据集进行直方图分析,以获得所需的绘图。也许,我不确定你的目标是什么。

根据泰勒的一些建议,这可能会给你一些可以玩的东西

> 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     4261    20080    61730    67790 15000000 
> 
>hs-br
>历史(索赔,xlim=c(0,hs),freq=FALSE,breaks=br*max(索赔)/hs,col='red')
> 
>长度(索赔[索赔总额](索赔[索赔两件事需要尝试:

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

将日志转换您的索赔大小,有效地将长尾带回来。

谢谢,对我的数据进行了子集处理。我还添加了两行代码,用于计算每个直方图箱中的观察值比例,然后用特定的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')
k
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')