在 R 中拟合并评估二阶转移矩阵(马尔可夫过程)?
Fit and evaluate a second order transition matrix (Markov Process) in R?
我正在尝试构建一个二阶马尔可夫链模型,现在我正在尝试从以下数据中找到转换矩阵。
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
现在我知道如何使用 markovchain
包中的函数 markovchainFit(dat)
拟合一阶马尔可夫转移矩阵了。
有没有办法拟合二阶转移矩阵?
如何评价马尔可夫链模型?即我应该选择一阶模型还是二阶模型?
此函数应根据您希望的任何滞后顺序生成马尔可夫链转移矩阵。
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
Markovmatrix <- function(X,l=1){
tt <- table(X[,-c((ncol(X)-l+1):ncol(X))] , c(X[,-c(1:l)]))
tt <- tt / rowSums(tt)
return(tt)
}
Markovmatrix(as.matrix(dat),1)
Markovmatrix(as.matrix(dat),2)
其中 l
是滞后。
例如二阶矩阵,输出为:
A B C D
A 0.2422803 0.2185273 0.2446556 0.2945368
B 0.2426304 0.2108844 0.2766440 0.2698413
C 0.2146119 0.2716895 0.2123288 0.3013699
D 0.2480000 0.2560000 0.2320000 0.2640000
至于怎么测试什么订单型号。有几个建议。 Gottman 和 Roy (1990) 在他们的序贯分析入门书中提出的一种方法是使用 信息值 。有一章是关于这个的——大部分章节都可以在线找到。
您还可以执行似然比卡方检验。这与卡方检验非常相似,因为您将观察到的转换频率与预期的转换频率进行比较。但是,公式如下:
自由度是代码数的平方减一。在您的情况下,您有 4 个代码,因此 (4-1)^2 = 9。然后您可以查找相关的 p 值。
希望对您有所帮助。
我正在尝试构建一个二阶马尔可夫链模型,现在我正在尝试从以下数据中找到转换矩阵。
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
现在我知道如何使用 markovchain
包中的函数 markovchainFit(dat)
拟合一阶马尔可夫转移矩阵了。
有没有办法拟合二阶转移矩阵?
如何评价马尔可夫链模型?即我应该选择一阶模型还是二阶模型?
此函数应根据您希望的任何滞后顺序生成马尔可夫链转移矩阵。
dat<-data.frame(replicate(20,sample(c("A", "B", "C","D"), size = 100, replace=TRUE)))
Markovmatrix <- function(X,l=1){
tt <- table(X[,-c((ncol(X)-l+1):ncol(X))] , c(X[,-c(1:l)]))
tt <- tt / rowSums(tt)
return(tt)
}
Markovmatrix(as.matrix(dat),1)
Markovmatrix(as.matrix(dat),2)
其中 l
是滞后。
例如二阶矩阵,输出为:
A B C D
A 0.2422803 0.2185273 0.2446556 0.2945368
B 0.2426304 0.2108844 0.2766440 0.2698413
C 0.2146119 0.2716895 0.2123288 0.3013699
D 0.2480000 0.2560000 0.2320000 0.2640000
至于怎么测试什么订单型号。有几个建议。 Gottman 和 Roy (1990) 在他们的序贯分析入门书中提出的一种方法是使用 信息值 。有一章是关于这个的——大部分章节都可以在线找到。
您还可以执行似然比卡方检验。这与卡方检验非常相似,因为您将观察到的转换频率与预期的转换频率进行比较。但是,公式如下:
自由度是代码数的平方减一。在您的情况下,您有 4 个代码,因此 (4-1)^2 = 9。然后您可以查找相关的 p 值。
希望对您有所帮助。