【问题标题】:Interpolate a correction vector for xts object in R. Subtract background level from values在 R 中为 xts 对象插入一个校正向量。从值中减去背景水平
【发布时间】:2015-01-26 22:49:45
【问题描述】:

我有许多具有结构的 xts 对象:

*                    Resp_1      
... 
2014-11-24 18:45:41 " 4.98683210"
2014-11-24 18:45:52 " 4.94921172"
2014-11-24 18:46:02 " 4.95605396"
2014-11-24 18:46:12 " 4.95352998"
2014-11-24 18:46:23 " 4.99771640"
2014-11-24 18:46:33 " 4.98459552"
2014-11-24 18:46:44 " 5.00530512"
2014-11-24 18:46:54 " 4.98655576"
2014-11-24 18:47:04 " 4.98136715"
2014-11-24 18:47:15 " 5.01771098"
...

测量值有时间戳。

由于实验的进行方式,感兴趣的值包含需要减去的背景水平。使这更加困难的是背景水平不是恒定的,并且不可能使用单个校正值。

http://i.imgur.com/GBD8clN.jpg?1

所以背景水平是在实验前后测量的(见红色虚线末端的图片)。

现在我想从测量值中减去背景水平。我想这样做的方法是在背景水平之前和之后创建一个插值背景水平向量,然后简单地从 Resp_1 值中减去这个向量。

目前,我已经设法从图表中手动确定包含前后背景水平的时间段,并计算两者的平均值。 例如:

backg_before<-mean(as.numeric(df$Resp_1["2014-11-24 18:45:40/2014-11-24 18:47:20"]))
backg_after<-mean(as.numeric(df$Resp_1["2014-11-25 09:33:00/2014-11-25 09:36:00"]))

所以我知道背景级别之前和之后的平均值,但我不知道如何在两个级别之间插入向量。

向量应该经过选定的前后时间段的中间。例如,背景电平之前的平均值是 4.98,它的时间线位置应该是大约 18:46:28。由于不存在这样的时间戳,它也可能是最接近的现有时间戳(18:46:23 或 18:46:33)。

我不知道如何找到 xts 时间序列索引的中间值。有没有办法做到这一点?

以及如何构建所需的向量?

【问题讨论】:

    标签: r time-series xts


    【解决方案1】:

    可以通过从现有 xts 索引添加 UNIX 时间戳格式来解决问题。那么就很容易计算出时间序列的中间值作为秒数的均值。

    UNIX 秒也使构建向量变得容易,因为可以使用简单的代数来找到所需的斜率和 y 截距。

    【讨论】:

      猜你喜欢
      • 2013-05-27
      • 2019-12-31
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      相关资源
      最近更新 更多