小编Jen*_*ler的帖子

用 R 对不规则时间序列进行插值

在 R 中搜索时间序列数据的线性插值时,我经常na.approx()zoo包中找到要使用的建议。

然而,对于不规则的时间序列,我遇到了问题,因为插值在间隙数量上均匀分布,没有考虑该值的关联时间戳。

我找到了一个围绕使用的解决方案approxfun(),但我想知道是否有一个更干净的解决方案,最好基于tsibble具有tidyverts包系列函数的对象?

以前的答案依赖于通过填补空白将不规则日期网格扩展为规则网格。然而,当插值期间应考虑白天时,这会导致问题。

这是一个(修订后的)最小示例,其中包含 POSIXct 时间戳而不是仅日期:

library(tidyverse)
library(zoo)

df <- tibble(date = as.POSIXct(c("2000-01-01 00:00", "2000-01-02 02:00", "2000-01-05 00:00")),
             value = c(1,NA,2))

df %>% 
  mutate(value_int_wrong = na.approx(value),
         value_int_correct = approxfun(date, value)(date))

# A tibble: 3 x 4
  date                value value_int_wrong value_int_correct
  <dttm>              <dbl>           <dbl>             <dbl>
1 2000-01-01 00:00:00     1             1                1   
2 2000-01-02 02:00:00    NA             1.5              1.27
3 2000-01-05 00:00:00     2             2                2   
Run Code Online (Sandbox Code Playgroud)

有什么想法如何(有效)处理这个问题吗?感谢您的支持!

r time-series linear-interpolation tidyverse tidyverts

7
推荐指数
2
解决办法
2148
查看次数

利用R在不规则网格上插值和绘制2d /空间时间序列数据

(这是我的第一篇文章,所以(i)我希望不要破坏太多规则,(ii)必须在外部存储示例图

我想要显示不规则网格时间序列数据,其中显示的参数也是纬度或水深等地理测量的函数.包含日期(日期),地理参数水深(dep)和感兴趣盐度(sal)参数的示例数据文件以及生成的初步散点图ggplot2存储在我们的

owncloud

密码:时间序列

ggplot图的R代码是:

# Load required packages
library(ggplot2)
library(data.table)
library(colorRamps)
library(scales)

# Import spatial timeseries data
df      <- data.table(read.csv("timeseries_example.csv"))
df$date <- as.POSIXct(strptime(df$date, format="%m/%d/%Y", tz="GMT"))

# Scatterplot with color representing the z parameter

Fig <-
ggplot(data=df, aes(date, dep, col=Sal))+
  geom_point()+
  scale_y_reverse()+
  scale_colour_gradientn(colours = matlab.like2(7), oob=squish)

tiff("./example_timeseries_R_ggplot.tiff", width = 200, height = 100, 
  units =  'mm', res = 300, compression = 'lzw')
Fig
dev.off()
Run Code Online (Sandbox Code Playgroud)

由于数据在空间和时间上间隔不规则,因此使用ggplot geom_tile()函数绘图需要插值.

免费提供的软件海洋数据视图(ODV)实现了这种插值,我想重现与R一起存储在我们自己的云(上面的链接)中的ODV图.

由于此问题类似于先前解决的问题,我尝试在更精细的日期网格上插入参数sal并使用包进行插入akima.但是,这不适用于作为POSIXct对象的x参数.

有人有解决方案吗?

interpolation r time-series ggplot2

3
推荐指数
1
解决办法
1454
查看次数