กำหนดการกระจายความน่าจะเป็นโดยอัตโนมัติเมื่อได้รับชุดข้อมูล


12

รับชุดข้อมูล:

x <- c(4.9958942,5.9730174,9.8642732,11.5609671,10.1178216,6.6279774,9.2441754,9.9419299,13.4710469,6.0601435,8.2095239,7.9456672,12.7039825,7.4197810,9.5928275,8.2267352,2.8314614,11.5653497,6.0828073,11.3926117,10.5403929,14.9751607,11.7647580,8.2867261,10.0291522,7.7132033,6.3337642,14.6066222,11.3436587,11.2717791,10.8818323,8.0320657,6.7354041,9.1871676,13.4381778,7.4353197,8.9210043,10.2010750,11.9442048,11.0081195,4.3369520,13.2562675,15.9945674,8.7528248,14.4948086,14.3577443,6.7438382,9.1434984,15.4599419,13.1424011,7.0481925,7.4823108,10.5743730,6.4166006,11.8225244,8.9388744,10.3698150,10.3965596,13.5226492,16.0069239,6.1139247,11.0838351,9.1659242,7.9896031,10.7282936,14.2666492,13.6478802,10.6248561,15.3834373,11.5096033,14.5806570,10.7648690,5.3407430,7.7535042,7.1942866,9.8867927,12.7413156,10.8127809,8.1726772,8.3965665)

.. ฉันต้องการตรวจสอบการแจกแจงความน่าจะเป็นที่เหมาะสมที่สุด (แกมม่า, เบตา, ปกติ, เลขชี้กำลัง, ปัวซอง, ไค - สแควร์, ฯลฯ ) ด้วยการประมาณค่าพารามิเตอร์ ฉันได้รับทราบถึงคำถามในลิงก์ต่อไปนี้ซึ่งมีวิธีแก้ไขปัญหาโดยใช้ R: /programming/2661402/given-a-set-of-random-numbers-drawn-from-a- Continuous-univariate-distribution-f ทางออกที่ดีที่สุดที่เสนอคือ:

> library(MASS)
> fitdistr(x, 't')$loglik                                                              #$
> fitdistr(x, 'normal')$loglik                                                         #$
> fitdistr(x, 'logistic')$loglik                                                       #$
> fitdistr(x, 'weibull')$loglik                                                        #$
> fitdistr(x, 'gamma')$loglik                                                          #$
> fitdistr(x, 'lognormal')$loglik                                                      #$
> fitdistr(x, 'exponential')$loglik                                                    #$

และการกระจายที่มีค่า loglik น้อยที่สุดก็ถูกเลือก อย่างไรก็ตาม distrubtions อื่น ๆ เช่นการแจกแจงแบบเบต้าต้องการคุณสมบัติของพารามิเตอร์เพิ่มเติมบางอย่างในฟังก์ชั่น fitdistr ():

   fitdistr(x, 'beta', list(shape1 = some value, shape2= some value)).

เนื่องจากฉันกำลังพยายามหาการแจกแจงที่ดีที่สุดโดยไม่มีข้อมูลใด ๆ เลยฉันไม่รู้ว่าค่าของพารามิเตอร์อาจเป็นอย่างไรสำหรับการแจกแจงแต่ละครั้ง มีวิธีแก้ไขปัญหาอื่นที่พิจารณาข้อกำหนดนี้หรือไม่ มันไม่จำเป็นต้องอยู่ในอาร์

คำตอบ:


18

คุณทำอะไรกับอินฟินิตี้ของการแจกแจงที่ไม่ได้อยู่ในรายการ?

คุณจะทำอย่างไรเมื่อไม่มีสิ่งใดในรายการที่เหมาะสมเพียงพอ? เช่นถ้าการกระจายของคุณเป็น bimodal อย่างยิ่ง

คุณจะจัดการอย่างไรกับความจริงที่ว่าเลขชี้กำลังเป็นเพียงกรณีพิเศษของแกมม่าและเช่นนี้แกมม่าต้องสอดคล้องกับชุดของข้อมูลใด ๆ ที่ดีกว่าเสมอเนื่องจากมันมีพารามิเตอร์เพิ่มเติมและดังนั้นจึงต้องมีโอกาสที่ดีกว่า ?

คุณจะจัดการกับความจริงที่ว่าโอกาสถูกกำหนดเพียงถึงค่าคงที่การคูณและความเป็นไปได้สำหรับการแจกแจงที่แตกต่างกันอาจไม่สามารถเปรียบเทียบได้โดยอัตโนมัติเว้นแต่จะมีการกำหนดอย่างสม่ำเสมอ?

ไม่ใช่ว่าสิ่งเหล่านี้จะไม่ละลายน้ำได้ แต่การทำสิ่งนี้ด้วยวิธีที่สมเหตุสมผลนั้นไม่ใช่เรื่องไร้สาระ แน่นอนว่าต้องมีความคิดมากกว่าการทำทุกอย่างผ่านการคำนวณ MLE และการเปรียบเทียบความน่าจะเป็น


3
ฉันสนใจเฉพาะการแจกแจงในรายการและถ้าไม่มีการแจกแจงที่เหมาะสมฉันก็จะจัดการกับปัญหานั้นต่อไป แต่สำหรับตอนนี้ถึงจุดนั้นดีพอสำหรับฉัน สำหรับคำถามสุดท้ายเกี่ยวกับการกระจายแกมม่าใช่มันสามารถดีกว่ากับพารามิเตอร์บางคำถามของฉันเป็นเรื่องนี้มีอัลกอริทึมที่ช่วยให้ฉันวนลูปผ่านค่าพารามิเตอร์ที่แตกต่างกันสำหรับการกระจายที่แตกต่างกันในรายการหรือไม่ และคืนค่าการกระจายที่เหมาะสมที่สุดด้วยพารามิเตอร์ที่เหมาะสม?

1
ก็ใช่และไม่ใช่ คุณสามารถสร้าง "รูปบุญ" เพื่อคำนวณว่าชุดพารามิเตอร์ใดให้ความพอดีกับคุณมากที่สุดและเขียนลูป "เนินเขา" เพื่อเพิ่มประสิทธิภาพของรูปบุญ ตัวอย่างหนึ่งของ FOM คือค่า R-value สำหรับการถดถอยที่พอดี
Carl Witthoft

ฉันสมัครรับ +1 นี้

4
@ shachem คุณพลาดจุดที่เกี่ยวกับแกมม่า กระจายกับพารามิเตอร์เพิ่มเติมมักจะมีโอกาสที่ดีกว่าแม้กระทั่งเมื่อข้อมูลที่มาจากการกระจายกับพารามิเตอร์ที่น้อยลง คุณต้องพิจารณาเรื่องนี้ มาตรการบางอย่างของการปรับแบบพอดีสำหรับเอฟเฟกต์นี้ พูดตามตรงฉันคิดว่าสิ่งที่คุณพยายามจะทำคือ 'ตอบคำถามที่ผิด' เหมือนจะถามว่า 'ฉันจะรู้ได้อย่างไรว่าค้อนตัวใดที่ดีที่สุดสำหรับการทุบด้วยสกรูนี้'
Glen_b

1
หาก "ความน่าจะเป็นถูกกำหนดไว้เพียงค่าคงที่แบบทวีคูณ" เกล็นแล้วหนึ่งจะทำให้คำสั่งของคุณที่ว่า "การแจกแจงด้วยพารามิเตอร์เพิ่มเติมมักจะมีโอกาสที่ดีกว่า"? ที่จริงแล้วเราจะเปรียบเทียบความน่าจะเป็นที่ไม่ชัดเจนได้อย่างไร? ฉันสงสัยว่าความคิดหลักบางอย่างถูกทิ้งให้ไม่มีการเปลี่ยนแปลง ...
whuber

3

ฉันพบฟังก์ชันที่ตอบคำถามของฉันโดยใช้ matlab มันสามารถพบได้ในลิงค์นี้: http://www.mathworks.com/matlabcentral/fileexchange/34943

ฉันใช้เวกเตอร์ข้อมูลเป็นอินพุต

   allfitdist(data)

และส่งคืนข้อมูลต่อไปนี้เพื่อการกระจายอุปกรณ์ที่เหมาะสมที่สุด:

   DistName- the name of the distribution
   NLogL - Negative of the log likelihood
   BIC - Bayesian information criterion (default)
   AIC - Akaike information criterion
   AICc - AIC with a correction for finite sample sizes 
   ParamNames
   ParamDescription
   Params
   etc.

1
ตกลงตอนนี้สิ่งที่คุณต้องทำคือย้ายพอร์ตไฟล์ m ไปยังไฟล์ R :-)
Carl Witthoft

ไม่แม้แต่! เป็นฉันได้กล่าวว่าไม่จำเป็นต้องเป็นไฟล์ R ดังนั้นฟังก์ชั่น MATLAB สมบูรณ์แก้ปัญหาของฉัน :-)

AIC, BIC, AICc ฯลฯ อาจเป็นวิธีหนึ่งในการตัดสินใจ แต่ไม่ว่าจะเหมาะสมหรือไม่นั้นขึ้นอยู่กับสิ่งที่คุณพยายามทำ เช่นคุณจะทำอย่างไรถ้าการกระจายครั้งหนึ่งใกล้เคียงกับการซื้อขายอื่น ๆ ในแง่ของ log L? หากสิ่งที่คุณพยายามทำคือการคาดเดาโดยทั่วไปแล้วการเพิกเฉยโมเดลที่ใกล้เคียงกับเกณฑ์ของคุณไม่ควรถูกทิ้งไป เช่นการหาค่าเฉลี่ยของแบบจำลองเป็นวิธีหนึ่งในการนำมาพิจารณา
Björn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.