找到合理的范围

时间:2013-08-08 09:26:58

标签: r math statistics

我现在正在努力奋斗几天。现在这是关于同一主题的stackoverflow的第3个问题,希望这次我的问题得到更好的定义。

我的数据分布如下:(直方图)

Histogram of the true data

x轴对应于概率范围:从0到1.

我想明智地将状态1到状态10的状态分配给概率范围。

这就是我所拥有的:

Interval <- round(quantile(datag, c(seq(0,1,by=0.10))),3)

输出:

   0%   10%   20%   30%   40%   50%   60%   70%   80%   90%  100% 
 0.000 0.008 0.015 0.024 0.036 0.054 0.080 0.124 0.209 0.397 1.000

指定0到10之间的状态:

States <- data.frame(datag, State=findInterval(datag, Interval))

head(States)

输出:状态

Probability      State
0.20585012         8
0.21202839         9
0.07087725         6
0.7109513         10
0.9641807         10

问题在于:正如您在上面所看到的,我已经说明了概率为0.2120的状态9和状态10的&gt; 0.710。我会很高兴看到prob = 0.2120状态4和prob = 0.710状态7和prob = 0.96 =状态10。

那么如何更统一地分配状态呢?

复制datag:

datag <- data.frame(Probability=rgamma(10000, shape=0.6, rate=4.8, scale=1/4.8))

编辑: @Roman:

datag <- subset(datag, Probability<=1)
编辑:@Simon

是的,我知道“切”:

table(cut(datag, breaks = c(seq(0,0.8,by=0.1))))

输出:

(0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6] (0.6,0.7] (0.7,0.8] 
125545     26625     12795      8126      5556      4108      3227      2606

如何定义休息?我在间隔之后(打破了自己),所以我可以分配对应于概率落入的区间的状态。

2 个答案:

答案 0 :(得分:3)

你的OP基本上得到了答案!不要采取错误的方式,但我认为您需要花更多时间阅读?cut的文档!如果在labels = FALSE中设置cut,则会得到每个中断对应的整数代码。

#  Set a seed for true reproducibility!
set.seed(1)
datag <- data.frame(Probability=rgamma(10000, shape=0.6, rate=4.8, scale=1/4.8))
Int <- cut( datag$Probability , breaks = seq(0 , 1 , by = 0.1 ) , lab = FALSE )
head( cbind( Prob = datag$Probability , Int ) )
            Prob Int
[1,] 0.031860645   1
[2,] 0.455054687   5
[3,] 0.134175238   2
[4,] 0.058957301   1
[5,] 0.855493999   9
[6,] 0.009144936   1

答案 1 :(得分:2)

我跑了

datag <- data.frame(Probability=rgamma(10000, shape=0.6, rate=4.8, scale=1/4.8))
datag <- subset(datag, Probability<=1)

第一个发出警告,显然你忽略了,但是后来:

如果这些应该是概率,那么就不需要第二步。但是前进

你使用了分位数; datag根本不统一,所以你得到了你得到的东西。如果您想以不同方式划分数据,可以使用cut。例如,10个班级,均匀间隔:

datagcut <- cut(datag$Probability, 10)
table(datagcut)

但是第一堂课有很多案件,而最后一班则很少。如果您愿意,可以定义自己的剪辑(参见?剪切)。