2015-01-23 2 views
1

이 질문은 실제로이 질문 중 하나 (Find specific patterns in sequences)에서 발생했지만 나는 그것이 별개의 문제라고 생각합니다.상태 시퀀스를 이벤트 시퀀스로 변환

Gilbert의 응답에 이어 나는 상태 시퀀스에서 이벤트 시퀀스를 만들려고했지만 문제가 발생했습니다.

제안은

seqe=seqecreate(comp.seq,tevent="state") 

다음

seqefsub(seqe,strsubseq="(a)-(d)") 

를 사용하는 사용하는 것이었다 그러나 나는 seqecreate() 나는 다음과 같은 오류 얻을 사용하려고하면

Error in `seqelength<-`(`*tmp*`, value = c(64, 64, 64, 64, 61, 62, 61, : (...) 
s and len should be of the same size. 

동일 다음을 사용하여 이벤트 시퀀스로 변환하려고하면 발생합니다.

seqe=seqecreate(comp.seq,tevent="transition") 

행의 하위 집합으로 시도하고 문제의 원인이되는 행 식별 문제가있는 행이 모두 상수 상태에 있음을 확인했습니다. 즉, 실제로 전환이 없으며 영구적으로 동일한 상태로 유지된다는 것을 알 수있었습니다 (예 : A-A-A-A-A).

그래서 제 질문은 :

  1. 어떤 플래그가 아니면 무엇이든지 나는 변환을 할 수 있도록 설정할 수있다?
  2. 다른 길이의 누락 값이있는 경우 어떻게 행을 삭제할 수 있습니까? 사전에없는-없는-A-A-A-A가

덕분에 많은 A-A-실종 실종 실종 실종 실종

: 예를 들어 내가 좋아하는 순서를 가질 수있다!

내 데이터의 샘플을 제공 :

comp.seq <- seqdef(comp,NULL,states=comp.scodes,labels=comp.labels, alphabet=comp.alphabet,missing="Z") comp.seq[1:7,] 1 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-B-B-B-B-B-B-B-B-D-D-D-D-D-A-A-A-A-A-A-A-A-A 2 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-C-C-C-C-C-C-C-C-C-C-C-C-C-C-*-B-B-B-B-B-B-B-B-B-B-B-B-B-A-A-A-A-A-A 3 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-A-A-A-C-C-A-A-A-A-A-A-A-D-D-A-A-A-A-A-A-A-A 4 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-B-B-B-B-B-B-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A-A 5 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-C-C-D-D-D-D-D-D-D-D-D-D-A-A-A-A-A 6 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-B-B-B-B-B-B-B-B-B-B-B-B-B-D-D-D-D-D-D-D-D-A-A-A-A 7 *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-A-A-A-A-A-A-A-A-A-A-A-A

행 # 7는 문제입니다. 나는 그것이

+0

우리는 StatesSequence이 무엇인지 당신의 예에서 볼 수 없습니다 :

여기에 최소한의 예입니다. 'seqdef'를 사용하여 원본 데이터와 상태 시퀀스 객체 생성을 보여주는 최소한의 예제를 제공하십시오. – Gilbert

답변

1

그래서 나는 seqdef() 함수에서 누락 된 값에 대한 코드 인 missing="Z" 옵션을 사용했습니다.

나는 missing 옵션을 설정하지 않고 알파벳과 "Z-missing"레이블을 추가 한 "더미"상태 Z를 만드는 것으로 관리 할 수있었습니다. 또한 나는 left="Z"right="Z" 옵션을 설정했다.

여전히 나에게 버그처럼 보입니다.

0

작동 seqecreate(comp.seq[1:6,]) 사용하려고하면 문제는이 크랑 페이지, http://cran.r-project.org/web/packages/TraMineR/NEWS에 대답 만 될 수 있다면 나는 그들이 버그를 참조 TraMineR의 개발 버전 1.9.8에 대해 이야기하는 것이, 확실하지 않다 :

Bug fixes: - seqformat(): When converting from STS to TSE, an error was raised if the tevent matrix had empty strings (i.e. ""). Now, this is considered as no event.

순서가 자체 비어 있지하지만이 같은 문제가 될 수 있으므로 그것은 정확히 아니다. 나는 그들이 내부적으로 seqformat() 함수를 사용하므로 버그가 어떻게 든 관련 될 수 있다고 생각한다.

개발 버전을 다운로드하고 게시 방법을 알려 드리겠습니다.

+0

아니요! 버전 1.9.9를 설치 했는데도 그대로 유지됩니다. –

3

누락 된 상태가 있고 시퀀스의 길이가 다른 경우 오류가 발생합니다. 해결 방법은 seqdef 호출에서 right="NA"으로 설정하는 것입니다.

x1 <- "*-*-A-B" 
x2 <- "*-A-A" 
dat.str <- data.frame(string=rbind(x1,x2)) 
dat <- seqdecomp(dat.str, sep="-", miss="*") 

## creating state sequence object with and without right="NA" 
dat.seq.NA <- seqdef(dat, right="NA") 
dat.seq.void <- seqdef(dat) 

## next command works without error 
dat.eseq <- seqecreate(dat.seq.NA, tevent="state") 

## while this one produces the error 
dat.eseq <- seqecreate(dat.seq.void, tevent="state") 
관련 문제