ฉันจะตรวจสอบได้อย่างไรว่าข้อมูลของฉันตรงกับการแจกแจงแบบเลขชี้กำลังหรือไม่


22

ฉันจะตรวจสอบได้อย่างไรว่าข้อมูลของฉันเช่นเงินเดือนมาจากการแจกแจงเลขชี้กำลังแบบต่อเนื่องใน R หรือไม่?

นี่คือฮิสโตแกรมของตัวอย่างของฉัน:

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

. ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก!


1
ตัวแปรของคุณไม่ต่อเนื่องหรือต่อเนื่อง? การแจกแจงเอ็กซ์โพเนนเชียลถูกกำหนดอย่างต่อเนื่อง
อยากรู้อยากเห็น

อย่างต่อเนื่อง ฉันสงสัยว่าจะมีการทดสอบใด ๆ ใน R เพื่อตรวจสอบว่า
24413 stjudent

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

8
การแจกแจงเอ็กซ์โพเนนเชียลจะพล็อตเป็นเส้นตรงกับตำแหน่งการพล็อต) โดยที่ตำแหน่งการพล็อตคือ (อันดับ- a ) / ( n - 2 a + 1 )อันดับคือ1สำหรับค่าต่ำสุดnคือขนาดตัวอย่างและ ตัวเลือกที่นิยมสำหรับได้แก่1 / 2 ที่ให้การทดสอบแบบไม่เป็นทางการซึ่งอาจมีประโยชน์มากกว่าการทดสอบแบบเป็นทางการ -LN(1--a)/(n-2a+1)1na1/2
Nick Cox

@Berkan พัฒนาแนวคิดเรื่อง quantile ในโพสต์ของเขา
Nick Cox

คำตอบ:


29

ฉันจะทำครั้งแรกโดยการประเมินการกระจายพารามิเตอร์ใช้rate fitdistrสิ่งนี้จะไม่บอกคุณว่าการกระจายนั้นเหมาะสมหรือไม่ดังนั้นคุณต้องใช้ความดีของการทดสอบพอดี สำหรับสิ่งนี้คุณสามารถใช้ks.test:

require(vcd)
require(MASS)

# data generation
ex <- rexp(10000, rate = 1.85) # generate some exponential distribution
control <- abs(rnorm(10000)) # generate some other distribution

# estimate the parameters
fit1 <- fitdistr(ex, "exponential") 
fit2 <- fitdistr(control, "exponential")

# goodness of fit test
ks.test(ex, "pexp", fit1$estimate) # p-value > 0.05 -> distribution not refused
ks.test(control, "pexp", fit2$estimate) #  significant p-value -> distribution refused

# plot a graph
hist(ex, freq = FALSE, breaks = 100, xlim = c(0, quantile(ex, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

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

จากประสบการณ์ส่วนตัวของฉัน (แม้ว่าฉันไม่เคยพบมันอย่างเป็นทางการที่ใดก็ได้โปรดยืนยันหรือแก้ไขฉัน) ks.testจะทำงานเฉพาะเมื่อคุณให้การประมาณพารามิเตอร์ก่อน คุณไม่สามารถปล่อยให้มันประมาณค่าพารามิเตอร์โดยอัตโนมัติเช่นเดียวกับgoodfitมัน fitdistrนั่นเป็นเหตุผลที่คุณต้องการขั้นตอนนี้ขั้นตอนที่สองกับ

สำหรับข้อมูลเพิ่มเติมตามคู่มือที่ดีของชี่: FITTING การกระจาย R


2
+1 ks.test เป็นการทดสอบที่ดีที่สุดสำหรับการทดสอบความดีของความพอดีในสถานการณ์เช่นนี้หรือไม่? ฉันคิดว่าคุณตอบคำถามของฉันด้วย
Andre Silva

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

ในการทดสอบสำหรับ KS exponentiality เมื่อพารามิเตอร์อัตราอยู่ที่ประมาณจากข้อมูล: ดูคำถามที่ไร้เดียงสาเกี่ยวกับการทดสอบ Kolmogorov Smirnov
Scortchi - Reinstate Monica

8

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

ดังที่โทมัสแนะนำการทดสอบ Kolmogorov-Smirnov ไม่เหมาะสำหรับการทดสอบแบบเลขชี้กำลังด้วยพารามิเตอร์ที่ไม่ระบุรายละเอียด

อย่างไรก็ตามหากคุณปรับตารางสำหรับการประมาณค่าพารามิเตอร์คุณจะได้รับการทดสอบของ Lilliefors สำหรับการแจกแจงแบบเอ็กซ์โปเนนเชียล

Lilliefors เอช (1969), "ในการทดสอบ Kolmogorov-Smirnov สำหรับการกระจายชี้แจงกับที่ไม่รู้จักหมายถึง" วารสารของสมาคมอเมริกันสถิติฉบับ 64. pp. 387–389

การใช้งานของการทดสอบนี้จะกล่าวถึงในคอนโอเวอร์ของการปฏิบัติ nonparametric สถิติ

อย่างไรก็ตามใน D'Agostino & Stephens ' Goodness of Fit Techniquesพวกเขาคุยกันเรื่องการดัดแปลงของ Anderson-Darling test ที่คล้ายกัน (ค่อนข้างเอียงถ้าฉันจำได้ถูกต้อง แต่ฉันคิดว่าข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับวิธีการเข้าถึงกรณีที่อธิบายคือ พบได้ในหนังสือ) และเกือบจะแน่นอนว่ามีพลังมากกว่าทางเลือกที่น่าสนใจ

n(1-R2)R

ท้ายที่สุดเราอาจใช้วิธีการทดสอบที่ราบรื่นเช่นเดียวกับในหนังสือโดย Rayner & Best ( การทดสอบอย่างราบรื่นของ Goodness of Fit , 1990 - แม้ว่าฉันเชื่อว่ามีวิธีการทดสอบที่ใหม่กว่านี้โดยที่ Thas และ " in R " เพิ่มในชื่อ) กรณีเลขชี้กำลังยังครอบคลุมใน:

JCW Rayner และ DJ Best (1990), "การทดสอบอย่างราบรื่นของความดีพอดี: ภาพรวม", รีวิวสถิติระหว่างประเทศ , ฉบับที่, 58, ลำดับที่ 1 (เม.ย. , 2533), หน้า 9-17

Cosma Shalizi ยังกล่าวถึงการทดสอบที่ราบรื่นในบทหนึ่งของบันทึกการบรรยายการวิเคราะห์ขั้นสูงระดับปริญญาตรี ของเขาหรือดู Ch15 ของหนังสือของเขาการวิเคราะห์ข้อมูลขั้นสูงจากมุมมองเบื้องต้น

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

n(1-R2)


5

คุณสามารถใช้qq-plotซึ่งเป็นวิธีการแบบกราฟิกสำหรับการเปรียบเทียบการแจกแจงความน่าจะเป็นสองแบบด้วยการพล็อต quantiles

ใน R ไม่มีฟังก์ชั่น qq-plot นอกกรอบสำหรับการแจกแจงเอ็กซ์โพเนนเชียลโดยเฉพาะ (อย่างน้อยระหว่างฟังก์ชั่นพื้นฐาน) อย่างไรก็ตามคุณสามารถใช้สิ่งนี้:

qqexp <-  function(y, line=FALSE, ...) { 
    y <- y[!is.na(y)]
    n <- length(y)
    x <- qexp(c(1:n)/(n+1))
    m <- mean(y)
    if (any(range(y)<0)) stop("Data contains negative values")
    ylim <- c(0,max(y))
    qqplot(x, y, xlab="Exponential plotting position",ylim=ylim,ylab="Ordered sample", ...)
    if (line) abline(0,m,lty=2)
    invisible()
  }

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


2
ใน Stata qexpจาก SSC เป็นการใช้งานแบบกระป๋อง
Nick Cox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.