如何创建向量存储4个多元正态总体的多元偏度系数
修复代码以获取四个多元偏度系数的向量
原代码存在的问题
- 未初始化Dat数组:代码尝试向
Dat[, , j, i]赋值,但未预先创建该数组,这会导致错误或异常行为。 - 未提取偏度值:原代码将完整的
mardia结果存储在列表中,但没有从中提取偏度系数并整理为向量。
修正后的代码
library(psych) library(MASS) set.seed(10) N0 <- 1 n0 <- 5 p0 <- 2 q0 <- 4 # 初始化具有正确维度的数据数组 Dat <- array(0, dim = c(p0, n0, N0, q0)) m2 <- matrix(c(0, 0), p0, 1) s2 <- matrix(c(1, 0, 0, 1), p0, p0) # 初始化用于存储偏度系数的向量 mardia_skew <- numeric(q0) for (i in 1:q0) { for (j in 1:N0) { # 生成多元正态数据 Dat[, , j, i] <- mvrnorm(n = n0, mu = m2, Sigma = s2) # 计算Mardia多元偏度 mardia_result <- mardia(Dat[, , j, i], plot = FALSE) # 将偏度值存入向量 mardia_skew[i] <- mardia_result$skew } } # 输出偏度系数向量 mardia_skew
代码说明
- 初始化Dat数组:创建一个4维数组,用于存储
q0=4个总体的数据,每个总体包含N0=1组样本,每组有n0=5个观测值,每个观测值包含p0=2个变量。 - 收集偏度值:对每个总体,使用
psych::mardia计算多元偏度,从结果中提取skew分量并存储到mardia_skew向量中。
运行此代码后,你将得到一个包含四个多元偏度系数的向量,对应四个多元正态总体的偏度值。
内容的提问来源于stack exchange,提问作者hamna ehsan
相关产品推荐
相关产品推荐

