You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:23:11