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


12

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

วิธีการประมาณความหนาแน่นนี้มีชื่อหรือไม่? ถ้าไม่ใช่มันเป็นกรณีพิเศษของวิธีอื่นในวรรณคดีหรือไม่?

นี่คือวิธีการที่เรามีเวกเตอร์ซึ่งเราสันนิษฐานว่ามาจากการแจกแจงที่ไม่รู้จักที่เราต้องการประเมิน วิธีการทำเช่นนี้คือการใช้ค่าที่เป็นไปได้ทั้งหมดในXและสำหรับแต่ละคู่[ x i , x j ] i jเหมาะสมกับการแจกแจงแบบปกติโดยใช้โอกาสสูงสุด การประมาณความหนาแน่นของผลลัพธ์คือการกระจายตัวของส่วนผสมที่ประกอบด้วย Normals ที่ได้ทั้งหมดซึ่งแต่ละ Normal จะได้รับน้ำหนักเท่ากันX=[x1,x2,...,xn]X[xi,xj]ij

รูปด้านล่างแสดงให้เห็นถึงการใช้วิธีนี้ในเวกเตอร์ ] ที่นี่วงกลมคือ datapoints, Normals สีคือการแจกแจงความน่าจะเป็นสูงสุดที่ประมาณโดยใช้แต่ละคู่ที่เป็นไปได้และเส้นสีดำหนาแสดงการประมาณความหนาแน่นที่เกิดขึ้น (นั่นคือการกระจายตัวของผสม)[1.3,0.15,0.73,1.4]

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

โดยวิธีการมันเป็นเรื่องง่ายมากที่จะใช้วิธีการใน R ที่ดึงตัวอย่างจากการกระจายของผลผสม:

# Generating some "data"
x <- rnorm(30)

# Drawing from the density estimate using the method described above.
density_estimate_sample <- replicate(9999, {
  pair <- sample(x, size = 2)
  rnorm(1, mean(pair), sd(pair))
})

# Plotting the density estimate compared with 
# the "data" and the "true" density.
hist(x ,xlim=c(-5, 5), main='The "data"')
hist(density_estimate_sample, xlim=c(-5, 5), main='Estimated density')
hist(rnorm(9999), xlim=c(-5, 5), main='The "true" density')

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


5
ทดลองใช้วิธีการของคุณx <- c(rnorm(30), rnorm(30, 10))
Dason

2
@ Jason Yep ในกรณีนั้นวิธีการไม่ทำงานเลย! :) และมันไม่ได้รวมกับ n ขนาดใหญ่
Rasmus Bååth

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

X=[x1,x2,,xn]n

คำตอบ:


6

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

การวิเคราะห์

μσ(xi,xj)

μ^(xi,xj)=xi+xj2

และ

σ^(xi,xj)=|xixj|2.

ดังนั้นวิธีที่อธิบายไว้ในคำถามคือ

μ^(x1,x2,,xn)=2n(n1)i>jxi+xj2=1ni=1nxi,

ซึ่งเป็นตัวประมาณค่าเฉลี่ยของและ

σ^(x1,x2,,xn)=2n(n1)i>j|xixj|2=1n(n1)i,j|xixj|.

E=E(|xixj|)ij

E(σ^(x1,x2,,xn))=1n(n1)i,jE(|xixj|)=E.

xixj2σ22σχ(1)2/π

E=2πσ.

2/π1.128

σ^

สรุปผลการวิจัย

  1. σ^n=20,000

    รูป

  2. i,j|xixj|O(n2)O(n)n10,000R. (บนแพลตฟอร์มอื่น ๆ ความต้องการ RAM จะน้อยกว่ามากอาจเสียค่าใช้จ่ายเล็กน้อยในเวลาการคำนวณ)

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

    σ^OLS=(1n1i=1n(xiμ^)2)(n1)Γ((n1)/2)2Γ(n/2).

    Rn=3n=300σ^OLSσ

ภายหลัง

σ^


รหัส

sigma <- function(x) sum(abs(outer(x, x, '-'))) / (2*choose(length(x), 2))
#
# sigma is biased.
#
y <- rnorm(1e3) # Don't exceed 2E4 or so!
mu.hat <- mean(y)
sigma.hat <- sigma(y)

hist(y, freq=FALSE,
     main="Biased (dotted red) and Unbiased (solid blue) Versions of the Estimator",
     xlab=paste("Sample size of", length(y)))
curve(dnorm(x, mu.hat, sigma.hat), col="Red", lwd=2, lty=3, add=TRUE)
curve(dnorm(x, mu.hat, sqrt(pi/4)*sigma.hat), col="Blue", lwd=2, add=TRUE)
#
# The variance of sigma is too large.
#
N <- 1e4
n <- 10
y <- matrix(rnorm(n*N), nrow=n)
sigma.hat <- apply(y, 2, sigma) * sqrt(pi/4)
sigma.ols <- apply(y, 2, sd) / (sqrt(2/(n-1)) * exp(lgamma(n/2)-lgamma((n-1)/2)))

message("Mean of unbiased estimator is ", format(mean(sigma.hat), digits=4))
message("Mean of unbiased OLS estimator is ", format(mean(sigma.ols), digits=4))
message("Variance of unbiased estimator is ", format(var(sigma.hat), digits=4))
message("Variance of unbiased OLS estimator is ", format(var(sigma.ols), digits=4))
message("Efficiency is ", format(var(sigma.ols) / var(sigma.hat), digits=4))

วรรณคดีที่เกี่ยวข้องกลับไปอีกสักครู่เช่น Downton, F. 1966 การประมาณเชิงเส้นพร้อมค่าสัมประสิทธิ์พหุนาม Biometrika 53: 129-141 ดอย: 10.1093 / biomet / 53.1-2.129
Nick Cox

ว้าวฉันได้มากกว่าที่ฉันต่อรอง! :)
Rasmus Bååth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.