psych pkg 中的 alpha 函数返回的分数不正确
scores returned by the alpha function in psych pkg are incorrect
请考虑使用以下代码从 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:
Scores are by default simply the average response for all items that a participant took. If cumulative=TRUE, then these are sum scores. Note, this is dangerous if there are lots of missing values
但是,例如,第一个obs的分数应该是
(-21.0 + 6 + 160 + 110)/4 = 63.75
但结果却是 154.750。
alpha
函数并不是真正用于查找具有截然不同范围的数据分数。基于具有相同范围的项目的正常用例,它通过从最大值 + 最小值中减去这些项目来调整反向得分的项目。在汽车示例的情况下,即 360 + 4 或 364。因此,第一个值是 (364 - 21 + 6 + 160 + 110)/4 = 154.75,如报告的那样。
scoreItems
函数将找到局部最小值和最大值(alpha
也是如此);或者您可以指定它们。
要得到你想要的,你应该使用 scoreItems
函数并指定键以及 min=0
和 max=0
。
请注意,我使用 cs
函数(来自 psychTools
,改编自 Hmisc
)在 keys <- 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
请考虑使用以下代码从 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:
Scores are by default simply the average response for all items that a participant took. If cumulative=TRUE, then these are sum scores. Note, this is dangerous if there are lots of missing values
但是,例如,第一个obs的分数应该是
(-21.0 + 6 + 160 + 110)/4 = 63.75
但结果却是 154.750。
alpha
函数并不是真正用于查找具有截然不同范围的数据分数。基于具有相同范围的项目的正常用例,它通过从最大值 + 最小值中减去这些项目来调整反向得分的项目。在汽车示例的情况下,即 360 + 4 或 364。因此,第一个值是 (364 - 21 + 6 + 160 + 110)/4 = 154.75,如报告的那样。
scoreItems
函数将找到局部最小值和最大值(alpha
也是如此);或者您可以指定它们。
要得到你想要的,你应该使用 scoreItems
函数并指定键以及 min=0
和 max=0
。
请注意,我使用 cs
函数(来自 psychTools
,改编自 Hmisc
)在 keys <- 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