如何在MATLAB中生成具有预先指定的SD和平均值的相关数据?
我希望创建一个平均值为50、标准偏差为1的数据点向量。然后,我希望再次创建第二个数据点向量,平均值为50,标准偏差为1,与第一个向量的相关性为0.3。数据点的数量并不重要,但理想情况下我会有100个如何在MATLAB中生成具有预先指定的SD和平均值的相关数据?,matlab,Matlab,我希望创建一个平均值为50、标准偏差为1的数据点向量。然后,我希望再次创建第二个数据点向量,平均值为50,标准偏差为1,与第一个向量的相关性为0.3。数据点的数量并不重要,但理想情况下我会有100个 在中提到的方法没有回答我的问题,因为(由于随机抽样)SDs和平均值与所需的数字偏差太大。我想出了一种方法,尽管它很难看。我仍然欢迎一个答案,详细说明一个更优雅的方法,以获得我想要的 z = 0; while z < 1 mu = 50 sigma = 1 M = mu
在中提到的方法没有回答我的问题,因为(由于随机抽样)SDs和平均值与所需的数字偏差太大。我想出了一种方法,尽管它很难看。我仍然欢迎一个答案,详细说明一个更优雅的方法,以获得我想要的
z = 0;
while z < 1
mu = 50
sigma = 1
M = mu + sigma*randn(100,2);
R = [1 0.3; 0.3 1];
L = chol(R)
M = M*L;
x = M(:,1);
y = M(:,2);
if (corr(x,y) < 0.301 & corr(x,y) > 0.299) & (std(x) < 1.01 & std(x) > 0.99) & (std(y) < 1.01 & std(y) > 0.99);
z = 1;
end
end
z=0;
而z<1
μ=50
西格玛=1
M=mu+sigma*randn(100,2);
R=[10.3;0.31];
L=chol(R)
M=M*L;
x=M(:,1);
y=M(:,2);
如果(corr(x,y)<0.301&corr(x,y)>0.299)和(std(x)<1.01&std(x)>0.99)和(std(y)<1.01&std(y)>0.99);
z=1;
结束
结束
然后我计算了向量y的平均值,计算出它比50高多少。然后我从向量y中的每个元素中减去这个数字,这样平均值就减少到50。你可以同时创建两个向量。。。我不明白你为什么把它们分开定义。这是多元分布的概念(只是为了确保我们有相同的术语)。。。 无论如何,我想你已经达到了我所说的最简单的方法: 方法1: 使用matlab函数[请记住,mvnrnd使用可从相关性和方差计算得出的协方差矩阵) 方法2: 我不是很确定,但我认为这与你正在做的事情非常接近(实际上我的怀疑与
如果(corr(x,y)<0.301&corr(x,y)>0.299)和(std(x)<1.01&std(x)>0.99)和(std(y)<1.01&std(y)>0.99)
)我不理解你这么做的原因。请参阅主题“从分布中提取值”在维基百科