关于使用用户指定的 Mardia 1970 多元峰度值的相关非正态数据的模拟,我有两个(相关)问题。
(1) 在我的领域中,使用 Vale 和 Maurelli (1983) 开发的对标准正态随机变量 (其中 ) 其中系数和控制(单变量)偏度和峰度估计。然后通过一维边际分布实现非正态性,但无法控制多元偏度/峰度估计(如 Mardia (1970) 中所定义。所以这是我的第一个问题:
如果我只有所有单变量边际的总体值,如何获得多变量峰度的总体值?
这是我的解决方案尝试。它使用semToolsR 中的包(计算 Mardia 的度量)和lavaan包(实现 Vale & Maurelli 方法)
library(semTools)
library(lavaan)
### three variables all correlated at 0.5
model <- 'x1 ~~ 0.5*x2
x2 ~~ 0.5*x3
x3 ~~ 0.5*x1'
### vector to store Mardia's kurtosis values
mardia_values <- double(100)
for (i in 1:100){
### generate simulated data with N=100,000 population
### skewness of 2 and kurtosis of 7
dataz <- simulateData(model, sample.nobs=100000,
skewness=c(2,2,2), kurtosis=c(7,7,7))
mardia_values[i] <- as.numeric(mardiaKurtosis(datz)[1])
}
mean(mardia_values)
所以基本上我是通过模拟来近似它(在大样本量下)
这种方法可以接受吗?我非常愿意接受建议(特别是如果它可以通过分析得出
(2) 现在,在相关的说明中......有没有人知道任何模拟数据的方法,其中 Mardia Kurtosis 的值可以由用户指定?到目前为止,我唯一能想到的就是再次使用 Vale 和 Maurelli (1983) 的方法,然后循序渐进,直到我得到我想要的值。由于 Mardia 在人口中定义了这些度量,我认为应该有可能有一些方法来生成可以预先指定值的数据,但我不知道如何。
参考
玛迪亚,KV(1970)。多变量偏度和峰度的测量与应用。生物计量学,57(3),519-530。
Vale, CD 和 Maurelli, VA (1983)。模拟多元非正态分布。心理测量学,48(3),465-471。