如何在R中实现一维列联表的贝叶斯卡方拟合优度检验?
问题解答
1. 适合R中一维表的贝叶斯卡方拟合优度检验函数
对于一维列联表的贝叶斯拟合优度检验,推荐使用BayesFactor包中的multinomBF函数。它专门用于检验多项分布的观测频数是否符合指定的理论概率(默认是均匀分布,即各类别概率相等),完全适配一维表的分析场景。
2. 示例代码实现与结果输出
以下是基于你提供的代码修改后的完整实现:
# 设置随机种子确保结果可复现 set.seed(123) # 生成随机数据 n <- 490 V1 <- sample(c(1, 2, NA), n, replace = TRUE) # 创建数据框并添加类别标签 df <- data.frame(V1) expss::val_lab(df$V1) = expss::num_lab("1 Low 2 High") # 过滤缺失值(拟合优度检验通常不纳入缺失值分析) df_clean <- df[!is.na(df$V1), ] # 生成观测频数表 obs_counts <- table(df_clean$V1) # 加载BayesFactor包 library(BayesFactor) # 执行贝叶斯多项分布检验(默认检验是否符合均匀分布) bf_result <- multinomBF(obs_counts, priorConcentration = 1) # 输出贝叶斯因子结果 print(bf_result)
结果说明
运行代码后输出的贝叶斯因子(BF)可直接用于判断假设支持强度:
- 若BF > 1,说明数据更支持备择假设(即各类别频数不符合均匀分布);
- 若BF < 1,说明数据更支持原假设(即各类别频数符合均匀分布);
- BF的数值代表证据相对强度,比如BF=5表示备择假设的证据是原假设的5倍。
如果需要检验观测频数是否符合自定义理论概率(比如假设Low占60%、High占40%),可修改代码如下:
# 指定自定义理论概率 hyp_prob <- c(0.6, 0.4) bf_custom <- multinomBF(obs_counts, priorConcentration = 1, nullProbs = hyp_prob) print(bf_custom)
内容的提问来源于stack exchange,提问作者pdeli
相关产品推荐
相关产品推荐

