对于多项分布进行采样的函数

function  x = gen_Multinom(p)
       % 生成多项式分布
     
       p = cumsum(p);
       pmax = max(max(p))+1;
       u = repmat(rand(1,size(p,2)).*p(end,:), size(p,1), 1);   
       m = (u < p) .* (pmax-p);  
       [~,x] = max(m);   % x返回的是最大值的索引,在第几行

end

从多项分布中采样的函数

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于ergm包的R代码,实现了对加权有向网络的ERGM模型的估计,并使用Metropolis-Hastings算法和Gibbs采样算法进行了参数估计,并绘制了迭代轨迹图和后验密度图。 ```r library(ergm) # 生成一个有向网络 set.seed(123) g <- as.network(matrix(sample(c(0,1), 100, replace=TRUE), ncol=10)) g <- set.edge.attribute(g, "weight", sample(1:5, gsize(g), replace=TRUE)) # 定义ERGM模型 model <- function(theta){ edges ~ dpois(exp(theta[1] + theta[2] * weight)) theta[1] <- 0 # 规范化常数 } # 使用MH采样函数进行参数估计 fit_mh <- ergm(g ~ edges + weight, model=model, control=control.ergm(MH=TRUE)) plot(fit_mh, type="trajectories") plot(fit_mh, type="densities") # 使用Gibbs采样函数进行参数估计 fit_gibbs <- ergm(g ~ edges + weight, model=model, control=control.ergm(MH=FALSE)) plot(fit_gibbs, type="trajectories") plot(fit_gibbs, type="densities") ``` 在上面的代码中,我们首先使用`as.network()`函数生成一个有向网络,其中每条边都有一个随机权重。然后定义了一个ERGM模型,其中分布项设置为泊松分布,参数为$\theta_1$和$\theta_2$。使用`ergm()`函数进行模型估计,其中`control.ergm()`函数用于设置MCMC算法的参数,这里我们分别设置为MH采样和Gibbs采样。最后,使用`plot()`函数绘制迭代轨迹图和后验密度图。 需要注意的是,ERGM模型的参数估计可能会受到初值影响,因此需要多次运行和调整参数,以获得稳定的结果。同时,模型的复杂度和网络规模也会影响模型估计的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值