如何在R中生成偏态正态分布的随机数?

2024-03-25

我正在尝试生成 1000 组 130 个随机数,这些随机数符合以下数字的偏态正态分布:

-10.4, -9.3, -6.8, -4.8, -5.7, 5.8, -4.5, -3.4, -2, 0.3, -0.4, -4.1, -6.9, -5.9, -2.5, -2, -2.8, -3.2, -4.4, -2, -1.4, 0.9, -1, -4.1, -11.7, 0.1

这些数字的平均值为 -3.99,标准差为 3.17,偏度为 -0.71,峰度为 0.22。

为了获得 1000 组 130 个随机数,我尝试了以下方法:

install.packages("sn")
library(sn)

p <- rmsn(n = 130, 
          xi = rep(-3.99, 1000), 
          Omega = diag(1000), 
          alpha = rep(-0.71, 1000), 
          tau = -0.71)

我得到 1000 个由 130 个随机数组成的向量,平均值为 -3.99。但是,它们没有偏斜 -0.71,而且我不知道如何将标准差设置为 3.17 或将峰度设置为 0.22。

任何帮助将非常感激!


具有功能cp2dp您可以将总体平均值、总体标准差和总体偏度转换为参数xi, omega and alpha的偏斜正态分布。

library(sn)
params <- cp2dp(c(-3.99, 3.17, -0.71), "SN")
sims <- replicate(1000, rsn(130, dp = params))

SN 系列仅支持 -0.99527 和 0.99527 之间的偏差。在此范围之外,需要 ST 系列,这需要第四个变量:峰度:

library(sn)
params <- cp2dp(c(-3.99, 3.17, -1.71, 2.37), "ST")
sims <- replicate(1000, rst(130, dp = params))

请注意在这种情况下使用 rst 而不是 rsn。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在R中生成偏态正态分布的随机数? 的相关文章

随机推荐