当前位置: 首页 > 工具软件 > alpha > 使用案例 >

克隆巴赫系数 Cronbach‘s alpha 及 R, Python 实现

胡元忠
2023-12-01


克隆巴赫系数 Cronbach’s alpha 是量表问卷信度(Reliability)的一个指标,一般大于 0.7 表示问卷的信度可以接受,大于 0.8 表示问卷的信度良好,大于 0.9 表示问卷的信度优秀。

1. 信度与效度

信度即测量的一致性,表示若问卷中的问题重复很多次问同一个人,这个人的回答总是一致的。效度是衡量问卷中的问题能否测量出它应该测量的事物的成都,例如网上的一些 IQ 测试问题真的能反映一个人的真实智力吗?这个就属于效度要衡量的东西。

在结构方程、因子分析中一般要检测信度与效度。

2. 平行测量、 τ \tau τ 等价与同类测量

测量值 x x x 与真值 τ \tau τ 的方程被假设为:
x = α τ + e x=\alpha\tau+e x=ατ+e
其中 e e e 为误差,假设误差的均值为零,并且与真值不相关,即: E ( e ) = 0 E(e)=0 E(e)=0 c o v ( τ , e ) = 0 cov(\tau, e)=0 cov(τ,e)=0

对于两个测量值 x i x_i xi x j x_j xj 假设他们的 e i e_i ei e j e_j ej 不相关,真值相同 τ i = τ i \tau_i=\tau_i τi=τi

  • α i = α j = 1 \alpha_i=\alpha_j=1 αi=αj=1 并且 v a r ( e i ) = v a r ( e j ) var(e_i)=var(e_j) var(ei)=var(ej),那么 x i x_i xi x j x_j xj 为平行测量值。
  • 若仅仅 α i = α j = 1 \alpha_i=\alpha_j=1 αi=αj=1,那么那么 x i x_i xi x j x_j xj τ \tau τ 等价测量值。
  • α i , α j \alpha_i , \alpha_j αi,αj v a r ( e i ) , v a r ( e j ) var(e_i),var(e_j) var(ei),var(ej) 没有相等关系,则为同类测量。

3. 计算公式

信度的标准定义为真值方差与测量值的方差之比,在 τ \tau τ等价时也等于真值与测量值相关系数的平方。 定义 k k k 个测量值的和为 X = x 1 + x 2 + . . . x k X=x_1+x_2+...x_k X=x1+x2+...xk,克隆巴赫系数 Cronbach’s alpha 定义为 X X X 与真值 τ \tau τ 的相关系数平方,并且可以进一步推出它的计算公式为:

ρ τ = k k − 1 [ 1 − ∑ i = 1 k v a r ( x i ) v a r ( X ) ] \rho_{\tau}=\frac{k}{k-1}\left[1-\frac{\sum_{i=1}^{k} var (x_i)}{var(X)}\right] ρτ=k1k[1var(X)i=1kvar(xi)]

v a r ( X ) var(X) var(X) 为所有测量值和的方差(就是问卷中所有问题加和的方差), v a r ( x i ) var(x_i) var(xi) 为每个测量值的方差(就是问卷中单个问题的方差)。

4. R, python 实现

4.1 R实现

在 R 语言中需要安装 ltm 包,该包专门针对结构方程相关的计算。

#install.packages('ltm')
library(ltm)
data = data.frame(Q1=c(1, 2, 2, 3, 2, 2, 3, 3, 2, 3),
                   Q2=c(1, 1, 1, 2, 3, 3, 2, 3, 3, 3),
                   Q3=c(1, 1, 2, 1, 2, 3, 3, 3, 2, 3))

#calculate Cronbach's Alpha
cronbach.alpha(data, CI=TRUE)

显示结果:
Items: 3
Sample units: 10
alpha: 0.773

Bootstrap 95% CI based on 1000 samples
2.5% 97.5%
0.064 0.933

上面还显示了 Cronbach’s 系数的 Bootstrap 置信区间。

4.2 Python 实现

Python 代码:
python 需要安装 pingouin 包,

import pandas as pd
import pingouin as pg

#enter survey responses as a DataFrame
df = pd.DataFrame({'Q1': [1, 2, 2, 3, 2, 2, 3, 3, 2, 3],
                   'Q2': [1, 1, 1, 2, 3, 3, 2, 3, 3, 3],
                   'Q3': [1, 1, 2, 1, 2, 3, 3, 3, 2, 3]})

result = pg.cronbach_alpha(data = df)
print(result)

显示结果:
(0.7734375, array([0.336, 0.939]))

python 得出的系数值与 R 语言一样,但是置信区间有点不一样,因为 python 是用固定的置信区间公式算出的,不是用 bootstrap 方法计算的置信区间。

参考文献123


  1. 潜变量结构方程,肯尼斯.博伦著,赵联飞等译,重庆大学出版社,2022 ↩︎

  2. https://www.statology.org/cronbachs-alpha-in-r/ ↩︎

  3. https://www.statology.org/cronbachs-alpha-in-python/ ↩︎

 类似资料: