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

R新手求助:在ggplot2中绘制日均温的置信区间

问题原因与解决方案

核心问题

你的代码无法展示置信区间,是因为每个Date仅对应唯一的mean_temp值。mean_cl_normal函数需要同一分组下存在多个观测值,才能基于正态分布计算均值的置信区间——单值分组没有样本波动,自然无法生成置信区间范围。


解决方案分两种场景:

场景1:你有原始温度观测数据(非聚合后的日均数据)

如果你的数据集里包含每日的多组温度观测(比如小时级数据),直接用stat_summary分别绘制均值折线和置信区间带即可:

library(ggplot2)

# 假设raw_data是包含Date(日期)和temp(原始温度)的数据集
ggplot(raw_data, aes(x = Date, y = temp)) +
  # 绘制日均温度折线
  stat_summary(geom = "line", fun = mean, color = "black", linewidth = 1) +
  # 绘制95%置信区间带
  stat_summary(geom = "ribbon", fun.data = mean_cl_normal, 
               fun.args = list(conf.int = 0.95), alpha = 0.5, fill = "gray60") +
  labs(x = "日期", y = "日均温度", title = "四个月日均温度与95%置信区间")

场景2:只有当前聚合后的日均数据

如果没有原始观测,你可以选择按更大的时间周期(比如周/月)分组,计算周期内的均值与置信区间:

library(ggplot2)
library(dplyr)
library(lubridate)

# 按周分组,计算周均温与95%置信区间
period_data <- DailyAvgL5 %>%
  mutate(week = floor_date(Date, "week")) %>% # 将日期归到每周首日
  group_by(week) %>%
  summarize(
    mean_temp = mean(mean_temp),
    # 用t分布计算置信区间(样本量小时更准确)
    ci_low = mean_temp - qt(0.975, n()-1)*sd(mean_temp)/sqrt(n()),
    ci_high = mean_temp + qt(0.975, n()-1)*sd(mean_temp)/sqrt(n())
  )

# 绘制周期均值折线+置信区间
ggplot(period_data, aes(x = week, y = mean_temp)) +
  geom_line(color = "black", linewidth = 1) +
  geom_ribbon(aes(ymin = ci_low, ymax = ci_high), alpha = 0.5, fill = "gray60") +
  labs(x = "周", y = "周均温度", title = "四个月周均温度与95%置信区间")

关于z_scoremean_temp的可视化

如果要展示标准化温度的置信区间,只需将上述代码中的mean_temp替换为z_scoremean_temp即可,逻辑完全一致:

# 示例:按周计算z_score的置信区间
z_period_data <- DailyAvgL5 %>%
  mutate(week = floor_date(Date, "week")) %>%
  group_by(week) %>%
  summarize(
    z_mean = mean(z_scoremean_temp),
    ci_low = z_mean - qt(0.975, n()-1)*sd(z_scoremean_temp)/sqrt(n()),
    ci_high = z_mean + qt(0.975, n()-1)*sd(z_scoremean_temp)/sqrt(n())
  )

ggplot(z_period_data, aes(x = week, y = z_mean)) +
  geom_line(color = "darkblue", linewidth = 1) +
  geom_ribbon(aes(ymin = ci_low, ymax = ci_high), alpha = 0.5, fill = "lightblue")

内容的提问来源于stack exchange,提问作者Matt Schaaf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:57:24