解析normal_gibbs=function(n=10,luo=0.5){ x=numeric(n) y=numeric(n) x[1]=rnorm(1) y[1]=rnorm(1) for (i in 1:n){ x[i+1]=rnorm(1,luo*y[i],1-luo^2) y[i+1]=rnorm(1,luo*x[i+1],1-luo^2) } data.frame(x,y) } normal_gibbs(n=100,luo=0.2)
时间: 2024-01-28 15:04:20 浏览: 95
论文研究 - 真实气体的绝对参考值
这个函数中使用了 Gibbs 抽样方法生成两个变量的联合分布。具体来说,每次迭代时,先从条件概率分布 $p(x|y)$ 中生成一个 $x$ 的值,然后再从条件概率分布 $p(y|x)$ 中生成一个 $y$ 的值。其中,$p(x|y)$ 和 $p(y|x)$ 由给定的相关系数 $\rho$ 计算得出,具体为:
$$p(x|y) \sim N(\rho y, 1-\rho^2)$$
$$p(y|x) \sim N(\rho x, 1-\rho^2)$$
因此,在每次迭代时,根据上一次生成的 $y_i$,从 $p(x|y)$ 中生成 $x_{i+1}$,再根据 $x_{i+1}$ 从 $p(y|x)$ 中生成 $y_{i+1}$。这样,反复进行迭代,最终得到 $n$ 个样本点,保存在一个数据框中并返回。在这个函数中,使用了 R 内置的随机数函数 rnorm() 生成正态分布随机数。
阅读全文