2013-08-06 33 views
5

Ai đó có thể giải thích cho tôi thông báo lỗi này có nghĩa là gì?R coda "Phần nhỏ hàng đầu của đơn đặt hàng 3 không xác định dương"

Tôi có một phương pháp lấy mẫu MCMC gọi hitandrun (trong dang dở gói https://github.com/davidkane9/kmatching) mà mang lại cho tôi một danh sách các ma trận có các cột như đầu ra đa biến các mẫu cá nhân, đây là một ví dụ về nó trong hành động:

> A = matrix(1, ncol = 3) 
> b = 1 
> ## gives me solutions of Ax = b (a.k.a x + y + z = 1) 
> h = hitandrun(A,b, n=10, chains = 2) 
> h 
[[1]] 
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] 
[1,] 0.1804431 0.3340590 0.4195820 0.2061222 0.3591085 0.09984353 0.6707110 0.3926639 0.1283919 
[2,] 0.6135745 0.4256909 0.3619727 0.2918238 0.5057426 0.81919629 0.2368842 0.1178713 0.2666737 
[3,] 0.2059824 0.2402501 0.2184453 0.5020541 0.1351489 0.08096018 0.0924048 0.4894647 0.6049344 
     [,10] 
[1,] 0.1322112 
[2,] 0.4736057 
[3,] 0.3941831 

[[2]] 
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] 
[1,] 0.32883534 0.1284182 0.1735151 0.2005726 0.94511422 0.61653717 0.5130324 0.33228224 0.2088865 
[2,] 0.65868549 0.3066952 0.5182009 0.3065610 0.01214334 0.07007548 0.1191157 0.01137002 0.3311197 
[3,] 0.01247917 0.5648866 0.3082840 0.4928664 0.04274244 0.31338735 0.3678519 0.65634774 0.4599938 
      [,10] 
[1,] 0.61412223 
[2,] 0.32289039 
[3,] 0.06298738 

Tôi muốn xem chẩn đoán Gelman-Rubin của dữ liệu này, để xem tôi cần phải tỉa bao nhiêu, nhưng khi tôi đặt nó vào chức năng, tôi gặp một lỗi mơ hồ, và tôi không biết nó có ý nghĩa gì. Đây là:

> mclist = lapply(h, function(x) mcmc(t(x), thin = 5)) 
> gelman.diag(mclist) 
Error in chol.default(W) : 
    the leading minor of order 1 is not positive definite 

(Tôi đoán bây giờ nó là thứ tự 1, nhưng trước khi nó được đặt hàng 3) Có chuyên gia về coda nào trên SO không? Tôi đã cố gắng để gỡ lỗi nó, nhưng nó dẫn tôi đến một chức năng nội bộ La_chol và tôi không biết phải làm gì từ đó.

+0

@ Mike: Làm thế nào bạn có được chức năng 'hitandrun'? – Metrics

+0

Tôi đã viết nó. Nó đang ở trong một gói chưa hoàn thành. Nếu bạn muốn xem nó, nó được đặt tại: https://github.com/davidkane9/kmatching, @Metrics –

+1

Cảm ơn; Sẽ tốt hơn nếu bạn chỉ định rằng trong câu hỏi – Metrics

Trả lời

3

Có vẻ như đã xảy ra sự cố với việc ước lượng đa biến của chẩn đoán Gelman-Rubin. Đặt multivariate = FALSE khắc phục sự cố và xuất ra một ước tính biến duy nhất cho mỗi biến. Tuy nhiên, hầu hết các biến của tôi là tương quan vì bản chất của vấn đề tôi đang cố gắng giải quyết, vì vậy tôi tự hỏi (và hy vọng) rằng điều này là cho tôi một đánh giá quá cao của chẩn đoán.

0

Gần đây tôi đã gặp sự cố này với mô hình của mình - Tôi thấy ma trận của mình không đối xứng, vì nó là ma trận GRM không đối xứng. Tôi đã sử dụng chức năng này để làm cho nó đối xứng và các vấn đề đã được giải quyết (lấy từ Most Efficient way to create a symmetric matrix):

symmetrise <- function(mat){ rowscols <- which(lower.tri(mat), arr.ind=TRUE) sparseMatrix(i=rowscols[,1], 
       j=rowscols[,2], 
       x=mat[lower.tri(mat)], 
       symmetric=TRUE, 
       dims=c(nrow(mat),ncol(mat))) } 

này nhân rộng phần dưới cùng bên trái để phần trên bên phải.

Các vấn đề liên quan