如何在R中使用不同的set.seed()多次运行相同的模型? [英] How to run same model multiple times with different set.seed() in R?
本文介绍了如何在R中使用不同的set.seed()多次运行相同的模型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想用不同的种子运行以下模型3次.例如,以下模型与种子314159
I would like to run the following model three times with a different seed. For example, the following model is run with seed 314159
set.seed(314159)
x <- c(11, 5, 2, -5, 7, 2, -11, 9, -5, -5, -4, 17, 2, -10, -11, -10,
-4, 2, 1, 13)
a <- 0.1
b <- 0.1
c <- 0
d <- 100^2
M <- 1e3
sample <- array(NA, dim=c(M,2))
mu <- mean(x)
sig2 <- var(x)
for( m in 1:M ){
mu <- rnorm(1, (length(x) + 1/d)^(-1) * (sum(x) + c/d),
sqrt( sig2/(length(x) + 1/d) ))
sig2 <- rigamma(1, .5*length(x)+a+.5,
.5*sum( (x-mu)^2 ) + 1/(2*d)*(mu-c)^2 + b )
sample[m,] <- c(mu,sig2)
}
plot( density( sample[,1] ))
plot( density( sample[,2] ))
如果我要对种子523626
和626789
运行相同的模型,是否可以使用任何for循环来执行?
感谢您的帮助吗?
If I want to run the same model for seed 523626
and 626789
, Can I do it using any for loop?
Any help is appreciated?
推荐答案
您可以循环遍历种子
library(LearnBayes)
seeds <- c(314159,523626,626789)
for (seed in seeds) {
set.seed(seed)
x <- c(11, 5, 2, -5, 7, 2, -11, 9, -5, -5, -4, 17, 2, -10, -11, -10,
-4, 2, 1, 13)
a <- 0.1
b <- 0.1
c <- 0
d <- 100^2
M <- 1e3
sample <- array(NA, dim=c(M,2))
mu <- mean(x)
sig2 <- var(x)
for( m in 1:M ){
mu <- rnorm(1, (length(x) + 1/d)^(-1) * (sum(x) + c/d),
sqrt( sig2/(length(x) + 1/d) ))
sig2 <- rigamma(1, .5*length(x)+a+.5,
.5*sum( (x-mu)^2 ) + 1/(2*d)*(mu-c)^2 + b )
sample[m,] <- c(mu,sig2)
}
plot( density( sample[,1] ))
plot( density( sample[,2] ))
}
由 reprex软件包(v0.3.0)创建于2020-01-12 sup>
Created on 2020-01-12 by the reprex package (v0.3.0)
这篇关于如何在R中使用不同的set.seed()多次运行相同的模型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文