จะตรวจสอบได้อย่างไรว่าข้อมูลของฉันตรงกับการกระจายปกติหรือไม่


11

ฉันต้องการตรวจสอบRว่าข้อมูลของฉันตรงกับการแจกแจงแบบล็อกปกติหรือแบบ Pareto ฉันจะทำสิ่งนั้นได้อย่างไร อาจks.testช่วยให้ฉันทำเช่นนั้นได้ แต่ฉันจะรับพารามิเตอร์αและkสำหรับการกระจาย Pareto สำหรับข้อมูลของฉันได้อย่างไร


สำหรับคำถามสุดท้ายดูได้ที่stats.stackexchange.com/questions/392629/…
kjetil b halvorsen

คำตอบ:


6

... ฉันเพิ่งสังเกตเห็นว่าคุณมีแท็ก 'การถดถอย' ที่นั่น หากคุณมีปัญหาการถดถอยคุณไม่สามารถดูการกระจายการตอบสนองแบบไม่แปรผันเพื่อประเมินรูปร่างการกระจายได้เนื่องจากมันขึ้นอยู่กับรูปแบบของ x หากคุณถามเกี่ยวกับการตรวจสอบว่าตัวแปรตอบสนอง (y) ในการถดถอยบางประเภทหรือ GLM มี lognormal หรือการแจกแจงแบบพาเรโตที่ค่าเฉลี่ยแตกต่างกันระหว่างการสังเกตนั่นเป็นคำถามที่แตกต่างกันมาก ในส่วนที่เหลือ) คุณช่วยอธิบายได้ไหมถ้ามันเป็นปัญหาการถดถอย คำตอบของฉันในปัจจุบันเกี่ยวข้องกับการประเมินค่า lognormal หรือ Pareto

คุณมีคำถามที่แตกต่างกันบ้าง

จะตรวจสอบได้อย่างไรว่าข้อมูลของฉันตรงกับการกระจายปกติหรือไม่

บันทึกและทำแผน QQ ปกติ ดูและดูว่าการแจกจ่ายนั้นใกล้เคียงกับจุดประสงค์ของคุณหรือไม่

ฉันต้องการตรวจสอบใน R หากข้อมูลของฉันตรงกับการแจกแจงแบบปกติหรือแบบพาเรโต้

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

การทดสอบดังกล่าวไม่ได้เป็นพื้นฐานที่มีประโยชน์สำหรับการเลือกแบบจำลอง

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

บางทีการทดสอบอาจช่วยให้ฉันทำอย่างนั้นได้

ไม่ก่อนมีปัญหาที่ฉันเพิ่งพูดถึงและข้อที่สองการทดสอบ Kolmogorov-Smirnov เป็นการทดสอบสำหรับการแจกแจงแบบระบุอย่างสมบูรณ์ คุณไม่มีหนึ่งในนั้น

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

ดูตัวอย่างด้านล่าง

ฉันจะรับพารามิเตอร์อัลฟาและเคสำหรับการกระจายพาเรโตสำหรับข้อมูลของฉันได้อย่างไร

หากคุณต้องการประเมินพารามิเตอร์ใช้ MLE ... แต่อย่าทำเช่นนั้นเพื่อตัดสินใจระหว่าง Pareto กับ lognormal

คุณสามารถบอกได้ว่าอันไหนของ lognormal และ Pareto อันไหน?

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

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

รหัสที่ใช้ทำสี่แปลงดังกล่าว:

qqnorm(log(y1))
qqnorm(log(y2))
qex <- function(x) qexp((rank(x)-.375)/(length(x)+.25))
plot(qex(y1),log(y1))
plot(qex(y2),log(y2))

หากคุณมีปัญหาประเภทการถดถอย - หนึ่งที่ค่าเฉลี่ยเปลี่ยนแปลงกับตัวแปรอื่น ๆ คุณสามารถประเมินความเหมาะสมของสมมติฐานการกระจายในสถานะที่มีแบบจำลองที่เหมาะสมสำหรับค่าเฉลี่ย


3

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

rm(list=ls())

set.seed(123)
x = rlnorm(100,0,1)

hist(x)

# Loglikelihood and AIC for lognormal model

ll1 = function(param){
if(param[2]>0) return(-sum(dlnorm(x,param[1],param[2],log=T)))
else return(Inf)
}

AIC1 = 2*optim(c(0,1),ll1)$value + 2*2

# Loglikelihood and AIC for Pareto model

dpareto=function(x, shape=1, location=1) shape * location^shape / x^(shape + 1)

ll2 = function(param){
if(param[1]>0 & min(x)> param[2]) return(-sum(log(dpareto(x,param[1],param[2]))))
else return(Inf)
}


AIC2 = 2*optim(c(1,0.01),ll2)$value + 2*2

# Comparison using AIC, which in this case favours the lognormal model.

 c(AIC1,AIC2)

1

อาจจะเป็น fitdistr ()?

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

require(MASS)
hist(x, freq=F)
fit<-fitdistr(x,"log-normal")$estimate
lines(dlnorm(0:max(x),fit[1],fit[2]), lwd=3)


> fit
meanlog     sdlog 
3.8181643 0.1871289 



> dput(x)
c(52.6866903145324, 39.7511298620398, 50.0577071855833, 33.8671245370402, 
51.6325665911116, 41.1745418750494, 48.4259060939127, 67.0893697776377, 
35.5355051232044, 44.6197404834786, 40.5620805256951, 39.4265590077884, 
36.0718655240496, 56.0205581625823, 52.8039852992611, 46.2069383488226, 
36.7324212941395, 44.7998046213554, 47.9727885542368, 36.3400338997286, 
32.7514839453244, 50.6878893947656, 53.3756089181472, 39.4769689441593, 
38.5432770167907, 62.350999487007, 44.5140171935881, 47.4026606915147, 
57.3723511479393, 64.4041641945078, 51.2286815562554, 60.4921839777139, 
71.6127652225805, 40.6395409719693, 48.681036613906, 52.3489622656967, 
46.6219563536878, 55.6136160469819, 62.3003761050482, 42.7865905767138, 
50.2413659137295, 45.6327941365187, 46.5621907725798, 48.9734785224035, 
40.4828649022511, 59.4982559591637, 42.9450436744074, 66.8393386407167, 
40.7248473206552, 45.9114242834839, 34.2671010054407, 45.7569869970351, 
50.4358523486278, 44.7445606782492, 44.4173298921541, 41.7506552050873, 
34.5657344132409, 47.7099864540652, 38.1680974794929, 42.2126680994737, 
35.690599714042, 37.6748157160789, 35.0840798650981, 41.4775827114607, 
36.6503753230464, 42.7539062488003, 39.2210050689652, 45.9364763482558, 
35.3687017955285, 62.8299659875044, 38.1532612008011, 39.9183076516292, 
59.0662388169057, 47.9032427690417, 42.4419580084314, 45.785859495192, 
59.5254284342724, 47.9161476636566, 32.6868959277799, 30.1039453246766, 
37.7606323857655, 35.754797368422, 35.5239777126187, 43.7874313667592, 
53.0328404605954, 37.4550326357314, 42.7226751172495, 44.898430515261, 
59.7229655935187, 41.0701258705001, 42.1672231656919, 60.9632847841197, 
60.3690132883734, 45.6469334940722, 39.8300067022836, 51.8185235060234, 
44.908828102875, 50.8200011497451, 53.7945569828737, 65.0432670527801, 
49.0306734716282, 35.9442821219144, 46.8133296904456, 43.7514416949611, 
43.7348972849838, 57.592040060118, 48.7913517211383, 38.5555058596449
)

1
แม้ว่าวิธีนี้จะเหมาะกับข้อมูลปกติ แต่ก็ไม่ได้บอกว่าพอดีเป็นสิ่งที่ดีหรือว่า Pareto เป็นตัวเลือกที่ดีกว่า
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.