R中的泊松分布函数?

时间:2015-06-12 23:08:39

标签: r function poisson

我正在尝试运行一个试验,通过泊松分布运行几个变化的变量并给出输出。它经历了三年,有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的函数做我想做的事我会非常感激。谢谢你的帮助。

1 个答案:

答案 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