คำตอบนี้นำเสนอโซลูชั่นที่สอง: การแก้ไขของ Sheppard และการประเมินความเป็นไปได้สูงสุด ทั้งสองตกลงอย่างใกล้ชิดกับการประมาณค่าเบี่ยงเบนมาตรฐาน:สำหรับครั้งแรกและสำหรับวินาที (เมื่อปรับให้ใกล้เคียงกับตัวประมาณ "ไม่เอนเอียง" ตามปกติ)7.707.69
การแก้ไขของ Sheppard
"การแก้ไขของ Sheppard" เป็นสูตรที่ปรับช่วงเวลาที่คำนวณจากข้อมูลที่ถูกขัดจังหวะ (เช่นนี้) ที่
ข้อมูลถูกสันนิษฐานว่าควบคุมโดยการแจกแจงที่สนับสนุนในช่วงเวลา จำกัด[a,b]
ช่วงเวลานั้นถูกแบ่งตามลำดับเป็นความกว้างทั่วไปเท่ากับที่ค่อนข้างเล็ก (ไม่มีถังขยะที่มีสัดส่วนของข้อมูลทั้งหมด)h
การกระจายมีฟังก์ชั่นความหนาแน่นอย่างต่อเนื่อง
พวกเขาได้มาจากสูตรผลรวมออยเลอร์ - แมคโลรินซึ่งใกล้เคียงอินทิกรัลในแง่ของการรวมกันเชิงเส้นของค่าของปริพันธ์และที่จุดเว้นระยะสม่ำเสมอดังนั้นโดยทั่วไปจึงสามารถนำมาใช้ได้
แม้ว่าการพูดการแจกแจงแบบปกติอย่างเคร่งครัดจะไม่ได้รับการสนับสนุนในช่วงเวลาที่แน่นอน แต่เป็นการประมาณที่ใกล้เคียงที่สุด โดยพื้นฐานแล้วความน่าจะเป็นทั้งหมดนั้นอยู่ภายในเจ็ดส่วนเบี่ยงเบนมาตรฐานของค่าเฉลี่ย ดังนั้นการแก้ไขของ Sheppard จะใช้กับข้อมูลที่สมมติว่ามาจากการแจกแจงแบบปกติ
การแก้ไขสองรายการแรกของ Sheppard คือ
ใช้ค่าเฉลี่ยของข้อมูล binned สำหรับค่าเฉลี่ยของข้อมูล (นั่นคือไม่จำเป็นต้องทำการแก้ไขสำหรับค่าเฉลี่ย)
ลบจากความแปรปรวนของข้อมูลที่ถูกตัดเพื่อให้ได้ความแปรปรวน (โดยประมาณ) ของข้อมูลh2/12
ที่ไหนมาจากไหน? นี้เท่ากับความแปรปรวนของตัวแปรเครื่องแบบกระจายไปทั่วในช่วงเวลาของความยาวชั่วโมงสังหรณ์ใจแล้วแก้ไขเชปสำหรับช่วงเวลาที่สองแสดงให้เห็นว่าbinning ข้อมูล - อย่างมีประสิทธิภาพแทนที่พวกเขาจากจุดกึ่งกลางของแต่ละถัง - จะปรากฏขึ้นเพื่อเพิ่มมูลค่าโดยประมาณกระจายอย่างสม่ำเสมอระหว่างและดังนั้นมันพอง ความแปรปรวนโดยเอชh2/12h−h/2h/2h2/12
ลองคำนวณดู ฉันใช้R
เพื่ออธิบายพวกเขาเริ่มต้นด้วยการระบุจำนวนและถังขยะ:
counts <- c(1,2,3,4,1)
bin.lower <- c(40, 45, 50, 55, 70)
bin.upper <- c(45, 50, 55, 60, 75)
สูตรที่เหมาะสมที่จะใช้สำหรับการนับมาจากการจำลองความกว้างของช่องเก็บด้วยจำนวนที่กำหนดโดยการนับ นั่นคือข้อมูล binned เทียบเท่า
42.5, 47.5, 47.5, 52.5, 52.5, 57.5, 57.5, 57.5, 57.5, 72.5
จำนวนของพวกเขาค่าเฉลี่ยและความแปรปรวนสามารถคำนวณได้โดยตรงโดยไม่ต้องขยายข้อมูลในลักษณะนี้แม้ว่า: เมื่อถังมีจุดกึ่งกลางและนับจากแล้วส่วนร่วมในการรวมของสี่เหลี่ยมเป็น 2 สิ่งนี้นำไปสู่สูตรที่สองของ Wikipedia ที่อ้างถึงในคำถามxkkx2
bin.mid <- (bin.upper + bin.lower)/2
n <- sum(counts)
mu <- sum(bin.mid * counts) / n
sigma2 <- (sum(bin.mid^2 * counts) - n * mu^2) / (n-1)
ค่าเฉลี่ย ( mu
) เป็น (ต้องไม่มีการแก้ไข) และความแปรปรวน ( ) เป็น61.36 (รากที่สองของมันคือตามที่ระบุในคำถาม) เนื่องจากความกว้างถังขยะทั่วไปคือเราจึงลบจากความแปรปรวนและนำรากที่สองของมันมาเพื่อรับสำหรับค่าเบี่ยงเบนมาตรฐาน1195/22≈54.32sigma2
675/11≈61.367.83h=5h2/12=25/12≈2.08675/11−52/12−−−−−−−−−−−−√≈7.70
การประมาณความน่าจะเป็นสูงสุด
วิธีทางเลือกคือการใช้การประมาณโอกาสสูงสุด เมื่อสันนิษฐานกระจายพื้นฐานมีฟังก์ชั่นการกระจาย (ขึ้นอยู่กับพารามิเตอร์ที่จะได้รับโดยประมาณ) และถังมีค่าออกมาจากชุดของอิสระกระจายค่าเหมือนกันจากแล้ว (เพิ่มเติม) การสนับสนุนโอกาสในการบันทึกของถังขยะนี้คือFθθ(x0,x1]kFθ
log∏i=1k(Fθ(x1)−Fθ(x0))=klog(Fθ(x1)−Fθ(x0))
(ดูMLE / โอกาสของช่วงเวลาที่กระจาย lognormally )
การรวมที่ถังขยะทั้งหมดทำให้มีโอกาสในการบันทึกสำหรับชุดข้อมูล ตามปกติเราจะพบการประมาณการซึ่งช่วยลดtheta) เรื่องนี้ต้องมีการเพิ่มประสิทธิภาพและตัวเลขที่ถูกเร่งโดยการจัดหาค่าเริ่มต้นที่ดีสำหรับ\รหัสต่อไปนี้ทำงานสำหรับการแจกแจงแบบปกติ:Λ(θ)θ^−Λ(θ)θR
sigma <- sqrt(sigma2) # Crude starting estimate for the SD
likelihood.log <- function(theta, counts, bin.lower, bin.upper) {
mu <- theta[1]; sigma <- theta[2]
-sum(sapply(1:length(counts), function(i) {
counts[i] *
log(pnorm(bin.upper[i], mu, sigma) - pnorm(bin.lower[i], mu, sigma))
}))
}
coefficients <- optim(c(mu, sigma), function(theta)
likelihood.log(theta, counts, bin.lower, bin.upper))$par
ค่าสัมประสิทธิ์ส่งผลให้มี7.33)(μ^,σ^)=(54.32,7.33)
โปรดจำไว้ว่าสำหรับการแจกแจงแบบปกติการประมาณความน่าจะเป็นสูงสุดของ (เมื่อข้อมูลได้รับอย่างถูกต้องและไม่ได้ถูก binned) คือประชากร SD ของข้อมูลไม่ใช่การประมาณ "อคติที่ถูกแก้ไข" แบบธรรมดา(n-1) ขอให้เราแล้ว (สำหรับการเปรียบเทียบ) แก้ไข MLE ของหา7.69 นี้เปรียบเทียบกับผลของการแก้ไขเชปซึ่งเป็น7.70σn/(n−1)σn/(n−1)−−−−−−−−√σ^=11/10−−−−−√×7.33=7.697.70
การตรวจสอบข้อสมมติฐาน
เพื่อให้เห็นภาพผลลัพธ์เหล่านี้เราสามารถพล็อตความหนาแน่นปกติที่พอดีกับฮิสโตแกรม:
hist(unlist(mapply(function(x,y) rep(x,y), bin.mid, counts)),
breaks = breaks, xlab="Values", main="Data and Normal Fit")
curve(dnorm(x, coefficients[1], coefficients[2]),
from=min(bin.lower), to=max(bin.upper),
add=TRUE, col="Blue", lwd=2)
สำหรับบางรุ่นนี้อาจดูไม่เข้าท่าพอดี อย่างไรก็ตามเนื่องจากชุดข้อมูลมีขนาดเล็ก (เพียงค่า) อาจทำให้เกิดการเบี่ยงเบนขนาดใหญ่อย่างน่าประหลาดใจระหว่างการกระจายของการสังเกตและการแจกแจงต้นแบบที่แท้จริงสามารถเกิดขึ้นได้11
ลองตรวจสอบสมมติฐานอย่างเป็นทางการมากขึ้น (สร้างโดย MLE) ว่าข้อมูลถูกควบคุมโดยการแจกแจงแบบปกติ คุณสามารถรับความดีโดยประมาณของการทดสอบแบบพอดีได้จากการ : พารามิเตอร์โดยประมาณแสดงถึงจำนวนข้อมูลที่คาดหวังในแต่ละถัง สถิติเปรียบเทียบจำนวนการสังเกตการนับที่คาดหวัง นี่คือการทดสอบใน:χ2χ2R
breaks <- sort(unique(c(bin.lower, bin.upper)))
fit <- mapply(function(l, u) exp(-likelihood.log(coefficients, 1, l, u)),
c(-Inf, breaks), c(breaks, Inf))
observed <- sapply(breaks[-length(breaks)], function(x) sum((counts)[bin.lower <= x])) -
sapply(breaks[-1], function(x) sum((counts)[bin.upper < x]))
chisq.test(c(0, observed, 0), p=fit, simulate.p.value=TRUE)
ผลลัพธ์คือ
Chi-squared test for given probabilities with simulated p-value (based on 2000 replicates)
data: c(0, observed, 0)
X-squared = 7.9581, df = NA, p-value = 0.2449
ซอฟต์แวร์ทำการทดสอบการเปลี่ยนแปลง (ซึ่งเป็นสิ่งจำเป็นเนื่องจากสถิติการทดสอบไม่เป็นไปตามการแจกแจงแบบไคสแควร์อย่างแน่นอน: ดูการวิเคราะห์ของฉันที่วิธีทำความเข้าใจองศาอิสระ ) ค่า p ของมันที่ซึ่งไม่เล็กแสดงหลักฐานน้อยมากที่ออกจากภาวะปกติ: เรามีเหตุผลที่จะไว้วางใจผลลัพธ์ความน่าจะเป็นสูงสุด0.245