【问题标题】:How to calculate marginal probabilities for generating correlated binary variables如何计算生成相关二元变量的边际概率
【发布时间】:2013-09-18 12:44:31
【问题描述】:

假设我想创建 50 个长度为 100 的二进制变量,每个变量都相互关联。

因为我创建了一个具有指定 rho 的相关矩阵:

cor.mat <- matrix(0.2,nrow=50, ncol=50)
diag(cor.mat) <- 1

接下来我使用rmvbin:

library(bindata)
rmvbin<-rmvbin(100, margprob=x, bincorr=cor.mat)

但是,我不确定如何计算 margprob 参数。有人可以帮忙吗?

应该是每行每列概率之和的向量吗?

【问题讨论】:

  • 查看?rmvbin 并查看示例。有一个使用margprob的例子。
  • 是的,我看到了这个例子,我的问题是我不知道为我的矩阵填写什么值。
  • 我的问题有什么问题?谁能解释一下?
  • x=rep(.5,50)有什么问题吗?这将使每个单独的 RV 都成为公平的硬币翻转。

标签: r bindata


【解决方案1】:

margprob 应该是任何单个二进制变量为 1 的概率的重复向量,与其余变量无关;将此值称为p。假设分布相同的变量(给定您的相关矩阵似乎就是这种情况),margprob=rep(p,50)

它不应该是每行和每列的概率之和的向量,因为相关矩阵不能用于确定边际概率。如果您无法确定随机变量的边际概率是多少,则必须为该问题提供更多背景信息,这将是一个更适合 math.stackexchange.com 的问题。

【讨论】:

    【解决方案2】:

    我认为问题在于人们认为解决方案过于简单或没有正确指定。您实际上并没有计算边际概率......您指定它们。然后rmvbin 函数使用边际概率的规范和联合相关性来进行所需的采样,以(平均)给出与这些规范相匹配的联合分布。

    library(bindata)
    rmvbin<-rmvbin(100, margprob=rep(.5,50), bincorr=cor.mat)
    
    > str(rmvbin)
     num [1:100, 1:50] 0 0 0 1 0 0 0 1 0 0 ...
     - attr(*, "dimnames")=List of 2
      ..$ : NULL
      ..$ : NULL
    

    所以看这个结果的抽样特征,可以看出和第一列有什么相关性:

    Hmisc::describe(apply(rmvbin[,-1], 2, function(col) cor(col, rmvbin[,1]) ) )
    apply(rmvbin[, -1], 2, function(col) cor(col, rmvbin[, 1])) 
          n missing  unique    Mean     .05     .10     .25     .50     .75     .90 
         49       0      38  0.2009 0.05886 0.09874 0.13309 0.19372 0.25208 0.29723 
        .95 
    0.33772 
    
    lowest : 0.03508 0.04013 0.08696 0.09874 0.10889
    highest: 0.29942 0.32450 0.34653 0.40902 0.46714 
    

    因此,抽样下的平均相关性非常接近标称值 0.2。但它确实差异很大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2018-04-26
      • 2017-11-18
      • 1970-01-01
      • 2020-08-04
      • 2020-08-16
      • 2021-05-28
      相关资源
      最近更新 更多