繁体   English   中英

如何为 R 中的功率分析生成具有不同样本大小的负二项分布?

[英]How to generate a negative binomial distribution with different sample sizes for power analyses in R?

我尝试使用零膨胀的结果变量进行功率模拟。 所以我使用负二项分布。 我需要的是以下分布:

library(tidyverse)
set.seed(123)
rt_random <- 
rnbinom(n = 2000, mu = 25, size = .9) 
qplot(rt_random)

期望分布

现在,我尝试创建一个 function,我可以在其中使用不同的样本大小进行功率模拟。 为此,我使用pmap function。 但是,这似乎不起作用。 最终分布根本不是零膨胀的,均值不接近定义的均值:

generate_distribution <- function(n, mus, sizes){
  tibble(n = n, 
       t_mu = mus, 
       t_size = sizes)%>% 
  mutate(rt = pmap(list(n, t_mu, t_size),
                     ~rnbinom(..1, ..2, ..3))) %>% 
  unnest(rt) 
  
}
set.seed(123)
rt_df <- 
  generate_distribution(n = 2000,
                        mus = 25,
                        sizes = .9)
qplot(rt_df$rt)

错误分配

有没有一种简单的方法来更改我的代码以获得所需的分布?

问题是在您的 lambda function 中,您没有使用rnbinom的参数名称。 arguments 的默认顺序是n, size, prob, mu ,因此您将 2000 传递给n ,将 25 传递给size ,将 0.9 传递给prob 只需像在第一个示例中那样明确命名 arguments,您的代码就可以运行。

generate_distribution <- function(n, mus, sizes){
  tibble(n = n, 
       t_mu = mus, 
       t_size = sizes)%>% 
  mutate(rt = pmap(list(n, t_mu, t_size),
                     ~rnbinom(n = ..1, mu = ..2, size = ..3))) %>% 
  unnest(rt) 
}

set.seed(123)
rt_df <- 
  generate_distribution(n = 2000,
                        mus = 25,
                        sizes = .9)
qplot(rt_df$rt) 

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM