【问题标题】:extracting number of local extremum point in a time-series data in R在R中的时间序列数据中提取局部极值点的数量
【发布时间】:2017-03-27 20:49:46
【问题描述】:

我在一个数据集中有 3000 人,每个人都有心率作为时间序列。 时间序列间隔为 24 小时,每小时最多有 6 个值,因此每个人最多有 24*6=144 个值(通常更少)。 对于每个人,我想提取他在时间间隔内的“偷看”次数。

我已经检查并没有找到任何计算或返回的函数超过间隔的“绝对最小值/最大值”。

我已经添加了一个我需要的示例,在下图中虽然有一个绝对的最小值和最大值,但我需要整个四个点(2 个最大值和 2 个最小值)。

我真的不知道如何提取这种期望,即创建我的一个函数并使用很多不好的 for 循环。

你能帮忙吗?

时间序列样本:

输入(小时[1:20,])

structure(list(ID = c(5838L, 5838L, 5838L, 5838L, 5838L, 5838L, 
5838L, 5838L, 5838L, 5838L, 5838L, 5838L, 5838L, 5838L, 5838L, 
5983L, 5983L, 5983L, 5983L, 5983L), Heart.Rate = c(103L, 109L, 
109L, 109L, 111L, 111L, 120L, 122L, 125L, 62L, 73L, 84L, 92L, 
97L, 98L, 101L, 105L, 105L, 106L, 106L), Time = structure(c(1077080040, 
1077083640, 1077084000, 1077084240, 1077083040, 1077085440, 1077082440, 
1077081240, 1077081840, 1077086640, 1077087240, 1077084900, 1077080700, 
1077080400, 1077086040, 1088496000, 1088494680, 1088495280, 1088498280, 
1088504880), class = c("POSIXct", "POSIXt"), tzone = "UTC")), .Names = c("ID", 
"Heart.Rate", "Time"), row.names = c(NA, 20L), class = "data.frame")

【问题讨论】:

  • 你是如何得到流畅的情节的?绘制这些数据并没有给出那幅图。
  • @G5W 这只是一个说明我需要的示例,仅此而已。

标签: r time-series


【解决方案1】:

你想要的是找到膨胀点(局部极值)

您可能想查看此package。我偶尔使用它,它真的很有用。

您可能还想查看此post

正如上面所说,您想要找到 y(心率)变化符号发生变化的点。

参考那里,这应该适合你:

infl <- c(FALSE, diff(diff(Heart.rate)>0)!=0)

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2015-04-13
    相关资源
    最近更新 更多