【问题标题】:Fitting a VLMC to very long sequences将 VLMC 拟合到非常长的序列
【发布时间】:2017-01-31 22:20:15
【问题描述】:

我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集。我这样做如下所示:

# Load libraries
library(PST)
library(RCurl)
library(TraMineR)

# Load and transform data
x <- getURL("https://gist.githubusercontent.com/aronlindberg/08228977353bf6dc2edb3ec121f54a29/raw/241ef39125ecb55a85b43d7f4cd3d58f617b2ecf/challenge_level.csv")
data <- read.csv(text = x)

data.seq <- seqdef(data[,2:ncol(data)], missing = NA, right = NA, nr = "*")
S1 <- pstree(data.seq, ymin = 0.01, lik = TRUE, with.missing = TRUE, nmin = 2)

然而,这会产生以下错误:

Error in res[i, , drop = FALSE] : subscript out of bounds

如何将模型拟合到具有这么长序列的数据?限制模型中的长度是否有充分的理由?

【问题讨论】:

    标签: r markov-chains traminer sequence-analysis


    【解决方案1】:

    问题来自您的数据。通过不在 pstree 函数中设置 L ,您的意思是您想要拟合最大阶数的模型。拟合过程在 L=8 处产生错误,因为您有 nmin=2,但在此顺序中只有一个上下文具有 nmin=2

    > cprob(data.seq, L=8, nmin=2)
     [>] 21 sequences, min/max length: 19/296
     [>] computing prob., L=8, 2043 distinct context(s)
     [>] removing 1894 context(s) where n<2
     [>] total time: 0.156 secs
                            EX  FA I1  I2 I3 N1 N2 N3 NR QU TR [n]
    I2-I3-FA-I3-EX-I3-EX-I2  0 0.5  0 0.5  0  0  0  0  0  0  0   2
    

    使用 L=8 拟合模型效果很好

    S1 <- pstree(data.seq, ymin = 0.01, lik = TRUE, nmin = 2, L=8) 
    
     [>] 21 sequence(s) - min/max length: 19/296
     [>] max. depth L=8, nmin=2, ymin=0.01
         [L]  [nodes]
           0        1
           1       11
           2       99
           3      368
           4      340
           5      126
           6       34
           7        4
           8        1
     [>] computing sequence(s) likelihood ... (0.804 secs)
     [>] total time: 2.968 secs
    

    同样,您不需要在 seqdef() 中使用任何 'missing'、'right' 或 'nr' 选项,也不需要在 pstree() 中使用 'with.missing'

    最好, 亚历克西斯

    【讨论】:

    • 你说得对,我不需要 missing 来实现 pstree() 功能,但是,如果我不使用 missing 选项,那么稍后当我尝试使用tune()cmine()。例如。 tune() 函数给出:[&gt;] model 1: AICc=NA (C=4.74) Error in if (pst.IC == min(IC, na.rm = TRUE)) { : missing value where TRUE/FALSE needed In addition: Warning message: In min(IC, na.rm = TRUE) : no non-missing arguments to min; returning Inf 是否有任何参数可以关闭这些函数中的缺失值?
    • 另外,您是如何确定L=8 发生错误的?
    猜你喜欢
    • 2011-06-02
    • 2013-04-03
    • 2020-08-12
    • 1970-01-01
    • 2018-12-09
    • 2012-05-28
    • 2013-07-14
    • 1970-01-01
    • 2016-03-28
    相关资源
    最近更新 更多