【问题标题】:Generate viable sampling distributions of discrete data in R在 R 中生成离散数据的可行采样分布
【发布时间】:2018-04-16 16:00:50
【问题描述】:

我正在尝试模拟 2 X 2 数据,该数据会产生相对较强的负 phi 系数。

我使用库GenOrd如下:

library(GenOrd)

# Specify sample size N
N <- 40

# Marginal distribution
marginal <- list(c(.5), c(.5))

# Matrix
Sigma <- matrix(c(1.0, -.71, -.71, 1.0), 2, 2, byrow=TRUE)

# Generate a sample of the categorical variables with specified parameters
m <- ordsample(N, marginal, Sigma)

但是,每当我输入大于-.70 的相关性时,都会出现以下错误。

Error in contord(list(marginal[[q]], marginal[[r]]), matrix(c(1, Sigma[q,  : 
Correlation matrix not valid!

我清楚地在某处指定了一些站不住脚的东西 - 但我不知道它是什么。

帮助表示赞赏。

【问题讨论】:

    标签: r correlation data-generation


    【解决方案1】:

    我将尝试将其作为编码问题来回答。错误指向包发现问题开始的位置:在您的 Sigma 入口处。鉴于您的边际分布,您的 corr 中有 -.71。矩阵超出范围,包裹警告您这一点。您可以通过更改 Sigma 中的符号来看到这一点:

    Sigma <- matrix(c(1.0, .71, .71, 1.0), 2, 2, byrow=TRUE)
    m <- ordsample(N, marginal, Sigma)
    > m
           [,1] [,2]
      [1,]    1    1
      [2,]    1    2
      ....
    

    至于为什么 -.71 无效,您可能希望将该统计问题直接发送至 Cross Validated 以获得简洁的答案。

    【讨论】:

    • 谢谢,我已将此发布到交叉验证。是的,-.70+1.00 之间的一切似乎都可以正常工作。
    【解决方案2】:

    我不确定“为什么”,但是,我发现使用 MultiOrd 包中的 generate.binary() 函数模拟 2 X 2 数据会产生相对较强的负相关性没有问题。

    例如,以下代码适用于所有相关输入。 generate.binary() 函数的文档表明指定的矩阵被解释为四色相关矩阵。

    library(MultiOrd)
    
    # Specify sample size N
    N <- 40
    
    # Marginal distribution for two variables as a vector for MultiOrd rather than a list
    marginal <- c(.5, .5)
    
    # Correlation (tetrachoric) matrix as target for simulated relationship between variables
    Sigma <- matrix(c(1.0, -.71, -.71, 1.0), 2, 2, byrow=TRUE)
    
    # Generate a sample of the categorical variables with specified parameters
    m <- generate.binary(40, marginal, Sigma)
    

    【讨论】:

      猜你喜欢
      • 2021-03-04
      • 2012-04-14
      • 1970-01-01
      • 2016-04-22
      • 2021-08-19
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      相关资源
      最近更新 更多