缺失数据的时间序列图
Posted
技术标签:
【中文标题】缺失数据的时间序列图【英文标题】:time series plot for missing data 【发布时间】:2022-01-06 14:00:13 【问题描述】:我有一些序列事件数据,我想在 value
上绘制随时间变化的缺失趋势。示例如下:
id time value
1 aa122 1 1
2 aa2142 1 1
3 aa4341 1 1
4 bb132 1 2
5 bb2181 2 1
6 bb3242 2 3
7 bb3321 2 NA
8 cc122 2 1
9 cc2151 2 2
10 cc3241 3 1
11 dd161 3 3
12 dd2152 3 NA
13 dd3282 3 NA
14 ee162 3 1
15 ee2201 4 2
16 ee3331 4 NA
17 ff1102 4 NA
18 ff2141 4 NA
19 ff3232 5 1
20 gg142 5 3
21 gg2192 5 NA
22 gg3311 5 NA
23 gg4362 5 NA
24 ii111 5 NA
NA
假设随着时间的推移而增加(行为正在消失)。如何跨时间绘制NA
【问题讨论】:
这完全取决于您的型号?!也许统计数据交换(交叉验证)是提出这个问题的更好地方? 一些想法:cran.r-project.org/web/packages/naniar/vignettes/… 感谢参考! @JonSpring 【参考方案1】:我想这就是你要找的东西?您想查看随着时间的推移出现了多少 NA。假设这是正确的,如果每次都是一个组,那么您可以计算每个组中出现的NA的数量
数据:
df <- structure(list(id = structure(1:24, .Label = c("aa122", "aa2142",
"aa4341", "bb132", "bb2181", "bb3242", "bb3321", "cc122", "cc2151",
"cc3241", "dd161", "dd2152", "dd3282", "ee162", "ee2201", "ee3331",
"ff1102", "ff2141", "ff3232", "gg142", "gg2192", "gg3311", "gg4362",
"ii111"), class = "factor"), time = c(1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L,
5L, 5L), value = c(1L, 1L, 1L, 2L, 1L, 3L, NA, 1L, 2L, 1L, 3L,
NA, NA, 1L, 2L, NA, NA, NA, 1L, 3L, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-24L))
library(tidyverse)
library(ggplot2)
df %>%
group_by(time) %>%
summarise(sumNA = sum(is.na(value)))
# A tibble: 5 × 2
time sumNA
<int> <int>
1 1 0
2 2 1
3 3 2
4 4 3
5 5 4
然后您可以使用ggplot2
进行绘制
df %>%
group_by(time) %>%
summarise(sumNA = sum(is.na(value))) %>%
ggplot(aes(x=time)) +
geom_line(aes(y=sumNA))
如您所见,随着时间的增加,NA 的数量也会增加
【讨论】:
感谢@neuron 的回答!这正是我一直在寻找的。我会编辑您的代码以显示百分比而不是总和:summarise(percent = 100 * n() / nrow( df ))
以上是关于缺失数据的时间序列图的主要内容,如果未能解决你的问题,请参考以下文章
堆叠条形图将变量转换为ggplot2 R中不相关变量的基于存在缺失的百分比
R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(设置坐标轴为百分比以显示缺失值的比例)
R语言ggplot2可视化:计算dataframe中每个数据列缺失值的个数使用堆叠的条形图(Stacked Barplot)可视化每个数据列的缺失值的情况(自定义堆叠条形图的形式)