gpt4 book ai didi

r - 从相关向量中采样并将其应用于生成相关数据

转载 作者:行者123 更新时间:2023-12-04 09:36:40 25 4
gpt4 key购买 nike

我想为 20 项研究生成三个相关的结果。每项研究有 3 组(对照组、治疗 1 和治疗 2)。对于对照组,我的生成值是:mean=0, sd=1;对于两个治疗组,我的生成值是:平均值=0.40,标准差=1。我想完成的两件事(我很难做到):

1) 条件 1:我想生成相关结果,以便每对结果之间存在不同的相关性。相关性应该从相关性向量中采样,rho=c(0.6, 0.7, 0.8);和

2) 条件 2:我想生成相关结果,以便研究的一个子集(一半)将从相关向量 rho1=c(0.6, 0.7, 0.8) 和另一个子集(剩余half) 将从相关向量中采样,rho2=c(0.3, 0.4, 0.5)

我正在使用“mvtnorm”包为每个组生成结果。这是我的代码(请原谅我对模拟和 R 的非常基础的知识):

 library(“mvtnorm”)
set.seed(0307)
mean_c = c(0, 0, 0)
mean_t1 = c(0.4, 0.4, 0.4)
mean_t2 = c(0.4. 0.4, 0.4)
k <- 20 # no. of studies
n <- 50 # sample size

rho <- # the value is sampled from a vector of correlations
for (i in 1:k) {
Yc <-rmvnorm(n=n, mean=mean_c, sigma=rho)
Yt1<-rmvnorm(n=n, mean=mean_t1, sigma=rho)
Yt2 <-rmvnorm(n=n, mean=mean_t2, sigma=rho)
}

非常感谢我们的编程专家在这里提供的任何意见。谢谢!

最佳答案

我不确定我是否理解了您的问题。

但为了以防万一它可能对您有所帮助,我在这里提供了一个使用您的“数据”的 rmvnorm 函数示例。我修改了一些数字以明确所有依赖关系

library(mvtnorm)
set.seed(1234)

k = 10000
means = c(0, 0.4, 0.4)
sigmas = c(2, 1, 1)
rhoXY = 0.6
rhoXZ = 0.7
rhoYZ = 0.8
varMatrix <- matrix(c(
sigmas[1]*sigmas[1], rhoXY*sigmas[1]*sigmas[2], rhoXZ*sigmas[1]*sigmas[3],
rhoXY*sigmas[1]*sigmas[2], sigmas[2]*sigmas[2], rhoYZ*sigmas[2]*sigmas[3],
rhoXZ*sigmas[1]*sigmas[3], rhoYZ*sigmas[2]*sigmas[3], sigmas[3]*sigmas[3]
),
ncol=3, byrow=TRUE)

# Generate data
Yc <- rmvnorm(n = k,
mean = means,
sigma = varMatrix, method="chol")


# Check data satisfies what it should
colMeans(Yc)
var(Yc)
cor(Yc[,1], Yc[,2])
cor(Yc[,1], Yc[,3])
cor(Yc[,2], Yc[,3])

检查输出

> colMeans(Yc)
[1] 0.007118385 0.406214538 0.401605464
> var(Yc)
[,1] [,2] [,3]
[1,] 4.024896 1.2026685 1.4204561
[2,] 1.202668 0.9998153 0.8046641
[3,] 1.420456 0.8046641 1.0052659
> cor(Yc[,1], Yc[,2])
[1] 0.599527
> cor(Yc[,1], Yc[,3])
[1] 0.7061712
> cor(Yc[,2], Yc[,3])
[1] 0.802628

关于r - 从相关向量中采样并将其应用于生成相关数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com