如何为fGarch::rsnorm生成的偏正态变量添加预设相关性
需求与问题
我需要生成两个基于fGarch::rsnorm()的偏正态变量,要求满足以下条件:
- 变量取值为正值
- 分别具有指定的均值、方差和偏度
- 变量间的相关性符合预设值
以下是我的尝试代码及结果:
correlation <- 0.3 mean_1 <- 20 mean_2 <- 10 sd_1 <- 10 sd_2 <- 10 xi_1 <- 10 xi_2 <- 10 n <- 10000 # 生成初始偏正态变量并取绝对值确保正值 x <- abs(fGarch::rsnorm(n, mean = mean_1, sd = sd_1, xi = xi_1)) y <- abs(fGarch::rsnorm(n, mean = mean_2, sd = sd_2, xi = xi_2)) # 尝试为变量添加预设相关性 x <- abs(x + correlation * (y - mean(y))) y <- abs(y + correlation * (x - mean(x))) # 查看x的分布 hist(x)

# 查看y的分布 hist(y)

# 计算变量实际相关性 cor(x,y) #> [1] 0.4941751
Created on 2023-01-13 with reprex v2.0.2
实际得到的相关性(0.494)和预设的0.3偏差明显,同时调整后的变量是否还符合指定的均值、方差和偏度也存疑。
内容的提问来源于stack exchange,提问作者Giovanni Colitti
相关产品推荐
相关产品推荐

