Làm cách nào tôi có thể (bằng số) các giá trị gần đúng cho phân phối beta với alpha & beta lớn


11

Có cách nào ổn định về mặt số để tính các giá trị của phân phối beta cho số nguyên lớn alpha, beta (ví dụ: alpha, beta> 1000000) không?

Trên thực tế, tôi chỉ cần khoảng tin cậy 99% xung quanh chế độ, nếu điều đó bằng cách nào đó làm cho vấn đề dễ dàng hơn.

Thêm : Tôi xin lỗi, câu hỏi của tôi không được nêu rõ như tôi nghĩ. Điều tôi muốn làm là đây: Tôi có một máy kiểm tra các sản phẩm trên băng chuyền. Một số phần của các sản phẩm này bị máy từ chối. Bây giờ nếu người vận hành máy thay đổi một số cài đặt kiểm tra, tôi muốn cho anh ấy / cô ấy biết tỷ lệ từ chối ước tính và một số gợi ý về mức độ đáng tin cậy của ước tính hiện tại.

Vì vậy, tôi nghĩ rằng tôi coi tỷ lệ từ chối thực tế là một biến ngẫu nhiên X và tính phân phối xác suất cho biến ngẫu nhiên đó dựa trên số lượng đối tượng bị từ chối N và các đối tượng được chấp nhận M. Nếu tôi giả sử phân phối trước thống nhất cho X, thì đây là một phân phối beta tùy thuộc vào N và M. Tôi có thể trực tiếp hiển thị phân phối này cho người dùng hoặc tìm một khoảng [l, r] để tỷ lệ từ chối thực tế nằm trong khoảng này với p> = 0,99 (sử dụng thuật ngữ của shabbychef) và hiển thị điều này khoảng thời gian. Đối với M, N nhỏ (tức là ngay sau khi thay đổi tham số), tôi có thể tính toán phân phối trực tiếp và xấp xỉ khoảng [l, r]. Nhưng đối với M, N lớn, cách tiếp cận ngây thơ này dẫn đến lỗi tràn, bởi vì x ^ N * (1-x) ^ M là nhỏ để được biểu diễn dưới dạng float chính xác kép.

Tôi đoán đặt cược tốt nhất của tôi là sử dụng phân phối beta ngây thơ của tôi cho M, N nhỏ và chuyển sang phân phối bình thường với cùng giá trị trung bình và phương sai ngay khi M, N vượt quá ngưỡng. Điều đó có ý nghĩa?


1
Bạn có muốn biết toán học hoặc chỉ đơn giản là một giải pháp mã trong R hoặc một số như vậy?
Giăng

Tôi cần phải thực hiện điều này trong C #, vì vậy toán học sẽ tốt. Một mẫu mã cũng sẽ ổn, nếu nó không dựa vào một số hàm R / Matlab / Mathicala dựng sẵn, tôi không thể dịch sang C #.
nikie

PDF, CDF hay CDF nghịch đảo?
JM không phải là một nhà thống kê

Nếu bạn không nhấn mạnh vào Beta, bạn có thể sử dụng phân phối Kumarawamy rất giống nhau và có dạng đại số đơn giản hơn nhiều: en.wikipedia.org/wiki/Kumarawamy_distribution
Tim

Câu trả lời:


13

Một xấp xỉ bình thường hoạt động rất tốt, đặc biệt là ở đuôi. Sử dụng giá trị trung bình của và phương sai của . Ví dụ: lỗi tương đối tuyệt đối trong xác suất đuôi trong tình huống khó khăn (trong đó độ lệch có thể đáng lo ngại), chẳng hạn như đỉnh khoảng và nhỏ hơn khi bạn hơn 1 SD từ giá trị trung bình. (Điều này không phải vì beta quá lớn: với , các lỗi tương đối tuyệt đối được giới hạn bởiα βα/(α+β) α=106,β=1080,000260,00006α=β=1060,0000001αβ(α+β)2(1+α+β)α=106,β=1080.000260.00006α=β=1060.0000001.) Do đó, phép tính gần đúng này là tuyệt vời cho bất kỳ mục đích nào liên quan đến khoảng 99%.

Trong phần chỉnh sửa câu hỏi, lưu ý rằng người ta không tính toán các tích phân beta bằng cách thực sự tích hợp tích phân: tất nhiên bạn sẽ nhận được kết quả (mặc dù chúng không thực sự quan trọng, vì chúng không đóng góp đáng kể vào tích phân) . Có rất nhiều, rất nhiều cách để tính tích phân hoặc gần đúng nó, như được ghi lại trong Johnson & Kotz (Phân phối trong Thống kê). Một máy tính trực tuyến được tìm thấy tại http://www.danielsoper.com/statcalc/calc37.aspx . Bạn thực sự cần nghịch đảo của tích phân này. Một số phương pháp để tính toán nghịch đảo được ghi lại trên trang Mathicala tại địa chỉ http://fifts.wolfram.com/GammaBetaErf/InverseBetaRegularized/. Mã được cung cấp trong Công thức số (www.nr.com). Một máy tính trực tuyến thực sự tốt là trang web Wolfram Alpha (www.wolframalpha.com): nhập inverse beta regularized (.005, 1000000, 1000001)cho điểm cuối bên trái và inverse beta regularized (.995, 1000000, 1000001)cho điểm cuối bên phải ( , khoảng cách 99%).α=1000000,β=1000001


Hoàn hảo! Tôi đã có cuốn sách NR trên bàn mọi lúc, nhưng không bao giờ nghĩ sẽ nhìn vào đó. Cảm ơn rất nhiều.
nikie

3

Một thử nghiệm đồ họa nhanh cho thấy phân phối beta trông rất giống phân phối bình thường khi cả alpha và beta đều rất lớn. Bằng cách googling "giới hạn phân phối beta bình thường", tôi đã tìm thấy http://nrich.maths.org/discus/messages/117730/143065.html?1200700623 , đưa ra một 'bằng chứng' bằng tay.

Trang wikipedia cho bản phân phối beta cung cấp giá trị trung bình, chế độ (v gần với trung bình của alpha và beta lớn) và phương sai, vì vậy bạn có thể sử dụng phân phối bình thường với cùng một phương sai & phương sai để có được xấp xỉ. Liệu đó có phải là một xấp xỉ đủ tốt cho mục đích của bạn hay không phụ thuộc vào mục đích của bạn là gì.


Câu hỏi ngu ngốc: Làm thế nào bạn thực hiện thí nghiệm đồ họa đó? Tôi đã cố gắng vẽ sơ đồ phân phối cho alpha / beta khoảng 100, nhưng tôi không thể thấy bất cứ điều gì do lỗi tràn.
nikie

Bạn không muốn vẽ đồ thị tích phân: bạn muốn vẽ đồ thị tích phân. Tuy nhiên, bạn có thể có được integrand theo nhiều cách. Một là nhập "lô D (beta (x, 1000000, 2000000), x) / beta (1, 1000000, 2000000) từ 0.3325 đến 0.334" tại trang web Wolfram Alpha. Bản thân tích phân được nhìn thấy với "Lô beta (x, 1000000, 2000000) / beta (1, 1000000, 2000000) từ 0,3325 đến 0,334".
whuber

Tôi đã vẽ sơ đồ integrand, tức là pdf của bản phân phối beta, trong Stata - nó có chức năng dựng sẵn cho pdf. Đối với alpha và beta lớn, bạn cần giới hạn phạm vi của cốt truyện để thấy nó gần với mức bình thường. Nếu tôi tự lập trình nó, tôi sẽ tính toán logarit của nó sau đó lũy thừa vào cuối. Điều đó sẽ giúp với các vấn đề tràn. Hàm beta trong mẫu số được xác định theo các hàm gamma, tương đương với giai thừa cho số nguyên alpha và beta, và nhiều gói / thư viện bao gồm lngamma () hoặc lnfactorial () thay vào đó / cũng như các hàm gamma () và factorial ().
vào

2

Tôi sẽ suy luận bạn muốn có một khoảng sao cho xác suất rút ngẫu nhiên từ Beta RV nằm trong khoảng với xác suất 0,99, với điểm thưởng cho và là đối xứng quanh chế độ. Theo bất đẳng thức Gauss hoặc bất đẳng thức Vysochanskii - Petunin, bạn có thể xây dựng các khoảng có chứa khoảng và sẽ là xấp xỉ khá tốt. Đối với đủ lớn , bạn sẽ gặp các vấn đề về số dưới mức thậm chí đại diện cho và dưới dạng các số riêng biệt, vì vậy tuyến đường này có thể đủ tốt.l r [ l , r ] α , β l r[l,r]lr[l,r]α,β lr


Khi alpha và beta không quá xa nhau (nghĩa là alpha / beta được giới hạn ở trên và dưới), SD của Beta [alpha, beta] tỷ lệ thuận với 1 / Sqrt (alpha). Ví dụ: đối với alpha = beta = 10 ^ 6, SD rất gần với 1 / Sqrt (8) / 1000. Tôi nghĩ sẽ không có vấn đề gì với việc biểu diễn l và r ngay cả khi bạn chỉ sử dụng các phao chính xác duy nhất .
whuber

có nghĩa là không 'đủ lớn';)106
shabbychef

1
Vâng, đó là một con số điên rồ cho một ứng dụng beta. BTW, những bất bình đẳng đó sẽ không tạo ra khoảng thời gian tốt, bởi vì chúng là cực trị trên tất cả các phân phối (thỏa mãn một số ràng buộc nhất định).
whuber

@whuber: Bạn nói đúng, họ là những con số điên rồ. Với thuật toán ngây thơ của tôi, các số "lành mạnh" rất dễ dàng và hoạt động tốt, nhưng tôi không thể tưởng tượng làm thế nào để tính toán nó cho các tham số "điên". Do đó câu hỏi.
nikie

2
OK, bạn đã đúng: một khi alpha + beta vượt quá 10 ^ 30 hoặc lâu hơn, bạn sẽ gặp khó khăn khi nhân đôi :-). (Nhưng nếu bạn biểu thị l và r là sự khác biệt so với giá trị trung bình của alpha / (alpha + beta), bạn sẽ ổn cho đến khi alpha hoặc beta vượt quá khoảng 10 ^ 303.)
whuber

1

Nếu là biến phân phối beta, thì đó là tỷ lệ cược log của (tức là: được phân phối gần như bình thường. Điều này đúng ngay cả đối với các bản phân phối beta bị lệch nhiều như làp l o g ( p / ( 1 - p ) ) m i n ( α , β ) > 100pplog(p/(1p))min(α,β)>100

Ví dụ

f <- function(n, a, b) {
    p <- rbeta(n, a, b)
    lor <- log(p/(1-p))
    ks.test(lor, 'pnorm', mean(lor), sd(lor))$p.value
}
summary(replicate(50, f(10000, 100, 1000000)))

thường tạo ra một đầu ra như

tóm tắt (sao chép (50, f (10000, 100, 1000000))) Tối thiểu 1 Qu. Trung bình Trung bình 3 Qu. Tối đa 0,01205 0,187070 0,8680 0,24810 0,36170 0,68730

tức là giá trị p điển hình là khoảng 0,2.

Vì vậy, ngay cả với 10000 mẫu, thử nghiệm Kolmogorov-Smirnov vẫn thiếu khả năng phân biệt biến đổi tỷ lệ cược log của biến phân phối beta bị lệch rất cao với .α=100,β=100000

Tuy nhiên, một thử nghiệm tương tự về phân phối chính nóp

f2 <- function(n, a, b) {
    p <- rbeta(n, a, b)
    ks.test(p, 'pnorm', mean(p), sd(p))$p.value
}
summary(replicate(50, f2(10000, 100, 1000000)))

sản xuất một cái gì đó như

summary(replicate(50, f2(10000, 100, 1000000)))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
2.462e-05 3.156e-03 7.614e-03 1.780e-02 1.699e-02 2.280e-01 

với giá trị p điển hình khoảng 0,01

Hàm R qqnormcũng cung cấp một trực quan hữu ích, tạo ra một biểu đồ rất thẳng cho phân phối tỷ lệ cược log cho thấy tính quy phạm gần đúng phân phối của biến beta DSitribution tạo ra một đường cong đặc biệt biểu thị tính không quy tắc

Do đó, thật hợp lý khi sử dụng xấp xỉ Gaussian trong không gian tỷ lệ cược log ngay cả đối với các giá trị bị lệch rất cao miễn là cả hai đều trên 100.α,β

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.