【问题标题】:psych::alpha does not return mean, sdpsych::alpha 不返回均值,sd
【发布时间】:2017-04-30 13:39:03
【问题描述】:

psych 包包含一个函数?alpha,它计算测试可靠性和一些项目统计信息。当输入原始数据(具有正确/错误答案的二进制值的 data.frame)时,它会返回均值和 st。开发。对于每个项目。但是,有时它不会,并且只提供项目整体相关性。

这是为什么呢?

The docu 指出均值和 sd 仅计算“对于数据矩阵 [...]”,而 x 是“数据帧或数据矩阵,或协方差或相关矩阵”。但是它怎么知道我给它的是原始数据还是相关矩阵呢?

【问题讨论】:

    标签: r psych


    【解决方案1】:

    psychalpha 命令使用isCorrelation 命令检测输入x 是否为相关矩阵。 让我们考虑一下tutorial 中给出的数据集:

    datafilename <- "http://personality-project.org/R/datasets/extraversion.items.txt" 
    items <- read.table(datafilename,header=TRUE)    
    df <- with(items, data.frame(q_262 ,q_1480 ,q_819 ,q_1180 ,q_1742 )) 
    

    对象df 是一个data.frame,其列代表对五个项目的响应。命令isCorrelation(在alpha 内部使用)正确检测到这不是相关矩阵:

    library(psych)
    isCorrelation(df)
    [1] FALSE
    

    如果我们计算df的相关矩阵并传递给isCorrelation,我们再次得到正确答案:

    mtx <- cor(df)
    isCorrelation(mtx)
    [1] TRUE
    

    查看isCorrelation 内部可以看到,相关矩阵被定义为不是data.frame(因此是matrix)并且是对称的对象:

    isCorrelation <- function (x) 
    {
        return(!is.data.frame(x) && isSymmetric(unname(x)))
    }
    

    【讨论】:

    • 谢谢,有道理。这也意味着原始数据的较小差异可能导致错误分类(因为它可能碰巧是对称的)。这也意味着必须转换为 data.frame 以防止出现这种结果。
    • 很难想象一个数据集如此之小以至于您会面临原始数据是对称矩阵的可能性。如果您的情况如此之少,您可能不应该费心寻找系数 alpha。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 2017-06-10
    • 2023-02-15
    • 2019-09-08
    • 2012-07-12
    • 1970-01-01
    相关资源
    最近更新 更多