首页 文章

TraMineR:seqici为相同的序列提供不同的结果

提问于
浏览
2

我想知道seqici()是否依赖于上下文?我有一个序列,我计算复杂性seqici(mySeq) . 我在一组序列中有相同的序列,我计算复杂性并具有不同的值 . 有人可以帮助知道会发生什么吗?

谢谢,

2 回答

  • 3

    我想我得到了 . 是的,复杂性取决于“背景” . 当您将所有序列放在一起时,seqici()使用“common”字母来计算复杂性 . 因此,如果序列中没有字母表的元素,则该序列的复杂性将在单独计算与在序列集中计算时发生变化 . 如图所示

    d1 <- data.frame(s1 = c("A", "B", "A", "C", "B", "A"))
    d2 <- data.frame(s2= c("A", "C", "B", "B", "D"))
    d1 <- zoo(d1)
    d2 <- zoo(d2)
    nm <- list("d1", "d2")
    
    d <- zoo()
    for(i in 1:length(nm)) 
      d <- merge(d, get(nm[[i]]))
    
    d <- t(d)
    seq <- seqdef(d)
    seqici(seq)
    
    //s1 0.8541510
    //s2 0.8489541
    
    d1 <- t(d1)
    d2 <- t(d2)
    seq1 <- seqdef(d1)
    seq2 <- seqdef(d2)
    seqici(seq1)
    //s1 0.9594894
    seqici(seq2)
    //s2 0.8489541
    

    结果的差异是因为“D”在d2而不在d1 .

    希望这可以帮助别人:-)

  • 1

    Gabadinho的复杂性指数取决于序列的整体可能状态(字母表) . 这是 by definition . 以下是基于您自己的示例:

    myseq <- t(data.frame(s1 = c("A", "B", "A", "C", "B", "A")))
    
    seq1a <- seqdef(myseq, alphabet = c("A","B","C"))
    seqici(seq1a) # 0.9594894
    
    seq1b <- seqdef(myseq, alphabet = c("A","B","C","D"))
    seqici(seq1b) # 0.854151
    

    如果在创建序列数据时未指定字母,TraMineR将使用数据中存在的不同状态进行设置 . 因此,根据您的输入数据,字母表可能会有所不同,然后您可能会根据字母表获得不同的测量结果 .

    为避免混淆,始终明确定义嵌入序列的字母表是一个很好的规则 .

相关问题