Tôi đã cố gắng lập trình thuật toán cho cdf cho phân phối t đa biến sau Genz và Bretz, Gói tham chiếu trong R là mvtnorm.Tại sao con số của tôi không khớp, phân phối đa biến t trong R mvtnorm
Khi tôi đang thử nghiệm chức năng của mình, tôi thấy rằng số của tôi không khớp. Trong ví dụ sau, được điều chỉnh từ trợ giúp mvtnorm, biến ngẫu nhiên đa biến t có các thành phần độc lập. Vì vậy, không thể thiếu nên chỉ là sản phẩm của 3 xác suất độc lập
> lower <- -1
> upper <- 3
> df <- 4
> corr <- diag(3)
> delta <- rep(0, 3)
> pmvt(lower=lower, upper=upper, delta=delta, df=df, corr=corr)
[1] 0.5300413
attr(,"error")
[1] 4.321136e-05
attr(,"msg")
[1] "Normal Completion"
Các lỗi được báo cáo là 4e-5, sai số so với sản phẩm của xác suất độc lập
> (pt(upper, df) - pt(lower, df))**3
[1] 0.4988254
là
0.5300413 - 0,4988254 = 0.0312159
Tôi đang nhận d iscrepancies trong mã của riêng tôi so với R mvtnorm cho các ví dụ khác nhau trong khoảng cùng một phạm vi.
Tôi chủ yếu là người mới bắt đầu ở R. Vì vậy, tôi đang làm gì sai hoặc có vấn đề gì?
(Tôi không đăng ký vào danh sách gửi thư R-giúp đỡ, vì vậy tôi cố gắng ở đây.)
UPDATE: Như pchalasani giải thích, thống kê của tôi đã sai, lỗi trong mã của riêng tôi là trong một số helper hàm không nằm trong mã phân phối t. Một cách hay để thấy rằng không bị tương quan không ngụ ý độc lập, đang xem xét sự phân bố có điều kiện. Dưới đây là các tần số cột% * 100 cho độc lập biến ngẫu nhiên hai biến (10000 mẫu) cho các phần tư (phân phối có điều kiện trên biến cột).
hai biến không tương quan variates bình thường
([[26, 25, 24, 23],
[24, 23, 24, 25],
[24, 27, 24, 24],
[24, 23, 26, 25]])
hai biến không tương quan t variates
([[29, 20, 22, 29],
[20, 31, 28, 21],
[20, 29, 29, 20],
[29, 18, 18, 29]])
Sự phân bố trong cột đầu tiên và cuối cùng là rất khác so với các cột giữa. (Xin lỗi, không có mã R vì tôi không biết cách thực hiện điều này nhanh chóng với R.)
Tôi không thấy bất kỳ điều gì rõ ràng là sai với những gì bạn đang làm. Chạy pmvt() cho trường hợp 1 chiều trông OK; đối với trường hợp 2 chiều [pmvt (lower = rep (thấp hơn, 2), upper = rep (upper, 2), df = df)] cho 0,6429955 với lỗi danh định là 1e-15, trong khi (pt (upper, df) -pt (thấp hơn, df))^2 là 0,6289736. Mã của bạn có trả lời phù hợp với sản phẩm của các bản phân phối độc lập không? Tôi đồng ý một lỗi có vẻ không - có thể có thể có một cái gì đó trong các định nghĩa bạn đang thiếu? Nếu bạn không có thêm câu trả lời ở đây, tôi sẽ thử người duy trì [người bảo trì ("mvtnorm")] –