การประมาณการแจกแจงจากข้อมูล


12

ฉันมีตัวอย่างของข้อมูลที่สร้างขึ้นRโดยrnorm(50,0,1)ดังนั้นข้อมูลที่เห็นได้ชัดก็คือการแจกแจงแบบปกติ อย่างไรก็ตามRไม่ "รู้" ข้อมูลการแจกจ่ายนี้เกี่ยวกับข้อมูล

มีวิธีการRที่สามารถประมาณการกระจายตัวอย่างของฉันมาจากไหน? ถ้าไม่ฉันจะใช้shapiro.testฟังก์ชั่นและดำเนินการต่อ


ฉันไม่แน่ใจว่าฉันรู้จักผลที่สุดของคำถามนี้ มันเป็นความจริงที่ว่าถ้าคุณมีเวกเตอร์ของตัวเลขใน R มีข้อมูลเมตาไม่มากที่เกี่ยวข้อง แต่ทำไมมันถึงรบกวนคุณ ทำไมคุณต้องการสิ่งนั้น / คุณต้องการทำอะไรกับมัน? สมมติว่ามันมีเช่นนั้นมันจะเป็นประโยชน์เฉพาะในกรณีที่คุณส่งเวกเตอร์นั้นไปยังฟังก์ชันด้วยวิธีการเฉพาะสำหรับข้อมูลแบบเกาส์เทียบกับแบบอื่น ฉันไม่รู้อะไรเลย (แม้ว่าฉันแทบจะไม่เป็นผู้ใช้ R ผู้เชี่ยวชาญมากที่สุดในโลก)
gung - Reinstate Monica

ถ้าคุณเพียงต้องการที่จะทดสอบว่าตัวอย่างใดก็ตามดูเหมือนว่าปกติการทดสอบ Shapiro-Wilk เป็นตัวเลือกที่ดี (แม้ว่ามันคุ้มค่าในขณะที่คุณอ่านคำถามนี้และคำตอบที่ได้รับมี) ฉันสามารถดูว่าสิ่งนี้อาจเกิดขึ้นในการศึกษาแบบจำลอง แต่ไม่มีรายละเอียดเพิ่มเติมเกี่ยวกับการศึกษามันยากที่จะให้คำตอบที่เป็นประโยชน์
gung - Reinstate Monica

ทำไมคุณต้องระบุการกระจายสำหรับข้อมูล ตัวเลือกการกระจายแบบอัตโนมัติมักเป็นแนวคิดที่น่าสนใจ แต่นั่นไม่ได้ทำให้เป็นความคิดที่ดี
Glen_b -Reinstate Monica

คำตอบ:


21

มีเป็นfitdistrฟังก์ชั่นในแพคเกจ MASSหรือบางส่วนของฟังก์ชั่นในแพคเกจ fitdistrplus นี่คือตัวอย่างจากหลัง

require(fitdistrplus)

set.seed(1)
dat <- rnorm(50,0,1)
f1 <- fitdist(dat,"norm")
f2 <- fitdist(dat,"logis")
f3 <- fitdist(dat,"cauchy")

ตัวอย่างเช่น

> f1
Fitting of the distribution ' norm ' by maximum likelihood 
Parameters:
      estimate Std. Error
mean 0.1004483 0.11639515
sd   0.8230380 0.08230325

และคุณสามารถเห็นแผนการด้วย

plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
plotdist(dat,"logis",para=list(location=f2$estimate[1],scale=f2$estimate[2]))
plotdist(dat,"cauchy",para=list(location=f3$estimate[1],scale=f3$estimate[2]))

ดังนั้นจึงน่าจะเป็นการแจกแจงแบบปกติ

ป้อนคำอธิบายรูปภาพที่นี่

แต่ก็อาจเป็นการกระจายโลจิสติก (คุณจะต้องมีตัวอย่างขนาดใหญ่เพื่อแยกความแตกต่างในหาง)

ป้อนคำอธิบายรูปภาพที่นี่

แม้ว่าด้วย qqplot และดู CDF คุณสามารถบอกได้ว่านี่อาจไม่ใช่การกระจาย Cauchy

ป้อนคำอธิบายรูปภาพที่นี่


1
ขอบคุณสำหรับภาพรวมที่น่ารักเฮนรี่ ฉันถูกถามว่ามีแพคเกจใด ๆ ที่ใช้ในข้อมูลและคายออกที่กระจาย (และพารามิเตอร์) คายที่ดีที่สุด คุณตระหนักถึงฟังก์ชั่นดังกล่าวในแพ็คเกจใด ๆ หรือไม่?
Roman Luštrik

3
fitdistแสดงการประมาณของพารามิเตอร์ มีคำแนะนำบางอย่างเกี่ยวกับสิ่งที่การกระจายอาจมาจากฟังก์ชั่นเช่นdescdist(dat, boot = 1000)แต่พวกมันก็จะได้ประโยชน์จากตัวอย่างที่ใหญ่กว่า
Henry

ไม่มีฟังก์ชั่นเหล่านี้ที่จะแก้ปัญหาที่คุณโพสต์ในคำถามสุดท้ายของคุณเมื่อตัวอย่างไม่ได้เป็นตัวแทน
John

1
@Scott Kaiser: ฉันไม่คิดอย่างนั้น fitdist()เป็นฟังก์ชั่นในแพ็คเกจ fitdistrplus และนี่คือสิ่งที่ฉันใช้ ในขณะเดียวกันfitdistr()ฟังก์ชั่นในแพ็คเกจ MASS และจะไม่สามารถใช้งานได้ในรูปแบบนี้
Henry

1
ฉันไม่มีคะแนนมากพอที่จะเพิ่มสิ่งนี้เป็นความคิดเห็น แต่เช่นเดียวกับหมายเหตุเพิ่มเติมสำหรับข้อมูลที่ให้ไว้ในเธรดข้างต้นคุณสามารถโทรไปที่plot(f1)แทนที่จะโทรไปยังข้อความที่ซับซ้อนกว่าเดิมได้plotdist(dat,"norm",para=list(mean=f1$estimate[1],sd=f1$estimate[2]))
Swestenb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.