我正在用 R 编写一个函数,它将计算二项分布和正态分布之间的平方和,并将数据显示为p
这是我所拥有的:
首先,我生成概率为 p (n=100) 的随机二项式分布
random_binom<-rbinom(100,100,p)
sqrt(np(1-p))
接下来,我根据正态分布找到某个随机元素等于或小于值 np(均值)和标准差的概率
d_norm<-dnorm(random_binom,p*100,sqrt(100*p*(1-p)))
然后根据二项式分布,分布中的随机值等于或小于均值的概率
d_binom<-dbinom(random_binom,100,p)
最后,我将两者相减,取平方并返回。
result<-sum((d_norm-d_binom)^2)
return(result)
现在在控制台中,我为所有这些创建了一个函数:
我的功能:
function(p){
random_binom<-rbinom(100,100,p)
d_norm<-dnorm(random_binom,p*100,sqrt(100*p*(1-p)))
d_binom<-dbinom(random_binom,100,p)
result<-sum((d_norm-d_binom)^2)
return(result)
}
我想为 p where 传递一个向量p<-(c(0:99)/100)
,但是每当我这样做时,函数都会返回
inf
而不是一个值向量。我怎样才能让 R 返回一个值向量以便我可以绘制它们?我曾尝试使用 lapply 但它以一种奇怪的格式返回数据:
[[95]]
[1] 0.01064091
[[96]]
[1] 0.01418807
[[97]]
[1] 0.02647295
[[98]]
[1] 0.05065813
[[99]]
[1] 0.1179141
[[100]]
[1] 0.7342808
这意味着每个元素都包含另一个元素,因此很难绘制图表。