数据代表可数事件。目标是识别依赖参数之前的所有独立参数序列,并确定序列是否生成误报,依赖参数为零。
首先,我只想尝试在因变量之前或在空因变量之前生成自变量的频率。
这会生成一些随机计数数据,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)
我认为它提供了序列模式,序列频率,序列(状态)转换矩阵和序列/依赖转换矩阵。