ควรแก้ไขได้อย่างง่ายดายโดยใช้การอนุมานแบบเบย์ คุณรู้คุณสมบัติการวัดของแต่ละจุดด้วยความเคารพในคุณค่าที่แท้จริงของพวกเขาและต้องการสรุปค่าเฉลี่ยประชากรและ SD ที่สร้างค่าที่แท้จริง นี่คือรูปแบบลำดับชั้น
รื้อฟื้นปัญหา (พื้นฐานเบย์)
โปรดทราบว่าในขณะที่สถิติของออร์โธดอกซ์นั้นให้ค่าเฉลี่ยเดียวกับคุณในกรอบการทำงานแบบเบย์คุณจะได้รับการแจกแจงค่าความน่าเชื่อถือของค่าเฉลี่ย เช่นการสังเกต (1, 2, 3) กับ SDs (2, 2, 3) อาจถูกสร้างขึ้นโดยการประมาณความน่าจะเป็นสูงสุดที่ 2 แต่ยังหมายถึง 2.1 หรือ 1.8 แต่มีโอกาสน้อยกว่าเล็กน้อย (ให้ข้อมูล) MLE ดังนั้นนอกเหนือไปจาก SD ที่เรายังสรุปค่าเฉลี่ย
ความแตกต่างทางแนวคิดอีกอย่างหนึ่งคือคุณต้องกำหนดสถานะความรู้ของคุณก่อนทำการสังเกต เราเรียกนักบวชคนนี้ คุณอาจทราบล่วงหน้าว่ามีการสแกนบางพื้นที่และอยู่ในช่วงความสูง การขาดความรู้อย่างสมบูรณ์จะต้องมีองศา (-90, 90) เหมือนก่อนใน X และ Y และอาจสูง (0, 10,000) เมตรในระดับความสูง (เหนือมหาสมุทร, ใต้จุดสูงสุดของโลก) คุณต้องกำหนดแจกแจงไพรเออร์สำหรับพารามิเตอร์ทุกสิ่งที่คุณต้องการที่จะประเมินคือได้รับหลังการกระจายสำหรับ นี่เป็นความจริงสำหรับค่าเบี่ยงเบนมาตรฐานเช่นกัน
ดังนั้นการกล่าวถึงปัญหาของคุณใหม่ฉันคิดว่าคุณต้องการอนุมานค่าที่น่าเชื่อถือสำหรับสามวิธี (X.mean, Y.mean, X.mean) และสามส่วนเบี่ยงเบนมาตรฐาน (X.sd, Y.sd, X.sd) ซึ่งอาจมี สร้างข้อมูลของคุณแล้ว
นางแบบ
ใช้ไวยากรณ์ BUGS มาตรฐาน (ใช้ WinBUGS, OpenBUGS, JAGS, stan หรือแพ็คเกจอื่น ๆ เพื่อเรียกใช้งานนี้) โมเดลของคุณจะมีลักษณะดังนี้:
model {
# Set priors on population parameters
X.mean ~ dunif(-90, 90)
Y.mean ~ dunif(-90, 90)
Z.mean ~ dunif(0, 10000)
X.sd ~ dunif(0, 10) # use something with better properties, i.e. Jeffreys prior.
Y.sd ~ dunif(0, 10)
Z.sd ~ dunif(0, 100)
# Loop through data (or: set up plates)
# assuming observed(x, sd(x), y, sd(y) z, sd(z)) = d[i, 1:6]
for(i in 1:n.obs) {
# The true value was generated from population parameters
X[i] ~ dnorm(X.mean, X.sd^-2) #^-2 converts from SD to precision
Y[i] ~ dnorm(Y.mean, Y.sd^-2)
Z[i] ~ dnorm(Z.mean, Z.sd^-2)
# The observation was generated from the true value and a known measurement error
d[i, 1] ~ dnorm(X[i], d[i, 2]^-2) #^-2 converts from SD to precision
d[i, 3] ~ dnorm(Y[i], d[i, 4]^-2)
d[i, 5] ~ dnorm(Z[i], d[i, 6]^-2)
}
}
โดยปกติคุณจะตรวจสอบพารามิเตอร์. mean และ. sd และใช้ posteriors ของพวกเขาสำหรับการอนุมาน
การจำลอง
ฉันจำลองข้อมูลบางอย่างเช่นนี้:
# Simulate 500 data points
x = rnorm(500, -10, 5) # mean -10, sd 5
y = rnorm(500, 20, 5) # mean 20, sd 4
z = rnorm(500, 2000, 10) # mean 2000, sd 10
d = cbind(x, 0.1, y, 0.1, z, 3) # added constant measurement errors of 0.1 deg, 0.1 deg and 3 meters
n.obs = dim(d)[1]
จากนั้นเรียกใช้โมเดลโดยใช้ JAGS สำหรับการทำซ้ำ 2,000 ครั้งหลังจากการเผาไหม้ 500 ครั้ง นี่คือผลลัพธ์สำหรับ X.sd
ช่วงสีน้ำเงินแสดงถึงความหนาแน่นหลังสูงสุดหรือช่วงความน่าเชื่อถือ 95% (ซึ่งคุณเชื่อว่าพารามิเตอร์นั้นหลังจากตรวจสอบข้อมูลแล้วสังเกตว่าช่วงความเชื่อมั่นของออร์โธดอกซ์ไม่ได้ให้สิ่งนี้กับคุณ)
เส้นแนวตั้งสีแดงคือการประมาณ MLE ของข้อมูลดิบ โดยทั่วไปแล้วเป็นกรณีที่พารามิเตอร์ที่เป็นไปได้มากที่สุดในการประมาณค่าแบบเบย์ก็เป็นพารามิเตอร์ที่มีแนวโน้มมากที่สุด แต่คุณไม่ควรสนใจมากเกินไปเกี่ยวกับด้านบนของหลัง ค่าเฉลี่ยหรือค่ามัธยฐานจะดีกว่าหากคุณต้องการต้มลงไปเป็นตัวเลขเดียว
ขอให้สังเกตว่า MLE / top ไม่ได้อยู่ที่ 5 เพราะข้อมูลถูกสร้างแบบสุ่มไม่ใช่เพราะสถิติผิด
Limitiations
นี่เป็นแบบง่าย ๆ ที่มีข้อบกพร่องหลายอย่างในขณะนี้
- มันไม่ได้จัดการตัวตนของ -90 และ 90 องศา อย่างไรก็ตามสิ่งนี้สามารถทำได้โดยการสร้างตัวแปรกลางซึ่งเปลี่ยนค่ามากที่สุดของพารามิเตอร์ที่ประมาณไว้ในช่วง (-90, 90)
- ปัจจุบัน X, Y และ Z มีรูปแบบที่เป็นอิสระแม้ว่าอาจจะมีความสัมพันธ์กันและสิ่งนี้ควรนำมาพิจารณาเพื่อให้ได้ประโยชน์สูงสุดจากข้อมูล มันขึ้นอยู่กับว่าอุปกรณ์การวัดนั้นเคลื่อนที่หรือไม่ (ความสัมพันธ์แบบอนุกรมและการกระจายข้อต่อของ X, Y และ Z จะให้ข้อมูลมากมาย) หรือหยุดนิ่ง (ความเป็นอิสระก็โอเค) ฉันสามารถขยายคำตอบเพื่อเข้าใกล้สิ่งนี้หากมีการร้องขอ
ฉันควรพูดถึงว่ามีวรรณคดีมากมายเกี่ยวกับแบบจำลอง Bayesian เชิงพื้นที่ซึ่งฉันไม่รู้เกี่ยวกับ