如何在R中绘制三列时序数据的单Y轴折线图并计算组间差异p值
R 绘图实现
使用tidyverse系列包即可完成需求中的折线图绘制,完整代码如下:
library(tidyverse) # 导入你提供的数据集 df <- structure(list(Group.1 = structure(c(17897, 17928, 17956, 17987, 18017, 18048, 18078, 18109, 18140, 18170, 18201, 18231, 18262, 18293, 18322, 18353, 18383, 18414, 18444, 18475, 18506, 18536, 18567, 18597), class = "Date"), w_VidP = c(92.5925925925926, 95.0391644908616, 91.2820512820513, 94.1326530612245, 96.8838526912181, 93.6962750716332, 94.1340782122905, 95.1219512195122, 94.6635730858469, 91.0869565217391, 93.9130434782609, 95.0664136622391, 93.7833037300178, 93.7943262411348, 73.7814554522784, 78.7838462772634, 80.9031501001477, 81.311686371836, 83.6755826502932, 85.4640458697901, 92.2114249211173, 93.379673311808, 93.451937568209, 92.7840865787669), h_VidP = c(90.9090909090909, 83.3333333333333, 88.2352941176471, 92.8571428571429, 90.4761904761905, 0, 0, 0, 0, 96, 0, 0, 0, 96, 78.3102143757881, 85.030303030303, 87.3960332693538, 87.9140328697851, 89.0800794176042, 90.1778808971384, 94.3351505095994, 94.8272066916135, 94.7485536270583, 93.8617401668653 ), nwo_VidP = c(84.6153846153846, 85.7142857142857, 85.7142857142857, NaN, NaN, 90.9090909090909, NaN, 87.5, 94.7368421052632, 90.9090909090909, 89.6551724137931, 66.6666666666667, 80, 61.5384615384615, 72.1188118811881, 81.7953861584754, 84.7028086218158, 84.8016997167139, 85.1056211958468, 86.2537123462028, 91.467481934408, 92.6741803278689, 92.8238838674336, 92.0883387938357)), row.names = c(NA, -24L), class = "data.frame") # 宽表转长表适配ggplot绘图逻辑 df_long <- df %>% pivot_longer(cols = -Group.1, names_to = "分组", values_to = "VidP") %>% mutate(VidP = ifelse(is.nan(VidP), NA, VidP)) # 将NaN替换为R可识别的缺失值格式 # 绘制折线图 ggplot(df_long, aes(x = Group.1, y = VidP, color = 分组, group = 分组)) + geom_line(na.rm = TRUE) + # 自动跳过缺失值 labs(x = "日期", y = "% Vid", color = "分组") + theme_bw()
三组时间序列变化趋势差异的显著性检验方法
要判断三组数据随时间的变化是否存在显著差异,核心是检验「分组×时间」的交互作用是否显著,优先推荐以下两种方法:
- 线性混合效应模型(LMM):对缺失值容忍度高,不需要数据完全平衡,适配你的数据特征。将
VidP作为因变量,分组、转换为数值型的时间变量作为固定效应,加入分组和时间的交互项,检验交互项的p值即可,若p<0.05则说明三组随时间的变化趋势存在显著差异,可配合lme4和lmerTest包实现p值计算。 - 重复测量方差分析:如果数据满足正态分布、方差齐性的前提,也可以选用该方法,但需要先对缺失值进行插补处理,易用性弱于线性混合效应模型。
注意:你数据中的
h_VidP在2019年有多条0值记录,需要先确认这些0值是真实测量值还是缺失值,若为缺失值需要替换为NA后再进行分析,否则会大幅干扰检验结果。
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

