จะรู้ได้อย่างไรว่าข้อมูลตามการกระจายของปัวซองใน R หรือไม่


25

ฉันเป็นนักศึกษาระดับปริญญาตรีและมีโครงการสำหรับชั้นเรียนความเป็นไปได้ของฉัน โดยพื้นฐานแล้วฉันมีชุดข้อมูลเกี่ยวกับพายุเฮอริเคนที่ส่งผลกระทบต่อประเทศของฉันเป็นเวลาหลายปี

ในหนังสือน่าจะเป็นของฉัน (ความน่าจะเป็นและสถิติที่มี R) มีตัวอย่าง (ไม่สมบูรณ์) ของวิธีการตรวจสอบว่าข้อมูลเป็นไปตามการแจกแจงแบบปัวซงพวกเขาเริ่มพยายามพิสูจน์ว่าเกณฑ์ 3 ข้อเหล่านี้: (จากหนังสือของฉันหน้า ตัวอย่าง 120 (เกณฑ์) หน้า 122-123)

1- จำนวนผลลัพธ์ในช่วงเวลาที่ไม่ทับซ้อนกันนั้นเป็นอิสระ กล่าวอีกนัยหนึ่งจำนวนผลลัพธ์ในช่วงเวลา (0, t] เป็นอิสระจากจำนวนผลลัพธ์ในช่วงเวลา (t, t + h], h> 0

2- ความน่าจะเป็นของผลลัพธ์สองรายการขึ้นไปในช่วงเวลาสั้น ๆ ที่เพียงพอเป็นศูนย์ กล่าวอีกนัยหนึ่งหาก h มีขนาดเล็กเพียงพอความน่าจะเป็นที่จะได้รับผลลัพธ์สองช่วงขึ้นไปในช่วงเวลานั้น (t, t + h] นั้นเล็กน้อยเมื่อเทียบกับความน่าจะเป็นที่จะได้ผลลัพธ์หนึ่งหรือศูนย์ในช่วงเวลาเดียวกัน

3- ความน่าจะเป็นของผลลัพธ์หนึ่งรายการในช่วงเวลาสั้น ๆ อย่างเพียงพอหรือพื้นที่ขนาดเล็กเป็นสัดส่วนกับความยาวของช่วงเวลาหรือภูมิภาค กล่าวอีกนัยหนึ่งความน่าจะเป็นที่จะเกิดผลลัพธ์หนึ่งครั้งในช่วงความยาว h คือ lambda * h

แต่เกณฑ์ที่เหลือ 3 คือ "เป็นการฝึกหัด"

A- บางคนสามารถบอกฉันว่ามีวิธี "ง่าย" มากกว่านี้เพื่อดูว่าชุดข้อมูลของฉันเป็นไปตามการแจกแจงปัวซองหรือไม่

B- ใครบางคนสามารถอธิบายเกณฑ์ที่ 1 และ 3 กับตัวอย่างบางประเภทได้ (ถ้าเป็นกับ R น่าอัศจรรย์)

ขอบคุณ!

หมายเหตุ: ขออภัยสำหรับโพสต์ที่ยาวนาน นอกจากนี้ฉันต้องแปลงข้อมูลเพื่อให้ฉันมีตารางเช่น:

  number of hurricanes       | 0 | 1 | 2  etc.
  -----------------------------------------
  total years that have      |   |   |
  that number of hurricanes  |   |   |

เกณฑ์ในหนังสือของคุณใช้สำหรับข้อมูลช่วงเวลา มันจะมีประโยชน์ถ้าคุณมีวันที่พายุเฮอริเคนจะสโตรก ... นอกจากนี้เกณฑ์เหล่านี้ใช้สำหรับกระบวนการปัวซงในอัตราคงที่ซึ่งเห็นได้ชัดว่า (หรือฉันหวังว่าจะเป็นเช่นนั้น) ไม่ใช่กรณีของพายุเฮอริเคน ในการตรวจสอบว่าข้อมูลการนับของคุณเป็นไปตามการแจกแจงปัวซองวิธีแรกคือการทดสอบไคสแควร์
Elvis

คำตอบ:


33

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

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

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

ดังนั้นเรากลับไปที่ข้อโต้แย้งทางสถิติที่มาจากการตรวจสอบข้อมูลเอง ข้อมูลแสดงให้เห็นว่าการกระจายตัวเป็นปัวซองมากกว่าที่จะเป็นอย่างไร

ดังที่กล่าวไว้ในตอนเริ่มต้นสิ่งที่คุณสามารถทำได้คือตรวจสอบว่าข้อมูลไม่ชัดเจนว่ามีการแจกแจงแบบปัวซองหรือไม่ แต่ไม่ได้บอกว่ามันมาจากปัวซอง (คุณมั่นใจได้เลยว่า ไม่).

คุณสามารถทำการตรวจสอบนี้ผ่านการทดสอบความพอดี

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

** เพิ่มในการแก้ไขในภายหลัง: ตอนนี้เห็นได้ชัดว่านี่คือการบ้านโอกาสที่คุณคาดว่าจะทำการทดสอบไคสแควร์เพื่อตรวจสอบข้อมูลไม่สอดคล้องกับ Poisson มากขึ้น ดูตัวอย่างความดีของไคสแควร์ของการทดสอบแบบเต็มที่ทำด้านล่างพล็อตพัวเนสแรก


ผู้คนมักทำแบบทดสอบเหล่านี้ด้วยเหตุผลที่ไม่ถูกต้อง (เช่นเพราะพวกเขาต้องการพูดว่า 'ดังนั้นจึงไม่เป็นไรที่จะทำสถิติอื่น ๆ กับข้อมูลที่ถือว่าข้อมูลเป็นปัวซอง') คำถามจริงมี 'วิธีการที่ไม่ดีไปได้อย่างไร' ... และความดีของการทดสอบพอดีไม่ได้ช่วยคำถามนี้มากนัก บ่อยครั้งที่คำตอบสำหรับคำถามนั้นดีที่สุดอย่างหนึ่งที่เป็นอิสระ (/ เกือบเป็นอิสระ) ของขนาดตัวอย่าง - และในบางกรณีหนึ่งที่มีผลกระทบที่มักจะหายไปกับขนาดตัวอย่าง ... ในขณะที่การทดสอบแบบเต็มความดีนั้นไม่มีประโยชน์ ตัวอย่างขนาดเล็ก (ซึ่งความเสี่ยงของคุณจากการละเมิดสมมติฐานมักจะมากที่สุด)

หากคุณต้องทดสอบการแจกแจงปัวซงมีตัวเลือกที่เหมาะสมบางประการ หนึ่งจะทำอะไรบางอย่างที่คล้ายกับการทดสอบ Anderson-Darling ตามสถิติ AD แต่ใช้การจำลองแบบการกระจายภายใต้ null (เพื่อบัญชีสำหรับปัญหาที่สองของการกระจายไม่ต่อเนื่องและคุณต้องประเมินพารามิเตอร์)

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

n(1-R2)เข้าสู่ระบบ(xk)+เข้าสู่ระบบ(k!)k

นี่คือตัวอย่างของการคำนวณ (และพล็อต) ที่ทำใน R:

y=rpois(100,5)
n=length(y)
(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

k=as.numeric(names(x))
plot(k,log(x)+lfactorial(k))

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

นี่คือสถิติที่ฉันแนะนำให้ใช้สำหรับการทดสอบความพอดีของปัวซอง:

n*(1-cor(k,log(x)+lfactorial(k))^2)
[1] 1.0599

แน่นอนว่าในการคำนวณค่า p คุณต้องจำลองการกระจายตัวของสถิติการทดสอบภายใต้ null (และฉันไม่ได้กล่าวถึงวิธีการหนึ่งอาจจัดการกับศูนย์นับภายในช่วงของค่า) สิ่งนี้ควรให้การทดสอบที่ทรงพลังอย่างสมเหตุสมผล มีการทดสอบทางเลือกอื่น ๆ อีกมากมาย

นี่คือตัวอย่างของการทำพล็อตความเป็นปัวซองบนตัวอย่างขนาด 50 จากการกระจายเชิงเรขาคณิต (p = .3):

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

อย่างที่คุณเห็นมันจะแสดง 'หงิกงอ' ที่ชัดเจนซึ่งบ่งบอกถึงความไม่เชิงเส้น


การอ้างอิงสำหรับพล็อต Poissonness จะเป็น

David C. Hoaglin (1980),
"A Poissonness Plot", Vol.
สถิติชาวอเมริกัน
34, ลำดับที่ 3 (ส.ค. ,), หน้า 146-149

และ

Hoaglin, D. เจ Tukey (1985),
"9. การตรวจสอบรูปแบบของการแยกกระจาย"
Exploring ตารางข้อมูลแนวโน้มและรูปทรง ,
(Hoaglin, Mosteller และ Tukey สหพันธ์)
John Wiley & Sons

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


ตัวอย่างการทดสอบความพอดีแบบไคสแควร์:

นอกเหนือจากการแสดงความดีที่เหมาะสมของไคสแควร์วิธีที่มักจะคาดว่าจะทำได้ในหลาย ๆ ชั้นเรียน (แม้ว่าจะไม่ใช่วิธีที่ฉันทำ):

1: เริ่มต้นด้วยข้อมูลของคุณ (ซึ่งฉันจะใช้เป็นข้อมูลที่ฉันสร้างแบบสุ่มใน 'y' ด้านบนสร้างตารางการนับ:

(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

2: คำนวณค่าที่คาดหวังในแต่ละเซลล์โดยสมมติว่าปัวซองติดตั้งโดย ML:

 (expec=dpois(0:10,lambda=mean(y))*length(y))
 [1]  0.7907054  3.8270142  9.2613743 14.9416838 18.0794374 17.5008954 14.1173890  9.7611661
 [9]  5.9055055  3.1758496  1.5371112

3: โปรดทราบว่าหมวดหมู่ท้ายมีขนาดเล็ก สิ่งนี้ทำให้การแจกแจงแบบไคสแควร์น้อยลงเมื่อเทียบกับการกระจายตัวของสถิติการทดสอบ (กฎทั่วไปคือคุณต้องการค่าที่คาดหวังอย่างน้อย 5 ถึงแม้ว่าเอกสารจำนวนมากแสดงให้เห็นว่ากฎนั้นมีข้อ จำกัด โดยไม่จำเป็น ปิด แต่วิธีการทั่วไปสามารถปรับให้เข้ากับกฎที่เข้มงวดกว่า) ยุบหมวดหมู่ที่อยู่ติดกันดังนั้นค่าต่ำสุดที่คาดว่าจะเป็นอย่างน้อยไม่ต่ำกว่า 5 (หมวดหมู่หนึ่งหมวดหมู่ที่มีจำนวนนับที่คาดไว้ใกล้ 1 ใน 10 หมวดหมู่มากกว่านั้นไม่ได้เลวร้าย โปรดทราบว่าเรายังไม่ได้คำนึงถึงความเป็นไปได้ที่เกิน "10" ดังนั้นเราจึงจำเป็นต้องรวมสิ่งต่อไปนี้:

expec[1]=sum(expec[1:2])
expec[2:8]=expec[3:9]
expec[9]=length(y)-sum(expec[1:8])
expec=expec[1:9]
expec
sum(expec) # now adds to n

4: ในทำนองเดียวกันยุบหมวดหมู่ในการสังเกต:

(obs=table(y))
obs[1]=sum(obs[1:2])
obs[2:8]=obs[3:9]
obs[9]=sum(obs[10:11])
obs=obs[1:9]

(Oผม-Eผม)2/Eผม

print(cbind(obs,expec,PearsonRes=(obs-expec)/sqrt(expec),ContribToChisq=(obs-expec)^2/expec),d=4)
  obs  expec PearsonRes ContribToChisq
0   3  4.618   -0.75282      0.5667335
1   7  9.261   -0.74308      0.5521657
2  15 14.942    0.01509      0.0002276
3  19 18.079    0.21650      0.0468729
4  25 17.501    1.79258      3.2133538
5  14 14.117   -0.03124      0.0009761
6   7  9.761   -0.88377      0.7810581
7   5  5.906   -0.37262      0.1388434
8   5  5.815   -0.33791      0.1141816

X2=Σผม(Eผม-Oผม)2/Eผม

(chisq = sum((obs-expec)^2/expec))
[1] 5.414413
(df = length(obs)-1-1) # lose an additional df for parameter estimate
[1] 7
(pvalue=pchisq(chisq,df))
[1] 0.3904736

ทั้งการวินิจฉัยและค่า p แสดงว่าไม่มีความพอดีที่นี่ ... ซึ่งเราคาดหวังเนื่องจากข้อมูลที่เราสร้างขึ้นจริง ๆ คือปัวซอง


แก้ไข: นี่คือลิงค์ไปยังบล็อกของ Rick Wicklin ซึ่งกล่าวถึงพล็อตเรื่องความเป็นไปได้และพูดคุยเกี่ยวกับการใช้งานใน SAS และ Matlab

http://blogs.sas.com/content/iml/2012/04/12/the-poissonness-plot-a-goodness-of-fit-diagnostic/


แก้ไข 2: ถ้าฉันมีมันถูกต้องพล็อตพัวซองเนสที่แก้ไขจากการอ้างอิงปี 1985 จะเป็น *:

y=rpois(100,5)
n=length(y)
(x=table(y))
k=as.numeric(names(x))
x=as.vector(x)
x1 = ifelse(x==0,NA,ifelse(x>1,x-.8*x/n-.67,exp(-1)))
plot(k,log(x1)+lfactorial(k))

* พวกเขาปรับการสกัดกั้นเช่นกัน แต่ฉันไม่ได้ทำที่นี่ มันไม่ส่งผลกระทบต่อการปรากฏตัวของพล็อต แต่คุณต้องระวังถ้าคุณใช้สิ่งอื่นจากการอ้างอิง (เช่นช่วงความมั่นใจ) ถ้าคุณทำมันแตกต่างจากวิธีการของพวกเขา

(สำหรับตัวอย่างข้างต้นการเปลี่ยนแปลงลักษณะที่ปรากฏจากพล็อตเนสแรกไม่เปลี่ยนแปลง)


2
ขอบคุณสำหรับการตอบกลับ! แต่ฉันต้องบอกว่าฉันไม่รู้หัวข้อใด ๆ ที่คุณกำลังพูดถึง ฉันสงสัยว่า QQplot จะมีประโยชน์กับสิ่งนี้หรือไม่ คุณคิดอย่างไร? จากทางเลือกที่คุณให้ซึ่งคุณคิดว่าฉันควรใช้? ความดีเหมาะสมหรือไม่ ฉันจะหาข้อมูลและ / หรือการทดสอบที่คุณพูดถึงได้ที่ไหน (ของการทดสอบแบบราบรื่นสำหรับเทพเจ้า) นอกจากนี้คุณทราบหรือไม่ว่ามีบางคนมีรหัส R สำหรับรหัสบล็อก (ฉันไม่รู้ Matlab หรือ SAS) และขอบคุณมากสำหรับคำตอบของคุณ!
Shariff

นอกจากนี้การกระจายใดที่คุณคิดว่าข้อมูลของฉัน "พอดี" (ไม่ใช่ส่วนหนึ่งของการบ้านของฉัน แต่จะเป็นการดีที่จะรู้ :))
Shariff

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

ฉันไม่สามารถบอกได้ว่าข้อมูลการกระจายใดที่ฉันไม่ได้เห็นอาจเหมาะสม - แต่หากไม่มีข้อมูลจำนวนมากการกระจายจำนวนมากอาจสร้างข้อมูลที่น่าเชื่อถือ
Glen_b -Reinstate Monica

ดีฉันอาจใช้แลมบ์ดาโดยประมาณของค่าที่สังเกตได้สำหรับข้อมูลสำหรับ QQplot แต่ฉันอ่านนิดหน่อยและดูเหมือนว่า QQplots นั้นดีกว่าสำหรับข้อมูลต่อเนื่อง (ไม่ดีสำหรับข้อมูลที่แยก) คุณแปลรหัสได้ไหม มันจะได้รับการชื่นชมจริงๆ! แจ้งให้เราทราบหากคุณมีรหัส! (ฉันจะให้เครดิตสำหรับรหัสของคุณแน่นอน :))
Shariff

5

ทำการทดสอบความพอดีด้วยไค - สแควร์ ในกรณีของข้อมูลที่นับเราสามารถใช้goodfit()รวมอยู่ในแพ็คเกจ vcd โปรดทราบว่าหากค่า p มากกว่า 0.05 เราไม่สามารถปฏิเสธ h0: กระบวนการเป็นกระบวนการปัวซอง มิฉะนั้นจะไม่เป็นกระบวนการปัวซอง

# load the vcd package
library(vcd) ## loading vcd package

# generate two processes for test
set.seed(2014);y=rpois(200,5)
set.seed(2014);y=rnorm(100, 5, 0.3) # goodfit asks for non-negative values
# output the results
gf = goodfit(y,type= "poisson",method= "ML")
plot(gf,main="Count data vs Poisson distribution")
summary(gf)

# to automatically get the pvalue
gf.summary = capture.output(summary(gf))[[5]]
pvalue = unlist(strsplit(gf.summary, split = " "))
pvalue = as.numeric(pvalue[length(pvalue)]); pvalue

# to mannualy compute the pvalue
chisq = sum(  (gf$observed-gf$fitted)^2/gf$fitted )

df = length(gf$observed)-1-1
pvalue = pchisq(chisq,df)
pvalue

3
ผู้ใช้ที่ไม่ระบุชื่อโพสต์ความคิดเห็นต่อไปนี้ (เป็นการพยายามแก้ไข): " pchisqคำนวณความน่าจะเป็นสะสมเท่านั้น (P(Xx)P(Xx)pvalue=1-pchisq(chisq,df)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.