2

我有一个数据框(底部的可重复示例),其中包含一列表示降水量的值、一列测量日期值以及一列分别用于纬度、经度和海拔坐标的列。这些数据涵盖了 10 年的测量,以及 10 个不同的纬度/经度/海拔点(我将称之为“站”的级别)。

降水列是 MCAR,缺少 3.4% 的值。我的目标是估算缺失值,同时考虑时间相关性(NA 在其台站时间序列中的位置)和空间相关性(NA 与其余点的地理关系)。

我不认为典型的基于 ARIMA 的技术,例如在 Amelia 或 ImputeTS 中发现的技术会满足,因为它们仅限于单变量数据。

我对使用 KFAS 包很感兴趣,因为我相信它可以让我将这些不同的“站”视为“状态空间”中的“状态”,并使我能够使用卡尔曼平滑来“预测”基于空间和时间变量的相关性。

我的麻烦是我很难克服 KFAS 的学习曲线并实施这个模型。文档很少,几乎没有教程或针对初学者的材料。我觉得我什至不知道如何开始。

可以这样使用 KFAS 吗?您将如何应对这一挑战?KFAS 中的基本步骤是什么样的?

由于我几乎不知道如何构建这个问题,因此我努力制作良好的可重复数据。该样本数据涵盖了 1 个月内的三个“站点”,我认为这足以进行演示。这些值是现实的,但并不准确。

#defining the precip variable
set.seed(76)
precip <- sample(0:7, 30, replace=TRUE)

#defining the categorical variables 
lon1 <- (-123.7500)
lon2 <- (-124.1197)
lon3 <- (-124.0961)
lat1 <- (43.9956)
lat2 <- (44.0069)
lat3 <- (44.0272)
elev1 <- 76.2
elev2 <- 115.8
elev3 <- 3.7
date1 <- seq(as.Date('2011-01-01'), as.Date('2011-01-10'),by=1)
date2 <- seq(as.Date('2011-01-11'), as.Date('2011-01-20'),by=1)
date3 <- seq(as.Date('2011-01-21'), as.Date('2011-01-30'),by=1) 

#creating the df
reprex.data <- NULL
reprex.data$precip <- precip

#inserting NA's randomly into the precip vector now to easily avoid doing it to the other variables 
reprex.data <- as.data.frame(lapply(reprex.data, function(cc) cc[sample(c(TRUE, NA), prob = c(0.85, 0.15), size = length(cc), replace = TRUE)]))

#creating the rest of the df 
reprex.data$lon[1:10] <- lon1
reprex.data$lon[11:20] <- lon2
reprex.data$lon[21:30] <- lon3
reprex.data$lat[1:10] <- lat1
reprex.data$lat[11:20] <- lat2
reprex.data$lat[21:30] <- lat3
reprex.data$elev[1:10] <- elev1
reprex.data$elev[11:20] <- elev2
reprex.data$elev[21:30] <- elev3
reprex.data$date[1:10] <- date1
reprex.data$date[11:20] <- date2
reprex.data$date[21:30] <- date3

#viola
head(reprex.data)
4

0 回答 0