Tôi không biết ngay về một hàm "tích hợp" (ví dụ, trong base
hoặc tương tự), nhưng chúng ta có thể thực hiện việc này rất dễ dàng và hiệu quả trong một vài dòng mã.
Đây là một hàm lấy ma trận (không phải khung dữ liệu) làm đầu vào và tạo ra số đếm chuyển tiếp ( prob=FALSE
) hoặc theo mặc định ( prob=TRUE
), xác suất chuyển tiếp ước tính.
# Function to calculate first-order Markov transition matrix.
# Each *row* corresponds to a single run of the Markov chain
trans.matrix <- function(X, prob=T)
{
tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
if(prob) tt <- tt / rowSums(tt)
tt
}
Nếu bạn cần gọi nó trên khung dữ liệu, bạn luôn có thể làm
trans.matrix(as.matrix(dat))
Nếu bạn đang tìm kiếm một số gói của bên thứ ba, thì Rseek hoặc trang tìm kiếm R có thể cung cấp thêm tài nguyên.