gpt4 book ai didi

R ts 缺失值

转载 作者:行者123 更新时间:2023-12-04 18:40:35 24 4
gpt4 key购买 nike

我有一个从 csv 文件中读取的数据框,该文件具有每日观察结果:

Date        Value 
2010-01-04 23.4
2010-01-05 12.7
2010-01-04 20.1
2010-01-07 18.2

问题:缺少数据。
预测包期望一个简单的 ts对象不包含任何缺失数据,而我的数据集在大多数周末和其他随机点上都缺少数据。

转换为 ts不应该工作
ts(values, start = c(1997, 1), frequency = 1)

我能想到的唯一解决方案是将每日数据转换为每周数据,但 R 是一个新事物,可能存在其他更好的解决方案。

最佳答案

一种选择是扩展您的日期索引以包括缺失的观察结果,并使用 na.approx来自 zoo通过插值填充缺失值。

allDates <- seq.Date(
min(values$Date),
max(values$Date),
"day")
##
allValues <- merge(
x=data.frame(Date=allDates),
y=values,
all.x=TRUE)
R> head(allValues,7)
Date Value
1 2010-01-05 -0.6041787
2 2010-01-06 0.2274668
3 2010-01-07 -1.2751761
4 2010-01-08 -0.8696818
5 2010-01-09 NA
6 2010-01-10 NA
7 2010-01-11 -0.3486378
##
zooValues <- zoo(allValues$Value,allValues$Date)
R> head(zooValues,7)
2010-01-05 2010-01-06 2010-01-07 2010-01-08 2010-01-09 2010-01-10 2010-01-11
-0.6041787 0.2274668 -1.2751761 -0.8696818 NA NA -0.3486378
##
approxValues <- na.approx(zooValues)
R> head(approxValues,7)
2010-01-05 2010-01-06 2010-01-07 2010-01-08 2010-01-09 2010-01-10 2010-01-11
-0.6041787 0.2274668 -1.2751761 -0.8696818 -0.6960005 -0.5223192 -0.3486378

即使有缺失值, zooValues仍然是合法的 zoo对象,例如 plot(zooValues)会起作用(在缺失值处存在不连续性),但是如果您计划将某种模型拟合到数据中,您很可能最好使用 na.approx来替换缺失值。

数据:
library(zoo)
library(lubridate)
##
t0 <- "2010-01-04"
Dates <- as.Date(ymd(t0))+1:120
weekDays <- Dates[!(weekdays(Dates) %in% c("Saturday","Sunday"))]
##
set.seed(123)
values <- data.frame(Date=weekDays,Value=rnorm(length(weekDays)))

关于R ts 缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com