【问题标题】:scores returned by the alpha function in psych pkg are incorrectpsych pkg 中 alpha 函数返回的分数不正确
【发布时间】:2020-01-13 17:26:27
【问题描述】:

请考虑使用以下代码从alpha 函数中获取分数

library(psych)

vars <- c('mpg', 'cyl', 'disp', 'hp')
df <- mtcars[0:10, vars]

alpha_results <- alpha(df, check.keys=TRUE)
df$scores <- alpha_results$scores

print(head(df))
 mpg cyl disp  hp  scores
21.0   6  160 110 154.750
21.0   6  160 110 154.750
22.8   4  108  93 136.550
21.4   6  258 110 179.150
18.7   8  360 175 222.075
18.1   6  225 105 170.475

 Item statistics 
      n raw.r std.r r.cor r.drop  mean   sd
mpg- 10  0.86  0.94  0.91   0.85 343.6  2.9
cyl  10  0.91  0.96  0.94   0.91   5.8  1.5
disp 10  0.98  0.93  0.90   0.85 208.6 90.4
hp   10  0.94  0.95  0.94   0.85 122.8 51.4

基于函数的doc

默认情况下,分数只是参与者对所有项目的平均反应。如果累积=真,那么这些是总分。注意,如果有很多缺失值,这是很危险的

但是,例如,第一个 obs 的分数应该是

(-21.0 + 6 + 160 + 110)/4 = 63.75

但结果却是 154.750。

【问题讨论】:

  • 通过设置 check.keys = TRUE,您要求对负相关项目进行反向评分。负键控的过程只是乘以-1。然后将这些项目相加(以获得分数)。你实际上并没有说stata结果是什么。如果你能报告这将有所帮助。
  • 嗨,@WilliamRevelle,我不知道你是开发者。我只是检查了源代码,但没有找到分数是如何计算的。请看我更新的帖子。顺便说一句,这是 GitHub 上用于问题跟踪的 psych pkg 吗?

标签: r psych


【解决方案1】:

alpha 函数并不是真正用于查找范围截然不同的数据分数。基于具有相等范围的项目的正常使用案例,它通过从最大值+最小值中减去这些项目来调整反向评分项目。以汽车为例,即 360 + 4 或 364。因此,报告的第一个值为 (364 - 21 + 6 + 160 + 110)/4 = 154.75。

scoreItems 函数将找到本地最小值和最大值(alpha 也是如此);或者您可以指定它们。

要得到你想要的,你应该使用scoreItems函数并指定键以及min=0max=0

请注意,我使用cs 函数(来自psychTools,改编自Hmisc)在keys &lt;- list 命令中添加""

keys <- list(cars=cs(-mpg, cyl,disp,hp))
test1 <-scoreItems(keys,df,min=0,max=0)
test1$scores
                     cars
Mazda RX4          63.750
Mazda RX4 Wag      63.750
Datsun 710         45.550
Hornet 4 Drive     88.150
Hornet Sportabout 131.075

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多