bounty将在18小时后过期。回答此问题可获得+50的声誉奖励。stats_noob正在寻找来自声誉良好来源的答案。
我有一个从一个状态到另一个状态的转换计数矩阵,我想计算最大似然估计值、标准误差和标准偏差。“markovchain”程序包有一个示例,但数据是序列。我的数据是从155家公司的平衡面板数据集中获取的,因此他们提供的示例代码对我不起作用。
下面是我的例子:
data(rain)
rain$rain[1:10]
[1] "6+" "1-5" "1-5" "1-5" "1-5" "1-5" "1-5" "6+" "6+" "6+"
#obtaining the empirical transition matrix
createSequenceMatrix(stringchar = rain$rain)
0 1-5 6+
0 362 126 60
1-5 136 90 68
6+ 50 79 124
#fitting the DTMC by MLE
alofiMcFitMle <- markovchainFit(data = rain$rain, method = "mle", name = "Alofi")
alofiMcFitMle
$estimate
Alofi
A 3 - dimensional discrete Markov Chain defined by the following states:
0, 1-5, 6+
The transition matrix (by rows) is defined as follows:
0 1-5 6+
0 0.6605839 0.2299270 0.1094891
1-5 0.4625850 0.3061224 0.2312925
6+ 0.1976285 0.3122530 0.4901186
$standardError
0 1-5 6+
0 0.03471952 0.02048353 0.01413498
1-5 0.03966634 0.03226814 0.02804834
6+ 0.02794888 0.03513120 0.04401395
$confidenceInterval
$confidenceInterval$confidenceLevel
[1] 0.95
$confidenceInterval$lowerEndpointMatrix
0 1-5 6+
0 0.6034754 0.1962346 0.08623909
1-5 0.3973397 0.2530461 0.18515711
6+ 0.1516566 0.2544673 0.41772208
$confidenceInterval$upperEndpointMatrix
0 1-5 6+
0 0.7176925 0.2636194 0.1327390
1-5 0.5278304 0.3591988 0.2774279
6+ 0.2436003 0.3700387 0.5625151
$logLikelihood
[1] -1040.419
因为我已经有了一个计数数据矩阵,所以不能使用上面的代码。我只想用我的6x6转换计数矩阵,确定最大似然估计量、标准误差(置信区间)和标准差。有人能给我一个例子吗?
1条答案
按热度按时间lzfw57am1#
我不知道如何使用
markovchain
包来实现这一点,但您可以编写一个函数来产生类似的结果,下面的函数通过MLE生成转移概率的估计值,但标准误差置信区间的上限和下限。你可以使用标准误差和估计值来建立正态理论置信区间(ci = "normal"
)或使用参数bootstrap分布的相关分位数(ci = "quantile"
)。parallel
标志标识是否应将矩阵水平视为有序。如果是有序的,则模型使用有序登录来计算概率。如果是无序的(即parallel = FALSE
),则使用多项式登录来计算概率。如果我没理解错的话,您将从看起来像
createSequenceMatrix(stringchar = rain$rain)
的输出的东西开始,但没有生成它的底层值序列。1.生成数据。
1.创建函数来估计模型并打印结果。
1.使用我生成的函数估计模型:
1.比较
markovchainFit()
输出。由reprex package(v2.0.1)于2022年12月15日创建
这两个模型的对数似然是相同的,这为基本的估计过程是相似的提供了一定的信心。标准误差是不同的-原始函数没有使用参数自助法。我不知道他们做什么,因为估计模型的函数是用C++编写的,我还没有研究源代码。如果这个差异是不可接受的,也许其他人能更接近。