이변 량 Markov 체인의 관점에서 데이터를 생각할 수 있습니다. 시간 에서 와 의 변화 과정 을 4 개의 다른 상태 중 하나로 변경하는 것을 설명하는 두 개의 다른 변수 여성)와 남성)가 있습니다. 를 에서 시간으로, 번째에서 번째 상태 로 대한 전환 으로 봅시다 . 이 경우, 다른 상태로의 전이 시간에 이전 상태에 조건부 와 의 :XYXYtXt−1,i→Xt,jXt−1tijX Y
Pr(Xt−1,i→Xt,j)=Pr(Xt,j|Xt−1,i,Yt−1,k)Pr(Yt−1,h→Yt,k)=Pr(Yt,h|Yt−1,k,Xt−1,i)
전환 확률은 전환 내역을 계산하고 이후에 확률을 정규화하여 쉽게 계산할 수 있습니다.
states <- c("absent", "present", "attack", "threat")
# data is stored in 3-dimensional array, initialized with
# a very small "default" non-zero count to avoid zeros.
female_counts <- male_counts <- array(1e-16, c(4,4,4), list(states, states, states))
n <- length(male_seq)
for (i in 1:n) {
male_counts[female_seq[i-1], male_seq[i-1], male_seq[i]] <- male_counts[female_seq[i-1], male_seq[i-1], male_seq[i]] + 1
female_counts[male_seq[i-1], female_seq[i-1], female_seq[i]] <- female_counts[male_seq[i-1], female_seq[i-1], female_seq[i]] + 1
}
male_counts/sum(male_counts)
female_counts/sum(female_counts)
한계 확률을 사용하여 쉽게 시뮬레이션 할 수 있습니다.
male_sim <- female_sim <- "absent"
for (i in 2:nsim) {
male_sim[i] <- sample(states, 1, prob = male_counts[female_sim[i-1], male_sim[i-1], ])
female_sim[i] <- sample(states, 1, prob = female_counts[male_sim[i-1], female_sim[i-1], ])
}
이러한 시뮬레이션 결과는 다음과 같습니다.
또한, 사전 예측을하는 데 사용할 수 있습니다.
male_pred <- female_pred <- NULL
for (i in 2:n) {
curr_m <- male_counts[female_seq[i-1], male_seq[i-1], ]
curr_f <- female_counts[male_seq[i-1], female_seq[i-1], ]
male_pred[i] <- sample(names(curr_m)[curr_m == max(curr_m)], 1)
female_pred[i] <- sample(names(curr_f)[curr_f == max(curr_f)], 1)
}
제공 한 데이터에 대해 69-86 %의 정확도를 제공합니다.
> mean(male_seq == male_pred, na.rm = TRUE)
[1] 0.8611111
> mean(female_seq == female_pred, na.rm = TRUE)
[1] 0.6944444
전이가 무작위로 발생하면 전이 확률은 불연속 균일 분포를 따릅니다. 이것은 증거 는 아니지만 간단한 모델을 사용하여 데이터를 생각하는 방법으로 사용될 수 있습니다.