Đây được gọi là phân phối chuẩn bị cắt ngắn:
http://en.wikipedia.org/wiki/Truncated_n normal_distribution
Christian Robert đã viết về một cách tiếp cận để thực hiện nó cho nhiều tình huống (sử dụng khác nhau tùy thuộc vào vị trí của các điểm cắt) ở đây:
Robert, CP (1995) "Mô phỏng các biến thông thường bị cắt cụt",
Thống kê và tính toán, Tập 5, Số 2, Tháng 6, Trang 121-125
Giấy có sẵn tại http://arxiv.org/abs/0907.4010
Điều này thảo luận về một số ý tưởng khác nhau cho các điểm cắt ngắn khác nhau. Đây không phải là cách duy nhất để tiếp cận những thứ này bằng mọi cách nhưng nó thường có hiệu suất khá tốt. Nếu bạn muốn thực hiện nhiều quy tắc cắt ngắn khác nhau với các điểm cắt ngắn khác nhau, đó sẽ là một cách tiếp cận hợp lý. Như bạn đã lưu ý, msm::tnorm
dựa trên cách tiếp cận của Robert, trong khi truncnorm::truncnorm
thực hiện lấy mẫu từ chối chấp nhận của Geweke (1991); điều này có liên quan đến cách tiếp cận trong bài báo của Robert. Lưu ý rằng msm::tnorm
bao gồm các hàm mật độ, cdf và định lượng (nghịch đảo cdf) theo cách thông thường R
.
Một tài liệu tham khảo cũ hơn với cách tiếp cận là cuốn sách của Luc Devroye ; kể từ khi nó được in ra, anh ấy đã lấy lại bản quyền và tải nó xuống dưới dạng bản tải xuống.
Ví dụ cụ thể của bạn giống như lấy mẫu một tiêu chuẩn bình thường bị cắt ở 1 (nếu là điểm cắt, ), sau đó nhân rộng kết quả (nhân lên bằng và thêm ).t( T - μ ) / σ= ( 5 - 3 ) / 2 = 1σμ
Trong trường hợp cụ thể đó, Robert cho rằng ý tưởng của bạn (trong lần tái sinh thứ hai hoặc thứ ba) là khá hợp lý. Bạn nhận được một giá trị chấp nhận được khoảng 84% thời gian và trung bình tạo ra khoảng (bạn có thể tính ra các giới hạn để bạn tạo đủ giá trị bằng thuật toán véc tơ nói 99,5% thời gian và sau đó thỉnh thoảng tạo ra một số ít hiệu quả cuối cùng - thậm chí từng cái một).1,19 n
Cũng có thảo luận về việc triển khai mã R ở đây (và trong Rccp trong một câu trả lời khác cho cùng một câu hỏi, nhưng mã R thực sự nhanh hơn). Mã R đơn giản ở đó tạo ra 50000 quy tắc rút ngắn trong 6 mili giây, mặc dù thông thường bị cắt cụ thể đó chỉ cắt đứt các đuôi cực đoan, do đó, việc cắt ngắn rõ ràng hơn có nghĩa là kết quả chậm hơn. Nó thực hiện ý tưởng tạo ra "quá nhiều" bằng cách tính toán số lượng cần tạo ra gần như chắc chắn để có đủ.
Nếu tôi chỉ cần một loại cắt cụ thể bình thường rất nhiều lần, có lẽ tôi sẽ xem xét việc điều chỉnh một phiên bản của phương pháp ziggurat, hoặc một cái gì đó tương tự, cho vấn đề.
Trên thực tế, có vẻ như Nicolas Chopin đã làm điều đó rồi, vì vậy tôi không phải là người duy nhất xảy ra:
http://arxiv.org/abs/1201.6140
Anh ta thảo luận về một số thuật toán khác và so sánh thời gian cho 3 phiên bản thuật toán của mình với các thuật toán khác để tạo ra 10 ^ 8 quy tắc ngẫu nhiên cho các điểm cắt ngắn khác nhau.
Có lẽ không ngạc nhiên, thuật toán của anh hóa ra tương đối nhanh.
Từ biểu đồ trong bài báo, ngay cả những thuật toán chậm nhất mà anh ta so sánh với các điểm cắt ngắn nhất (đối với họ) đang tạo ra giá trị trong khoảng 3 giây - điều đó cho thấy rằng bất kỳ thuật toán nào được thảo luận đều có thể chấp nhận được nếu có lý thực hiện tốt.10số 8
Chỉnh sửa: Một điều mà tôi không chắc chắn được đề cập ở đây (nhưng có lẽ trong một trong các liên kết) là biến đổi (thông qua cdf bình thường nghịch đảo) một bộ đồng phục bị cắt cụt - nhưng đồng phục có thể được cắt bớt bằng cách đơn giản tạo ra một bộ đồng phục trong giới hạn cắt ngắn . Nếu cdf bình thường nghịch đảo nhanh thì điều này vừa nhanh, vừa dễ và hoạt động tốt cho một loạt các điểm cắt ngắn.