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

在R中为泊松分布多类别计算并绘制均值+置信区间

泊松类别数据的均值+置信区间柱状图实现方案

问题概述

你有一份包含类别与计数的数据集(计数服从泊松分布),示例数据如下:

df$category <- c("a", "d", "a", "q", "d", "d", "q", "d", "a", "q")
df$count <- c(3, 2, 0, 5, 0, 4, 8, 0, 2, 4)

你需要按类别计算均值及置信区间并绘制柱状图,但手动拆分类别后使用apply函数时触发错误:

Error in apply(a$count, FUN = lim1) : dim(X) must have a positive length
同时手动处理多类别效率极低,需要简洁的批量处理方案。

错误原因

apply函数仅适用于矩阵或数组这类具有维度的对象,而单个类别的计数是一维向量,根本不需要用apply,直接调用你定义的lim1/lim2函数即可;但手动拆分每个类别重复代码的方式本身就不适合多类别场景。

简洁解决方案(支持任意数量类别)

使用dplyr进行分组统计,结合ggplot2绘图,全程无需手动拆分数据集:

1. 加载依赖包

library(dplyr)
library(ggplot2)

2. 分组计算统计量

方法1:正态近似置信区间(与你原逻辑一致)

# 定义统计函数
SE <- function(x) sd(x)/sqrt(length(x))
lower_ci <- function(x) mean(x) - 1.96 * SE(x)
upper_ci <- function(x) mean(x) + 1.96 * SE(x)

# 批量计算每个类别的均值与置信区间
summary_df <- df %>%
  group_by(category) %>%
  summarise(
    mean_count = mean(count),
    lower_ci = lower_ci(count),
    upper_ci = upper_ci(count),
    .groups = "drop"  # 取消分组状态,方便后续绘图
  )

方法2:泊松分布精确置信区间(更贴合数据分布)

由于你的真实数据服从泊松分布,推荐使用精确置信区间替代正态近似:

summary_df <- df %>%
  group_by(category) %>%
  summarise(
    total_count = sum(count),
    sample_size = n(),
    mean_count = total_count / sample_size,
    # 调用泊松检验计算精确置信区间
    lower_ci = poisson.test(total_count, sample_size)$conf.int[1],
    upper_ci = poisson.test(total_count, sample_size)$conf.int[2],
    .groups = "drop"
  )

3. 绘制均值+置信区间柱状图

ggplot(summary_df, aes(x = category, y = mean_count)) +
  # 绘制均值柱状图
  geom_col(fill = "#4CAF50", alpha = 0.8) +
  # 绘制置信区间误差棒
  geom_errorbar(aes(ymin = lower_ci, ymax = upper_ci), width = 0.2, color = "#333333") +
  # 添加标签与主题
  labs(title = "各类别计数均值及95%置信区间", x = "类别", y = "平均计数") +
  theme_bw()

原代码修复(仅作参考,不推荐)

如果你一定要用原逻辑处理单个类别,只需去掉apply直接调用函数:

# 假设a是你拆分的子集
confidence1a <- lim1(a$count)
confidence2a <- lim2(a$count)

但这种方式仅适用于少量类别,多类别场景强烈推荐分组统计方案。


内容的提问来源于stack exchange,提问作者Laura Schefold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:03:12