潜分类分析
潜分类分析适用于同时满足下列情况的分析情境:
- 观测变量为类别变量;
- 潜变量为类别变量。
模型拟合
在处理完数据后,只需要两步即可拟合模型模型拟合:
- 定义公式;
- 调用
poLCA
命令。
例如:
f <- cbind(var1, var2, var3, var4) ~ 1 LCA_result <- poLCA(f, data = your_data, nclass = 4)
需要注意的事项为:
- 变量的取值需要为正整数,即如果输入二分变量,需要将其编为1-2,而非0-1。
- 公式的写法为:响应变量 ~ 预测因子。
- 将观测变量依次写在
cbind()
中。 - 一般而言,预测因子处填写1。
- 在有协变量时,将协变量写在预测因子处,例如
iv1+iv2*iv3
- 将观测变量依次写在
运行即可得到结果。关于poLCA
的更多参数设置,可以使用?poLCA
查看。
模型结果查看
一种直观的方式是使用图形来查看。例如:
plot(LCA_result)
另一种方式是通过报表。报表不需要使用summary()
函数,直接使用变量即可:
LCA_result
模型结果提取
模型拟合优度
这里以BIC为例:
LCA_result$bic
各潜类在各观测变量上取值的概率
该段程序适用的情境为:所有观测变量为二分。
table_all_in_one <- data.frame() for (i in 1:length(LCA_result$probs)) { LCA_result$probs[[i]] %>% as.data.frame() %>% mutate(class = str_extract(rownames(LCA_result$probs[[i]]), "\\d"), var = names(LCA_result$probs)[i]) %>% dplyr::select(var, class, everything()) %>% rename(Pr1 = `Pr(1)`, Pr2 = `Pr(2)`) %>% rbind(table_all_in_one, .) -> table_all_in_one } rownames(table_all_in_one) <- NULL
预测结果
使用$predclass
即可获取预测的分类结果。
LCA_result$predclass
模型调整
模型调整一般需要同时考虑统计指标和理论意义。
首先,在统计指标上,一般而言,需要满足以下条件:
- 模型报表中,没有某一潜类在某一观测变量的两个取值上出现概率分别为0和1的。
此外,在对比多个潜分类模型时,可以考虑AIC/BIC等指标,但更重要的是是否和自己的理论假设相契合。
注意事项
对于同样的输入, poLCA
每次运行的结果会有微小的差异。因此,建议使用者在获得一个较好模型后,使用readr::write_rds()
函数保存模型结果。
实证文章推荐
黄超. 家长教养方式的阶层差异及其对子女非认知能力的影响[J]. 社会, 2018, 038(006):216-240.