在我的工作中,我需要使用正态分布来生成概率,其中这些概率的总和小于或等于1,这意味着:
生成P1,P2,..,Pt
其中P1+P2+..+Pt <= 1
我想用R
做到这一点,但我不确切知道该怎么做。
答案 0 :(得分:0)
你确定要问的是什么吗?
x <- rnorm(100)
Fn <- ecdf(x)
#plot(Fn)
Fn(max(x))
> Fn(max(x))
[1] 1
答案 1 :(得分:0)
如果我理解正确的话。如果要从4个普通随机变量生成4个概率,可以执行
x <- rnorm(4)
p <- exp(x)/sum(exp(x))
all(p<1) == TRUE
sum(p) == 1
如果你想要一个小于或等于1的总和,这里有一个可能有用的转换(不知道如何使其漂亮)。
x <- rnorm(4)
p <- exp(x)/sum(exp(x))
b<-numeric(4)
b[1]<-p[1]
b[2]<-p[2]-p[1]*p[2]
b[3]<-p[3]-p[2]*p[3]+p[1]*p[2]*p[3]
b[4]<-p[4]-p[3]*p[4]+p[2]*p[3]*p[4]-p[1]*p[2]*p[3]*p[4]
all(b<1) == TRUE
sum(b) <= 1
虽然我担心这种方法可能有偏见。现在p
的总和为1.如果有办法让每个p
成为0-1(因此总和可能是0-4),那就更好了。