我正在尝试生成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)
我得到130个随机数的1000个向量,均值-3.99。但是,它们没有偏斜-0.71,我也不知道如何将标准偏差设置为3.17或将峰度设置为0.22。
任何帮助将不胜感激!
答案 0 :(得分:4)
使用函数cp2dp
,您可以将总体平均值,总体标准偏差和总体偏度转换为偏度的参数xi
,omega
和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。