潜分类分析

潜分类分析适用于同时满足下列情况的分析情境:

  • 观测变量为类别变量;
  • 潜变量为类别变量。

模型拟合

在处理完数据后,只需要两步即可拟合模型模型拟合:

  • 定义公式;
  • 调用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.