【发布时间】:2022-01-19 15:26:13
【问题描述】:
我做了高斯混合模型,效果很好,但是函数没有向右移动。在图中,它显示好像该函数没有移动任何东西。我为 mu 合并了一个 for 循环:
for(i in 1:n){
for (j in 1:5){
mu1 = c(1+j,2)
mu2 = c(6+j,7)
.
.
.
}
}
但它不起作用。我尝试获取图像中出现的图形:它在保存之前的东西的同时移动,覆盖越来越多的空间
library(MASS)
n = 1000
Sigma = matrix(c(1, 0.5, 0.5, 1), 2, 2)
rho = 0.5
# Gaussian mixture model
# X=(X1,X2) ~ rho * N(mu1, Sigma) + (1-rho) * N(mu2, Sigma)
X = cbind(rep(0, n), rep(0, n))
for(i in 1:n){
for (j in 1:5){
mu1 = c(1+j,2)
mu2 = c(6+j,7)
u = runif(1, min = 0, max = 1)
if(u < rho){
X[i,] = mvrnorm(1, mu = mu1, Sigma = Sigma)
}else{
X[i,] = mvrnorm(1, mu = mu2, Sigma = Sigma)
}
}
}
plot(X[,1], X[,2], xlab = 'X1', ylab = 'X2')
【问题讨论】:
-
似乎在您的内部循环中,
X[i, ]行在每次迭代时都会被覆盖。j循环的意义何在? -
我也看不懂"我尝试获取图像中出现的图形:它在保存之前的东西的同时移动,覆盖越来越多的空间"。你的意思是你想要一个动画情节?还是一系列情节?还是显示随时间进展的单个图?
-
当我迭代
mu时,我尝试将 5 次迭代中的每一次保存在 X [i,]` 中。mu右移时保存分布的数据 -
@GregorThomas,显示随时间变化的单个图
-
当
i为 1 时,j在不同的迭代中具有值 1,2,3,4,5。但是对于所有 5 个j值,只有一个i值,所以X[i,]只会有来自j = 5---X[i,]的结果每次都会被覆盖。