2017-04-13 15 views
1

데이터 집합의 모든 시퀀스 (즉, id)에 대한 전이 행렬을 생성하는 방법이 있습니까?TraMiner의 각 시퀀스에 대한 전이 속도 계산

내 경우 데이터가 TSE 형식이므로 TraMineRextras 패키지의 일부 기능을 사용합니다.

내 의도는 각 시퀀스에 걸쳐 루프,하지만 난이 지정된 ID에 대한 전환 비율을 계산하고자 할 때, 나는 TSE_to_STS() 기능을 실행 한 후 다음과 같은 오류가 발생합니다 :에

오류 'rownames'< - ('TMP'값 = "1") : 무 차원

그것은 TSE_to_STS()의 인수에 예상되는 두 시퀀스의 최소와 같다 객체에 'rownames'을 설정 시도.

test.events <- c("A","B","C") 
test.stm <- seqe2stm(test.events, dropList=list("A"=test.events[-1], B=test.events[-2], C=test.events[-3])) 
test.tse <- data.frame(id = c(1,1,1), time = c(1,2,3), event = c("A","B","C")) 
test.sts <- TSE_to_STS(test.tse, id = "id", timestamp = "time", event = "event", stm=test.stm, tmin=1, tmax=4, firstState="None") 
test.seqdef <- seqdef(test.sts,informat = "STS") 
seqtrate(test.seqdef) 

답변

0

기능 TraMineRextras에서 TSE_to_STSTraMineRseqtrate는 시퀀스들의 세트에 의도 된 단일 시퀀스가 ​​작동하지 않는다. 이는 내부적으로 벡터로 작동하지 않는 테이블을위한 함수를 사용하기 때문입니다.

임시 이벤트를 사용하여 더미 시퀀스를 추가하고 확률 전이의 결과 매트릭스에서 더미 이벤트를 삭제하는 것이 좋습니다.

test.events <- c("A","B","C","X") 
test.stm <- seqe2stm(test.events, dropList=list("A"=test.events[-1], 
    B=test.events[-2], C=test.events[-3], X=test.events[-4])) 
test.tse <- data.frame(id = c(99,1,1,1), time = c(0,1,2,3), 
    event = c("X","A","B","C")) 
test.sts <- TSE_to_STS(test.tse, id = "id", timestamp = "time", 
    event = "event", stm=test.stm, tmin=1, tmax=4, firstState="None") 
test.seqdef <- seqdef(test.sts,informat = "STS") 
test.trate <- seqtrate(test.seqdef) 
test.trate[-nrow(test.trate),-ncol(test.trate)] 

희망이 있습니다.

+0

설명해 주셔서 감사합니다. 이 문제를 해결하기 위해 다른 Id를 가진 두 개의 동일한 시퀀스를 만듭니다. 이 방법은'TSE_to_STS'는 나에게 예상 전환 행렬을 제공합니다. – Benoa411

1

길버트 설명에 따라 다음은 수정 된 코드입니다. 그것은 다른 id (= 99)를 갖는 동일한 시퀀스를 생성합니다. 두 개의 시퀀스가 ​​동일한 경우의 전이 속도와 함께, 전이 행렬은 하나의 시퀀스로 계산 된 것과 같습니다. 그것은 더미 이벤트를 만들지 않고 작동합니다.

test.events <- c("A","B","C") 
test.stm <- seqe2stm(test.events, dropList=list("A"=test.events[-1], B=test.events[-2], C=test.events[-3])) 
test.tse <- data.frame(id = c(1,1,1), time = c(1,2,3), event = c("A","B","C")) 
test.tse.bis <- test.tse 
test.tse.bis[,1] <- 99 
test.tse <- rbind(test.tse,test.tse.bis) 
test.sts <- TSE_to_STS(test.tse, id = "id", timestamp = "time", event = "event", stm=test.stm, tmin=1, tmax=4, firstState="None") 
test.seqdef <- seqdef(test.sts,informat = "STS") 
seqtrate(test.seqdef)