【问题标题】:How to compute Cronbach's alpha for multiple subscales at the same time using R?如何使用 R 同时计算多个子量表的 Cronbach's alpha?
【发布时间】:2020-10-27 03:21:11
【问题描述】:

我是使用 R 的初学者。当我尝试计算多个子量表的 Cronbach's alpha 时,我很吃力。我正在使用 psych 包来做到这一点。

这是我的数据库的示例: 我有 2 个不同的分量表。子量表 A 包括项目 1 到 3,子量表 B 包括项目 4 到 5。

Subscale  Student  Item1  Item2  Item3  Item4  Item5  
   A        1       1      0     1       NA    NA
   A        2       0      1     1       NA    NA
   A        3       1      1     1       NA    NA
   B        1       NA     NA    NA      1     1
   B        2       NA     NA    NA      1     0
   B        3       NA     NA    NA      0     0

同时计算每个分量表的 Cronbach's alpha。我尝试使用 psych 包。

Reliability <- group_by(df,Subscale) %>%
alpha()

但是,我收到以下错误: 具有缺失值的可能变量是 Item4 Item5 主体错误(x,分数 = FALSE): 抱歉:相关矩阵中的缺失值 (NA) 不允许我继续。 请删除这些变量,然后重试。 另外:警告信息: 1:在 var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) 中: 强制引入的 NA 2:在 alpha(.) 中:Item = Subscale 没有方差并被删除

是否可以在计算这些子量表的 Cronbach's alpha 的同时创建一个新的数据框或包含结果的列表?还是应该使用 split 函数将两个子尺度分开并分别计算每个子尺度的 alpha?

提前致谢!

【问题讨论】:

  • 在显示的数据中,没有名为“Section”的列,是“Subscale”吗?
  • 试试library(dplyr);library(purrr);df %&gt;% select(-Student) %&gt;% group_split(Subscale) %&gt;% map(~ alpha(.[-1]))
  • 我犯了一个错误,但部分表示子尺度。我只是在问题中编辑它。对不起!

标签: r psych


【解决方案1】:

假设 'Subscale' 是列名,alphax 应该是 data.framematrix。一个选项是将group_split 转换为data.frames 的list,然后用map 循环list,并在“项目”列上应用alpha

library(dplyr)
library(purrr)
library(psych)
df %>% 
    select(-Student) %>%
    group_split(Subscale) %>%
    map(~ alpha(.[-1]))

数据

df <- structure(list(Subscale = c("A", "A", "A", "B", "B", "B"), Student = c(1L, 
2L, 3L, 1L, 2L, 3L), Item1 = c(1L, 0L, 1L, NA, NA, NA), Item2 = c(0L, 
1L, 1L, NA, NA, NA), Item3 = c(1L, 1L, 1L, NA, NA, NA), Item4 = c(NA, 
NA, NA, 1L, 1L, 0L), Item5 = c(NA, NA, NA, 1L, 0L, 0L)), class = "data.frame", 
row.names = c(NA, 
-6L))

【讨论】:

  • 非常感谢!它工作得很好。我使用列表保存了结果(例如:map(~list(alpha(.[-1])))。是否可以从该列表中提取每个子尺度的 raw_alpha 值?
  • @Rita 在totalalpha.drop 中有一个raw_alpha。您要提取哪一个,即%&gt;%map(~ alpha(.[-1])$alpha.drop$raw_alpha)%&gt;% map(~ alpha(.[-1])$total$raw_alpha) 得到raw_alpha
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2016-08-05
  • 2020-07-15
相关资源
最近更新 更多