使用特定矩创建分布曲线

4

有没有一种方法可以根据第1到4阶矩(均值、方差或标准差、偏度和峰度)创建分布曲线?这是一个描述性统计表格。第五个变量具有更强的正偏斜和更大的峰度,我认为可能需要使用非正态分布。

dput(summarystats_factors)
structure(list(ERVALUEY = c(1.21178722715092, 8.4400515531338, 
0.226004674926861, 3.89328347004421), ERVOLY = c(0.590757887612924, 
7.48697754999463, 0.295973723450469, 3.31326615805655), ERQUALY = c(1.59367031426668, 
4.57371901763411, 0.601172123904339, 3.89080479205755), ERMOMTY = c(3.09719686678745, 
7.01446175391253, 0.260638252621096, 3.28326189430607), ERSIZEY = c(1.69935727981412, 
6.1917295410928, 1.24021163316834, 6.23493767854042), Moment = structure(c("Mean", 
"Standard Deviation", "Skewness", "Kurtosis"), .Dim = c(4L, 1L
))), row.names = c(NA, -4L), class = "data.frame")

Summary Stats Table


2
只是提醒一下 - 对于矩的计算有多个定义,因此请确保所使用的计算与重新创建分布的算法相匹配。 - Reeza
查看此帖子以了解如何使用离散分布进行操作。要使它们连续,您可以添加正态分布噪声。https://stats.stackexchange.com/a/483215 - BigBendRegion
2个回答

2
我们可以使用PearsonDS::dpearson来使用曲线。请注意,moments=参数需要精确的顺序平均数、方差、偏度、峰度,因此数据的行必须相应排序(如您的示例数据所示)。请保留HTML标签。
FUN <- function(d, xlim, ylim, lab=colnames(d), main='Theoretical Distributions') {
  s <- seq(d)
  lapply(s, \(i) {
    curve(PearsonDS::dpearson(x, moments=d[, i]), col=i + 1, xlim=xlim, ylim=ylim, 
          add=ifelse(i == 1, FALSE, TRUE), ylab='y', main=main)
  })
  legend('topright', col=s + 1, lty=1, legend=lab, cex=.8, bty='n')
}

FUN(dat[-6], xlim=c(-2, 10), ylim=c(-.01, .2))

enter image description here


Data:

dat <- structure(list(ERVALUEY = c(1.21178722715092, 8.4400515531338, 
0.226004674926861, 3.89328347004421), ERVOLY = c(0.590757887612924, 
7.48697754999463, 0.295973723450469, 3.31326615805655), ERQUALY = c(1.59367031426668, 
4.57371901763411, 0.601172123904339, 3.89080479205755), ERMOMTY = c(3.09719686678745, 
7.01446175391253, 0.260638252621096, 3.28326189430607), ERSIZEY = c(1.69935727981412, 
6.1917295410928, 1.24021163316834, 6.23493767854042), Moment = structure(c("Mean", 
"Standard Deviation", "Skewness", "Kurtosis"), .Dim = c(4L, 1L
))), row.names = c(NA, -4L), class = "data.frame")

@Koalaconomist,您能具体说明哪些地方不清楚吗? - jay.sf
d, i, and dat是什么? - MacroChair
@MacroChair d 是函数参数,用于数据 dat,你可以在答案底部找到它。i 是匿名函数中使用的参数,用于 lapply 循环遍历列索引。这有帮助吗? - jay.sf
1
好的,明白了。非常感谢。 - MacroChair
你知道我怎么才能让图表交互式地选择要显示哪个数据变量吗? - MacroChair
显示剩余2条评论

1
使用PearsonDS包,pearson0系列创建“正常”分布以匹配指定的时刻,但还有其他选项可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接