簡體   English   中英

在R中的時間序列數據中提取局部極值點數

[英]extracting number of local extremum point in a time-series data in R

我的數據集中有3000個人,每個人的心率都是一個時間序列。 時間序列間隔為24小時,並且每個小時中最多有6個值,因此每個人的總計最大值為24 * 6 = 144個值(通常更少)。 我想為每個人提取時間間隔內的“偷看”次數。

我已經檢查過,但沒有找到任何函數可以計算或還給區間的“絕對最小值/最大值”。

我在下面的圖中添加了一個我需要的示例,盡管有一個絕對的最小值和最大值,但我需要整整四個點(2個最大值和2分鍾)。

我真的不知道該如何提取創建我的一個函數並使用很多for循環的期望,這不好。

你能幫我嗎?

例

時間序列樣本:

dput(小時[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")

您要查找的是通脹點(本地極值)

您可能需要檢查此軟件包 我偶爾使用它,真的很有用。

另外,您可能要檢查此職位

就像那里所說的,您要找到y(心率)變化的符號變化的點。

參考那里,這應該為您工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM