【问题标题】:Why is the value of alpha different between psych::omega and psych::alpha in R?为什么 alpha 在 R 中 psych::omega 和 psych::alpha 的值不同?
【发布时间】:2020-05-25 13:39:57
【问题描述】:

我有来自大约 260 名参与者完成的五项测量的数据,并估计了与 R 中的 psych 库的内部一致性。我得到的值为 -0.36(我对反向编码的问题进行了三次检查)。我的数据没有涵盖广泛的可能分数——由于我抽样的群体的性质——所以这是一个合理的数字。但是我使用的量表经过了很好的验证,诚然,alpha 的典型值较低,范围为 0.5--0.7。

在寻找评估数据的替代方法时,我使用了 psych::omega。这将返回 0.57 的 alpha 值以及我正在寻找的 omega 统计信息。这个 alpha 值更符合其他使用相关量表的文献。我还从我的研究中查看了其他经过验证的测量值,并且 psych::alpha 和 psych::omega 的 alpha 值是相等的。只有在这种已知内部一致性较低的特定度量上才会出现差异。

我的问题:为什么 psych::alpha 和 psych::omega 之间的 alpha 值不同?

下面的代码包含实际数据,并会针对负相关项目发出警告。我检查并重新检查了我的分数编码,它是正确的,所以我相信我们可以忽略这个警告。

library("psych")

data <- structure(list(rMEQQ01 = c(2, 3, 3, 3, 3, 3, 3, 1, 5, 3, 3, 3, 
3, 3, 3, 3, 3, 5, 3, 2, 5, 2, 3, 3, 3, 3, 3, 2, 3, 2, 2, 1, 3, 
5, 3, 4, 3, 4, 5, 4, 3, 3, 2, 5, 4, 2, 3, 3, 5, 3, 3, 5, 5, 4, 
2, 2, 4, 1, 4, 1, 2, 1, 5, 2, 4, 3, 3, 1, 3, 3, 4, 2, 4, 2, 2, 
3, 5, 4, 3, 3, 2, 5, 3, 5, 1, 5, 3, 5, 1, 3, 3, 3, 3, 3, 5, 3, 
5, 5, 2, 5, 2, 5, 3, 5, 3, 3, 5, 4, 3, 3, 4, 3, 3, 4, 3, 2, 3, 
4, 3, 2, 3, 5, 5, 3, 4, 4, 3, 5, 3, 2, 3, 2, 5, 3, 3, 5, 3, 3, 
3, 2, 5, 5, 4, 4, 5, 4, 1, 3, 3, 3, 4, 3, 3, 3, 3, 3, 2, 4, 3, 
3, 3, 4, 4, 3, 3, 3, 4, 3, 1, 2, 3, 3, 5, 4, 3, 4, 2, 2, 3, 4, 
2, 2, 1, 4, 3, 5, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 4, 5, 2, 3, 5, 
4, 3, 4, 4, 4, 3, 3, 3, 5, 2, 3, 3, 5, 5, 4, 2, 3, 3, 3, 3, 3, 
3, 3, 2, 3, 1, 3, 2, 1, 2, 5, 3, 5, 1, 3, 3, 2, 3, 4, 5, 3, 3, 
3, 4, 3, 1, 3, 3, 3, 3, 5, 1, 3, 4, 5, 3, 4, 3, 3), rMEQQ02 = c(2, 
2, 2, 1, 2, 1, 2, 3, 2, 2, 3, 2, 1, 1, 2, 1, 2, 1, 2, 3, 4, 2, 
1, 1, 3, 2, 3, 2, 2, 2, 2, 2, 1, 3, 2, 3, 2, 2, 2, 2, 3, 3, 2, 
1, 1, 3, 2, 2, 1, 3, 3, 2, 4, 1, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 
3, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 3, 3, 3, 1, 1, 2, 2, 
1, 3, 2, 3, 2, 2, 2, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 
1, 2, 1, 3, 1, 2, 2, 2, 3, 3, 2, 2, 3, 1, 2, 2, 2, 3, 1, 1, 2, 
1, 1, 2, 3, 1, 1, 3, 3, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 3, 1, 
3, 2, 3, 1, 3, 3, 3, 3, 3, 1, 2, 2, 1, 1, 2, 1, 2, 2, 3, 3, 2, 
3, 1, 2, 3, 1, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 1, 2, 1, 2, 2, 
2, 3, 2, 2, 2, 2, 4, 1, 2, 2, 1, 2, 2, 1, 3, 2, 2, 1, 3, 1, 3, 
2, 3, 1, 2, 1, 3, 1, 2, 2, 3, 3, 2, 3, 2, 2, 1, 2, 2, 3, 2, 1, 
1, 1, 2, 3, 2, 2, 2, 1, 1, 1, 1, 2, 3, 1, 1, 1, 3, 3, 3, 1, 3, 
1, 2, 2, 2, 1, 1, 1), rMEQQ03 = c(1, 3, 1, 3, 3, 2, 2, 5, 4, 
3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 2, 5, 1, 3, 3, 3, 3, 2, 3, 3, 1, 
2, 2, 3, 1, 3, 4, 3, 1, 5, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 
1, 4, 3, 1, 3, 3, 1, 3, 3, 1, 2, 3, 3, 4, 3, 2, 3, 2, 2, 2, 3, 
3, 3, 3, 3, 5, 3, 2, 3, 3, 1, 1, 1, 1, 3, 3, 3, 2, 3, 1, 4, 3, 
3, 5, 3, 5, 1, 3, 5, 1, 1, 2, 1, 2, 3, 3, 3, 3, 3, 5, 3, 3, 3, 
2, 2, 3, 5, 1, 1, 1, 3, 2, 3, 3, 3, 3, 3, 1, 3, 3, 4, 3, 3, 2, 
5, 1, 3, 5, 1, 1, 3, 4, 2, 4, 3, 3, 1, 1, 3, 5, 1, 3, 3, 3, 3, 
1, 1, 3, 1, 1, 3, 1, 1, 1, 2, 3, 3, 1, 3, 2, 3, 5, 4, 4, 4, 1, 
2, 3, 3, 3, 2, 1, 3, 2, 3, 2, 2, 1, 3, 3, 1, 3, 5, 4, 3, 3, 1, 
3, 3, 1, 2, 3, 1, 4, 5, 1, 2, 3, 5, 2, 5, 3, 5, 5, 4, 2, 3, 3, 
3, 2, 4, 3, 3, 2, 2, 1, 2, 2, 2, 2, 5, 5, 3, 3, 2, 3, 3, 2, 3, 
4, 3, 5, 3, 3, 3, 5, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5), 
    rMEQQ04 = c(3, 2, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 
    2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 2, 4, 3, 3, 3, 
    3, 3, 1, 3, 2, 3, 3, 3, 3, 3, 3, 4, 3, 3, 5, 3, 3, 3, 3, 
    5, 3, 3, 3, 5, 5, 4, 1, 3, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 
    3, 4, 3, 3, 2, 3, 3, 3, 2, 2, 3, 3, 3, 1, 3, 2, 1, 3, 2, 
    2, 3, 3, 2, 3, 3, 1, 3, 1, 4, 3, 3, 1, 3, 3, 3, 5, 3, 3, 
    3, 3, 2, 3, 3, 3, 2, 3, 4, 2, 3, 3, 3, 2, 2, 3, 3, 3, 3, 
    3, 3, 3, 4, 3, 3, 5, 1, 1, 2, 3, 3, 2, 2, 3, 2, 3, 2, 3, 
    3, 3, 2, 3, 2, 3, 3, 2, 3, 4, 5, 3, 3, 2, 3, 3, 3, 3, 3, 
    3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 
    3, 3, 1, 3, 1, 2, 2, 1, 2, 3, 3, 3, 5, 4, 1, 1, 1, 3, 5, 
    4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 2, 
    3, 3, 4, 3, 4, 3, 3, 1, 2, 3, 3, 4, 3, 4, 3, 3, 3, 3, 5, 
    3, 3, 3, 3, 2, 3, 3, 3, 1, 4, 3, 3, 3, 3, 3, 3, 2), rMEQQ05 = c(4, 
    0, 4, 2, 6, 0, 2, 0, 2, 2, 0, 4, 2, 4, 4, 0, 0, 4, 2, 2, 
    0, 4, 4, 0, 4, 2, 6, 4, 2, 2, 4, 6, 2, 0, 2, 0, 0, 2, 0, 
    2, 2, 6, 0, 0, 0, 0, 0, 4, 0, 4, 4, 0, 4, 0, 4, 4, 0, 6, 
    2, 6, 4, 6, 2, 6, 2, 2, 2, 4, 6, 4, 2, 6, 2, 6, 6, 2, 0, 
    0, 4, 2, 6, 6, 4, 0, 4, 0, 6, 4, 0, 2, 2, 2, 2, 4, 0, 2, 
    0, 0, 4, 0, 4, 2, 0, 0, 2, 2, 0, 0, 4, 6, 2, 4, 0, 2, 4, 
    4, 0, 2, 6, 2, 4, 0, 0, 4, 0, 4, 2, 4, 2, 0, 4, 0, 0, 4, 
    2, 0, 2, 2, 0, 0, 0, 4, 0, 4, 0, 4, 2, 6, 6, 0, 0, 4, 4, 
    6, 2, 2, 4, 0, 0, 0, 2, 0, 2, 2, 2, 4, 2, 2, 6, 4, 2, 4, 
    0, 0, 0, 0, 2, 0, 2, 0, 4, 4, 4, 4, 4, 2, 6, 4, 0, 4, 0, 
    2, 0, 0, 0, 6, 2, 0, 6, 4, 2, 2, 0, 2, 0, 2, 6, 2, 2, 0, 
    6, 2, 2, 0, 0, 0, 4, 0, 4, 2, 6, 2, 4, 2, 4, 2, 4, 6, 6, 
    6, 4, 0, 0, 0, 4, 6, 2, 6, 6, 2, 2, 0, 0, 2, 2, 6, 2, 2, 
    6, 6, 0, 0, 4, 2, 4, 4, 4, 0, 2, 0)), row.names = c(NA, -260L
), class = "data.frame")

alpha <- psych::alpha(data) # alpha$total$raw_alpha = -0.3665156
omega <- psych::omega(data) # omega$alpha = 0.5710576
```


【问题讨论】:

    标签: r psych


    【解决方案1】:

    请注意 alpha 给您的警告信息:

    警告信息: 在 psych::alpha(data) 中: 有些项目与总规模呈负相关,可能 应该倒过来。
    为此,请使用“check.keys=TRUE”选项再次运行该函数

    【讨论】:

    • 根据我的描述和我们的电子邮件讨论:我已经多次检查反向编码。虽然这个错误最常见的原因是问题编码不正确,但这种情况似乎是我抽样的总体规模的真正失败。
    • 在再次检查我的数据并获得一些独立的编码器后,我不得不举起双手说这是人为错误。再次感谢,William!
    【解决方案2】:

    Alpha 将总测试方差与项目方差之和 (* 项目数/项目数 -1) 进行比较。总检验方差只是项目方差和协方差的总和。正如您从相关矩阵中看到的那样,您有一些负相关的项目。这会将总方差减小到小于项目方差的总和。在您的情况下,总测试方差为 6.197,项目方差之和为 8.015,k =5,因此

    alpha = (6.198 - 8.015)/6.198  * 5/4 =  -.366
    
    
    
    
    lowerCor(data)
            rMEQQ01 rMEQQ02 rMEQQ03 rMEQQ04 rMEQQ05
    rMEQQ01  1.00                                  
    rMEQQ02 -0.26    1.00                          
    rMEQQ03  0.29   -0.02    1.00                  
    rMEQQ04 -0.15    0.09   -0.02    1.00          
    rMEQQ05 -0.45    0.30   -0.32    0.20    1.00 
    

    为了更好地了解 alpha 和 omega 统计数据,我建议您阅读我们在《心理评估:Revelle and Condon, From alpha to Omega》上的论文,教程 (2020) 预印本https://psyarxiv.com/2y3w9/

    【讨论】:

      【解决方案3】:

      有关此问题的最可能来源,请参阅 William 的回答。但是,由于我的比例和样本的特殊组合,我遇到了一个例外。在无数次检查我的编码并检查数据中每个项目的方差之后,项目方差的总和确实高于总分的方差。因此,Cronbach 的 alpha 为负值。

      psych::omega() 假设任何负相关都是由反向编码引起的,并且在不打印警告的情况下“纠正”它。但是, psych::alpha() 确实会打印使用 check.keys 选项的警告,因此不会自动进行更正。

      编辑 在再次检查我的数据并让某人独立重新编码后,似乎是我的错误。奥卡姆剃刀又来了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-08
        • 2021-08-29
        • 2020-12-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-23
        • 2012-02-04
        相关资源
        最近更新 更多