Eug*_*kov 5 statistics r pearson
我的目标是近似二项式变量之和的分布.我使用以下论文Ken Butler和Michael Stephens 的二项式随机变量和的分布.
我想写一个R脚本来找到Pearson逼近二项式之和.有一个R-package PearsonDS允许以简单的方式执行此操作.
所以我从论文中拿出第一个例子,试着找到这种情况下Pearson分布的密度.最后我收到一条错误消息"这些时刻没有概率分布".
你能解释一下下面的代码有什么问题吗?
library(PearsonDS)
Run Code Online (Sandbox Code Playgroud)
#define五个二项式随机变量的参数
n<-rep(5,5)
p<-seq(0.02,0.10,0.02)
Run Code Online (Sandbox Code Playgroud)
#找到前四个累积量
k.1<-sum(n*p)
k.2<-sum(n*p*(1-p))
k.3<-sum(n*p*(1-p)*(1-2*p))
k.4<-sum(n*p*(1-p)*(1-6*p*(1-p)))
Run Code Online (Sandbox Code Playgroud)
#找到偏度和峰度参数
beta.1<-k.3^2/k.2^3
beta.2<-k.4/k.2^2
Run Code Online (Sandbox Code Playgroud)
#定义时刻并计算
moments <- c(mean=k.1,variance=k.2,skewness=sqrt(beta.1),kurtosis=beta.2)
dpearson(1:7,moments=moments)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息"这些时刻没有概率分布".
您尝试在时刻插入的峰度实际上是过量峰度,即kurtosis - 3。从帮助页面dpearson():
\n\n\n矩:
\n
\n 可选向量/均值、方差、偏度、峰度列表(不是过度峰度)。
因此,添加 3beta.2将为您提供真正的峰度:
beta.1 <- (k.3^2)/(k.2^3)\nbeta.2 <- k.4/(k.2^2)\nkurt <- beta.2 + 3\n\nmoments <- c(mean = k.1, variance = k.2, skewness = beta.1, kurtosis = kurt)\ndpearson(1:7, moments=moments)\n# [1] 0.3438773545 0.2788412385 0.1295129534 0.0411140817 0.0099279576\n# [6] 0.0019551512 0.0003294087\nRun Code Online (Sandbox Code Playgroud)\n\n为了得到像论文中那样的结果,我们应该研究累积分布函数并添加 0.5 来纠正由连续分布逼近离散分布而引起的偏差:
\n\nppearson(1:7+0.5, moments = moments)\n# [1] 0.5348017 0.8104394 0.9430092 0.9865434 0.9973715 0.9995578 0.9999339\nRun Code Online (Sandbox Code Playgroud)\n\n该函数抛出错误,因为峰度和偏度之间的关系无效:峰度由偏度以以下方式确定下界:kurtosis >= (skewness)^2 - 1。证明并不漂亮,而且肯定超出了问题的范围,但如果您喜欢这种不等式的不同版本,您可以查看下面的参考资料。