R:如何确定序列模式和频率

时间:2014-11-17 20:16:03

标签: r events sequence analysis

数据代表可数事件。目标是识别依赖参数之前的所有独立参数序列,并确定序列是否生成误报,依赖参数为零。

首先,我只想尝试在因变量之前或在空因变量之前生成自变量的频率。

这会生成一些随机计数数据,dep是因变量,indp1-5是自变量。

# Data sequence frequency analysis

library(data.table)
set.seed(13)
Ns=20
dtab<-data.table(dep = sample(0:3,Ns,prob=c(3,2,1,.5),replace=TRUE),
               indp1 = sample(0:3,Ns,prob=c(5,2,1,.5),replace=TRUE ),
               indp2 = sample(0:3,Ns,prob=c(5,2,1,.5),replace=TRUE ),
               indp3 = sample(0:3,Ns,prob=c(5,2,1,.5),replace=TRUE ),
               indp4 = sample(0:3,Ns,prob=c(5,2,1,.5),replace=TRUE ),
               indp5 = sample(0:3,Ns,prob=c(5,2,1,.5),replace=TRUE ))

找到具有空因变量的行,并将自变量的延迟出现总和制成表格。通过更改jlag的值来手动生成样本数据。

ir <- which(dtab$dep == 0)
jlag=4; colSums(dtab[ir[ir>(jlag+1)]-jlag,])
# Desired result

#   dep = 0, lag sums
#     lag  indp1 indp2 indp3 indp4 indp5 
#       0      3     6    10     2     3 
#       1      6     4     9     2     5
#       2      2     4     4     3     6
#       3      2     7     5     2     6
#       4      1     4     6     0     0

找到具有非零因变量的行,并将自变量的滞后事件的总和制成表格。同样,通过更改jlag的值来手动生成样本数据。

ir <- which(dtab$dep > 0)
jlag=4; colSums(dtab[ir[ir>(jlag+1)]-jlag,])
# Desired result

#   dep = 0, lag sums
#     lag  indp1 indp2 indp3 indp4 indp5 
#       0      7    13     6     5    10
#       1      4    15     6     5     7
#       2      5    12    10     2     4
#       3      5     7     9     3     3
#       4      5    10     8     5     9

我正在寻找有关如何识别事件序列的建议。我首先尝试估计独立事件发生在依赖事件之前的概率,以及独立事件发生在空因子事件之前的概率。

可以用

提取自变量序列
dtab.seq <- dtab[,2:6,with=FALSE]
seq_matrix = unique(dtab.seq)

可以从dtab.seq到seq_matrix的行索引的映射生成转换矩阵,然后从向量偏移的频率表中计算转换矩阵。

seq_matrix_rows  <- apply(dtab.seq,1,
             function(xx){
               which(apply(seq_matrix,1,function(x){all(x==xx)}))
             })

trans_mat <- table(seq_matrix_rows[1:(nrow(dtab.seq)-1)],
                   seq_matrix_rows[2:nrow(dtab.seq)])

这将绘制转换矩阵

library(Matrix)
image(trans_mat)
trans_mat[1:10,1:10]

从属转换矩阵更容易,因为因变量是整数

dep_trans_mat <- table(dtab$dep,
                         seq_matrix_rows)

我认为它提供了序列模式,序列频率,序列(状态)转换矩阵和序列/依赖转换矩阵。

0 个答案:

没有答案