使用马尔可夫链获取时间序列数据

时间:2018-01-26 17:47:48

标签: r datetime time-series markov-chains

以下是我的数据框当前结构的方式(前6行)。我使用的数据可用here

ID  date        sps     time    pp  datetime            km
1   2012-06-19  MICRO   2:19    0   2012-06-19 02:19    80
2   2012-06-21  MUXX    23:23   1   2012-06-21 23:23    80
3   2012-07-15  MAMO    11:38   0   2012-07-15 11:38    80
4   2012-07-20  MICRO   22:19   0   2012-07-20 22:19    80
5   2012-07-29  MICRO   23:03   0   2012-07-29 23:03    80
8   2012-08-07  PRLO    2:04    0   2012-08-07 02:04    80

列代表:

  • ID:识别号
  • date:观察日期
  • km:location
  • sps:物种代码
  • time:观察时间
  • pp:代码如果观察到的物种(sps)是捕食者(1)或猎物(0)
  • datetime:将datetime行转换为as.POSIXct格式

我想回答的问题:

  

观察到捕食者(pp = 1)的可能性是否随着捕食次数(pp = 0)的增加而增加(例如猎物跟随捕食者的可能性比捕食者更可能通过猎物等)在每个位置(km)?

背景:

  • 对于每个位置(km),我的数据中有一个唯一的行,包括拍摄图像的时间以及照片是捕食者还是猎物的标识。
  • 每个地方都有许多掠食者和猎物的照片。
  • 对于每个位置,捕食者和猎物的观察按时间顺序进行。

我想做什么:

  1. 对于每个位置,详尽地计算观测时间对的数量:猎物 - 食饵,食饵 - 捕食者,捕食者 - 食饵和捕食者 - 捕食者。

  2. 对于每个位置,随机播放(随机化)捕食/猎物的观察(即保持与观察到的捕食/捕食的总数相同)并计算由洗牌产生的观察对的数量:猎物 - 猎物,食饵 - 捕食者,捕食者 - 食饵和捕食者 - 捕食者。记录。计算步骤(1)中观察次数与每次洗牌后观察次数之间的差异。重复1000次。这应该让我意识到猎物,猎物,捕食者 - 捕食者和捕食者 - 捕食者配对序列的原始观察有多大可能被给予观察到的捕食/猎物比例。

  3. 我的问题:

    假设马尔可夫链模型是回答我问题的最合适方式,我怎样才能在R中编码?

    此时,我相信我应该使用的R包是markovchain,但我不知道如何将第1步和第2步转换为R代码。

1 个答案:

答案 0 :(得分:3)

以下是一些代码:

library(dplyr)
library(markovchain)

读入数据和格式时间戳

data <- read.table("~/Downloads/d1.txt", sep="\t", header=T, stringsAsFactors=F)
data$datetime <- as.POSIXct(data$datetime)

按时间排序

data <- data[order(data$datetime, decreasing=F),]

对于每个位置,创建一个pp

序列
data <- data %>% group_by(km) %>% summarize(pp_chain=list(pp)) %>% as.data.frame 
pp_chains <- data$pp_chain; names(pp_chains) <- data$km

在所有序列链上拟合马尔可夫模型

fit <- markovchainFit(pp_chains)

估算转换概率:

print(fit$estimate)
          0          1
0 0.9116832 0.08831677
1 0.5250852 0.47491476

该矩阵表示从0到0的转换概率为0.91;从0过渡到1的概率是0.088;等等。

估计稳定状态:

print(steadyStates(fit$estimate))
             0         1
[1,] 0.8560214 0.1439786

我们可以将转换概率与稳态进行比较。如果转换只是随机的,那么转换将不依赖于先前的状态,它们将仅等于稳态值。

由于情况并非如此,很明显,如果你有一只捕食者,你更有可能拥有另一只捕食者,反之亦然。