我正在尝试运行一个试验,通过泊松分布运行几个变化的变量并给出输出。它经历了三年,有12个集群。所有1-6组都是对照组,7到12组是干预组。
第一年将有1-12集群。有6个控制和6个干预。同样的第二年和第三年。所以在第一年你得到一个v,每个集群的v是相同的,但每个集群有一个不同的lambda。
这是基本代码和等式。
mu=3.4
lambda=rnorm(1,0,.27)
v=rnorm(1,0,.53)
e=rnorm(1,0,.74)
x=rpois(1, exp(mu+lambda+v+e))
Lambda和v通常与那些st分发。每组的偏差。我想在第1年说它采取v = rnorm(1,0,.53)并通过等式运行。与此同时,我希望它采用lambda = rnorm(1,0,.27)并为第一年的12个集群中的每一个运行相同的v。所以基本上每年一个v和12个lambdas。我相信这可以用功能完成,但我很难用它。我尝试使用for循环,但我不认为它正在做我想要的。这是带有for循环的代码:
mu=3.4
lambda=numeric(length=12)
v=numeric(length=3)
for (i in 1:120{
lambda[i]=rnorm(1,0,.27)
}
for (j in 1:3){
v[j]=rnorm(1,0,.53)
}
e=rnorm(1,0,.74)
x=rpois(1, exp(mu+lambda+v+e))
我不确定这是否正在做正确的事情,所以如果有经验的人可以解释我的代码在做什么以及如何使用lambda和v的函数做我想做的事我会非常感激。谢谢你的帮助。
答案 0 :(得分:2)
听起来你有12个小组,3年共36个数据点。对于每一年,我有一个单独的值v [i]和12个特定于组的值lambda [1],lambda [2],...,lambda [12]。你没有真正指定每个e的绘制方式,所以让我们假设它有一个全局e值。
您可以为每个组和年建立一个包含相关参数的数据框:
dat <- expand.grid(group=1:12, year=1:3)
然后您可以在数据框中指定每个参数:
set.seed(144)
dat$lambda <- rnorm(36, 0, .27)
dat$v <- ave(dat$year, dat$year, FUN=function(x) rnorm(1, 0, .53))
dat$e <- rnorm(1, 0, .74)
dat$mu <- 3.4
最后,您可以根据所有其他指定参数计算泊松分布的x值。
dat$x <- apply(dat, 1, function(x) rpois(1, exp(sum(x[3:5]))))
dat
# group year lambda e v x
# 1 1 1 -0.445650165 0.4905398 -0.68348553 0
# 2 2 1 0.162758849 0.4905398 -0.68348553 0
# 3 3 1 -0.127948650 0.4905398 -0.68348553 0
# 4 4 1 -0.485355518 0.4905398 -0.68348553 0
# 5 5 1 -0.383702670 0.4905398 -0.68348553 1
# 6 6 1 0.042899625 0.4905398 -0.68348553 1
# 7 7 1 0.035036875 0.4905398 -0.68348553 3
# 8 8 1 -0.339165570 0.4905398 -0.68348553 0
# 9 9 1 0.039870111 0.4905398 -0.68348553 0
# 10 10 1 0.264376944 0.4905398 -0.68348553 2
# 11 11 1 -0.158722934 0.4905398 -0.68348553 2
# 12 12 1 0.065626713 0.4905398 -0.68348553 0
# 13 1 2 -0.119740653 0.4905398 -0.94943812 1
# 14 2 2 -0.273056956 0.4905398 -0.94943812 0
# 15 3 2 0.082479733 0.4905398 -0.94943812 1
# 16 4 2 0.004055817 0.4905398 -0.94943812 3
# 17 5 2 -0.136651972 0.4905398 -0.94943812 0
# 18 6 2 -0.379565000 0.4905398 -0.94943812 1
# 19 7 2 -0.347022844 0.4905398 -0.94943812 0
# 20 8 2 -0.025990597 0.4905398 -0.94943812 0
# 21 9 2 0.136014382 0.4905398 -0.94943812 3
# 22 10 2 0.063815822 0.4905398 -0.94943812 0
# 23 11 2 0.067932957 0.4905398 -0.94943812 1
# 24 12 2 0.099834989 0.4905398 -0.94943812 0
# 25 1 3 -0.135519422 0.4905398 -0.04616012 3
# 26 2 3 -0.226890654 0.4905398 -0.04616012 2
# 27 3 3 -0.024936233 0.4905398 -0.04616012 1
# 28 4 3 -0.182543225 0.4905398 -0.04616012 2
# 29 5 3 0.537843637 0.4905398 -0.04616012 2
# 30 6 3 0.291349032 0.4905398 -0.04616012 3
# 31 7 3 0.255455171 0.4905398 -0.04616012 0
# 32 8 3 -0.053874069 0.4905398 -0.04616012 5
# 33 9 3 0.052474650 0.4905398 -0.04616012 0
# 34 10 3 -0.317645288 0.4905398 -0.04616012 0
# 35 11 3 0.162754030 0.4905398 -0.04616012 1
# 36 12 3 0.337018922 0.4905398 -0.04616012 8