เมื่อใดช่วงความเชื่อมั่น“ สมเหตุสมผล” แต่ช่วงเวลาที่น่าเชื่อถือนั้นไม่สอดคล้องกัน?


14

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

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

ฉันไม่ต้องการกลับไปดูตัวอย่างเหล่านั้นหรือการอภิปรายเชิงปรัชญาของ Bayesian vs Frequentist

ฉันแค่กำลังมองหาตัวอย่างของสิ่งที่ตรงกันข้าม มีกรณีใดบ้างที่ความมั่นใจและช่วงเวลาที่เชื่อถือได้แตกต่างกันอย่างมีนัยสำคัญและช่วงเวลาที่กำหนดโดยขั้นตอนความเชื่อมั่นนั้นเหนือกว่าอย่างชัดเจนหรือไม่

ในการชี้แจง: นี่เป็นเรื่องเกี่ยวกับสถานการณ์ที่คาดว่าช่วงเวลาที่น่าเชื่อถือจะตรงกับช่วงความเชื่อมั่นที่สอดคล้องกันเช่นเมื่อใช้แบบแฟลตเครื่องแบบและนักบวช ฯลฯ ฉันไม่สนใจในกรณีที่มีคนเลือกที่ไม่ดีโดยพลการมาก่อน

แก้ไข: เพื่อตอบสนองต่อคำตอบของ @JaeHyeok Shin ด้านล่างฉันต้องไม่เห็นด้วยว่าตัวอย่างของเขาใช้โอกาสที่ถูกต้อง ฉันใช้การคำนวณแบบเบย์โดยประมาณเพื่อประเมินการกระจายหลังที่ถูกต้องสำหรับทีต้าด้านล่างใน R:

### Methods ###
# Packages
require(HDInterval)

# Define the likelihood
like <- function(k = 1.2, theta = 0, n_print = 1e5){
  x    = NULL
  rule = FALSE
  while(!rule){
    x     = c(x, rnorm(1, theta, 1))
    n     = length(x)
    x_bar = mean(x)

    rule = sqrt(n)*abs(x_bar) > k

    if(n %% n_print == 0){ print(c(n, sqrt(n)*abs(x_bar))) }
  }
  return(x)
}

# Plot results
plot_res <- function(chain, i){
    par(mfrow = c(2, 1))
    plot(chain[1:i, 1], type = "l", ylab = "Theta", panel.first = grid())
    hist(chain[1:i, 1], breaks = 20, col = "Grey", main = "", xlab = "Theta")
}


### Generate target data ### 
set.seed(0123)
X = like(theta = 0)
m = mean(X)


### Get posterior estimate of theta via ABC ###
tol   = list(m = 1)
nBurn = 1e3
nStep = 1e4


# Initialize MCMC chain
chain           = as.data.frame(matrix(nrow = nStep, ncol = 2))
colnames(chain) = c("theta", "mean")
chain$theta[1]  = rnorm(1, 0, 10)

# Run ABC
for(i in 2:nStep){
  theta = rnorm(1, chain[i - 1, 1], 10)
  prop  = like(theta = theta)

  m_prop = mean(prop)


  if(abs(m_prop - m) < tol$m){
    chain[i,] = c(theta, m_prop)
  }else{
    chain[i, ] = chain[i - 1, ]
  }
  if(i %% 100 == 0){ 
    print(paste0(i, "/", nStep)) 
    plot_res(chain, i)
  }
}

# Remove burn-in
chain = chain[-(1:nBurn), ]

# Results
plot_res(chain, nrow(chain))
as.numeric(hdi(chain[, 1], credMass = 0.95))

นี่เป็นช่วงเวลาที่น่าเชื่อถือ 95%:

> as.numeric(hdi(chain[, 1], credMass = 0.95))
[1] -1.400304  1.527371

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

แก้ไข # 2:

นี่คือการอัปเดตหลังจากความคิดเห็นของ @JaeHyeok Shin ฉันพยายามทำให้มันเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ แต่สคริปต์ก็ซับซ้อนขึ้นเล็กน้อย การเปลี่ยนแปลงหลัก:

  1. ตอนนี้ใช้ความอดทน 0.001 สำหรับค่าเฉลี่ย (มันคือ 1)
  2. เพิ่มจำนวนขั้นตอนเป็น 500k เพื่อบัญชีสำหรับการยอมรับที่น้อยลง
  3. ลดค่า sd ของการแจกแจงข้อเสนอเป็น 1 ถึงบัญชีสำหรับการยอมรับที่น้อยลง (เท่ากับ 10)
  4. เพิ่มความน่าจะเป็น rnorm แบบง่ายด้วย n = 2k เพื่อการเปรียบเทียบ
  5. เพิ่มขนาดตัวอย่าง (n) เป็นสถิติสรุปตั้งค่าความคลาดเคลื่อนเป็น 0.5 * n_target

นี่คือรหัส:

### Methods ###
# Packages
require(HDInterval)

# Define the likelihood
like <- function(k = 1.3, theta = 0, n_print = 1e5, n_max = Inf){
  x    = NULL
  rule = FALSE
  while(!rule){
    x     = c(x, rnorm(1, theta, 1))
    n     = length(x)
    x_bar = mean(x)
    rule  = sqrt(n)*abs(x_bar) > k
    if(!rule){
     rule = ifelse(n > n_max, TRUE, FALSE)
    }

    if(n %% n_print == 0){ print(c(n, sqrt(n)*abs(x_bar))) }
  }
  return(x)
}


# Define the likelihood 2
like2 <- function(theta = 0, n){
  x = rnorm(n, theta, 1)
  return(x)
}



# Plot results
plot_res <- function(chain, chain2, i, main = ""){
    par(mfrow = c(2, 2))
    plot(chain[1:i, 1],  type = "l", ylab = "Theta", main = "Chain 1", panel.first = grid())
    hist(chain[1:i, 1],  breaks = 20, col = "Grey", main = main, xlab = "Theta")
    plot(chain2[1:i, 1], type = "l", ylab = "Theta", main = "Chain 2", panel.first = grid())
    hist(chain2[1:i, 1], breaks = 20, col = "Grey", main = main, xlab = "Theta")
}


### Generate target data ### 
set.seed(01234)
X    = like(theta = 0, n_print = 1e5, n_max = 1e15)
m    = mean(X)
n    = length(X)
main = c(paste0("target mean = ", round(m, 3)), paste0("target n = ", n))



### Get posterior estimate of theta via ABC ###
tol   = list(m = .001, n = .5*n)
nBurn = 1e3
nStep = 5e5

# Initialize MCMC chain
chain           = chain2 = as.data.frame(matrix(nrow = nStep, ncol = 2))
colnames(chain) = colnames(chain2) = c("theta", "mean")
chain$theta[1]  = chain2$theta[1]  = rnorm(1, 0, 1)

# Run ABC
for(i in 2:nStep){
  # Chain 1
  theta1 = rnorm(1, chain[i - 1, 1], 1)
  prop   = like(theta = theta1, n_max = n*(1 + tol$n))
  m_prop = mean(prop)
  n_prop = length(prop)
  if(abs(m_prop - m) < tol$m &&
     abs(n_prop - n) < tol$n){
    chain[i,] = c(theta1, m_prop)
  }else{
    chain[i, ] = chain[i - 1, ]
  }

  # Chain 2
  theta2  = rnorm(1, chain2[i - 1, 1], 1)
  prop2   = like2(theta = theta2, n = 2000)
  m_prop2 = mean(prop2)
  if(abs(m_prop2 - m) < tol$m){
    chain2[i,] = c(theta2, m_prop2)
  }else{
    chain2[i, ] = chain2[i - 1, ]
  }

  if(i %% 1e3 == 0){ 
    print(paste0(i, "/", nStep)) 
    plot_res(chain, chain2, i, main = main)
  }
}

# Remove burn-in
nBurn  = max(which(is.na(chain$mean) | is.na(chain2$mean)))
chain  = chain[ -(1:nBurn), ]
chain2 = chain2[-(1:nBurn), ]


# Results
plot_res(chain, chain2, nrow(chain), main = main)
hdi1 = as.numeric(hdi(chain[, 1],  credMass = 0.95))
hdi2 = as.numeric(hdi(chain2[, 1], credMass = 0.95))


2*1.96/sqrt(2e3)
diff(hdi1)
diff(hdi2)

ผลลัพธ์โดยที่ hdi1 คือ "ความน่าจะเป็น" และ hdi2 ของฉันคือ rnorm แบบง่าย (n, theta, 1):

> 2*1.96/sqrt(2e3)
[1] 0.08765386
> diff(hdi1)
[1] 1.087125
> diff(hdi2)
[1] 0.07499163

ดังนั้นหลังจากลดความอดทนอย่างเพียงพอและด้วยค่าใช้จ่ายของขั้นตอน MCMC อีกมากมายเราสามารถเห็นความกว้างของ CrI ที่คาดหวังสำหรับโมเดล rnorm

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


ไม่ซ้ำกัน แต่มีความสัมพันธ์ใกล้ชิดกับstats.stackexchange.com/questions/419916/…
user158565

6
โดยทั่วไปเมื่อคุณมีข้อมูลก่อนหน้านี้ว่าค่อนข้างผิดในแง่ที่ไม่เป็นทางการเช่นปกติ (0,1) เมื่อค่าจริงคือ -3.6 ช่วงเวลาที่น่าเชื่อถือของคุณในกรณีที่ไม่มีข้อมูลจำนวนมากจะค่อนข้างแย่เมื่อ มองจากมุมมองที่พบบ่อย
jbowman

@jbowman นี่เป็นเรื่องเกี่ยวกับเคสโดยเฉพาะเมื่อใช้ชุดเครื่องแบบมาก่อนหรือบางอย่างเช่น N (0, 1e6)
หน้าซีด

ทศวรรษที่ผ่านมาชาวเบย์ที่แท้จริงเรียกว่านักสถิติที่ใช้ข้อมูลที่ไม่เป็นข้อมูลมาก่อนเช่นหลอก (หรือปลอม) Bayesian
user158565

@ user158565 นี่เป็น offtopic แต่เครื่องแบบก่อนหน้าเป็นเพียงการประมาณ ถ้า p (H_0) = p (H_1) = p (H_2) = ... = p (H_n) นักบวชทุกคนสามารถเลื่อนออกจากกฎของ Bayes ทำให้การคำนวณง่ายขึ้น มันไม่ผิดไปกว่าการทิ้งคำศัพท์เล็ก ๆ จากตัวส่วนเมื่อมันสมเหตุสมผล
หน้าซีด

คำตอบ:


6

ในการออกแบบการทดลองตามลำดับช่วงเวลาที่เชื่อถือได้อาจทำให้เข้าใจผิด

(ข้อจำกัดความรับผิดชอบ: ฉันไม่ได้โต้แย้งว่ามันไม่สมเหตุสมผล - มันสมเหตุสมผลอย่างสมบูรณ์แบบในการให้เหตุผลแบบเบย์และไม่ทำให้เข้าใจผิดในมุมมองของมุมมองแบบเบย์)

XN(θ,1)θnnX¯n>kkN

N=inf{n1:nX¯n>k}.

Pθ(N<)=1θR

θπ(θ)θN(0,10))kθN(X¯N,1/N)

CIbayes:=[X¯N1.96N,X¯N+1.96N].
N0k
0<X¯NkNX¯N1.96N
k0CIbayes
infθPθ(θCIbayes)=0,
0θ00.95
P(θCIbayes|X1,,XN)0.95.

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

(ฉันได้เรียนรู้ตัวอย่างนี้จากการบรรยายที่ยอดเยี่ยมของ Larry หมายเหตุนี้ประกอบด้วยการสนทนาที่น่าสนใจมากมายเกี่ยวกับความแตกต่างที่ลึกซึ้งระหว่างกรอบบ่อยครั้งและ Bayesian http://www.stat.cmu.edu/~larry/=stat705/Lecture14.pdf )

แก้ไขใน ABC ของ Livid ค่าความคลาดเคลื่อนใหญ่เกินไปดังนั้นสำหรับการตั้งค่ามาตรฐานที่เราสุ่มตัวอย่างการสังเกตจำนวนคงที่มันไม่ได้ให้ค่า CR ที่ถูกต้อง ฉันไม่คุ้นเคยกับ ABC แต่ถ้าฉันเปลี่ยนค่า tol ​​เป็น 0.05 เท่านั้นเราสามารถมี CR ที่เบ้อย่างมากดังต่อไปนี้

> X = like(theta = 0)
> m = mean(X)
> print(m)
[1] 0.02779672

enter image description here

> as.numeric(hdi(chain[, 1], credMass = 0.95)) [1] -0.01711265 0.14253673

แน่นอนว่าโซ่นั้นไม่ได้มีความเสถียร แต่ถึงแม้ว่าเราจะเพิ่มความยาวของโซ่เราก็จะได้ CR ที่คล้ายกัน - เอียงไปในส่วนที่เป็นบวก

NX¯Nk0<θkkkθ<0


"ถ้าเราตั้งค่า k ขนาดใหญ่พอหลังของθจะอยู่ที่ประมาณ N (x_n 1 / N)" ดูเหมือนว่าสำหรับฉันแล้วเห็นได้ชัดว่า Pr (X | theta)! = ปกติ (theta, 1) คือนั่นเป็นโอกาสที่ผิดสำหรับกระบวนการที่สร้างลำดับของคุณ นอกจากนี้ยังมีการพิมพ์ผิด ในตัวอย่างดั้งเดิมคุณหยุดการสุ่มตัวอย่างเมื่อ sqrt (n) * abs (mean (x))> k
หน้าซีด

i=1Nϕ(Xiθ)

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

k0<X¯Nk/NX¯N1.96/Nkk>10

2×1.96/2000=0.0876

4

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


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

1
นี่เป็นเรื่องเกี่ยวกับเครื่องแบบหรือ "แบน" โดยเฉพาะ
หน้าซีด

1
@ สีสัน: คุณควรรวมถึงสิ่งที่คุณกำลังพูดถึงนักบวชแบนในคำถามของคุณ ที่เปลี่ยนแปลงทุกอย่างอย่างสมบูรณ์
หน้าผา AB

1
@CliffAB มันอยู่ในสองประโยคแรก แต่ฉันจะชี้แจงขอบคุณ
หน้าซีด

1

หากเราใช้เกมแฟลตก่อนเกมนี้เป็นเกมที่เราพยายามเล่นเกมแบนมาก่อนในการปรับค่าพารามิเตอร์ที่ไม่สมเหตุสมผล

ตัวอย่างเช่นสมมติว่าเราต้องการอนุมานความน่าจะเป็น หากเราใส่ค่าคงที่ก่อนหน้าอัตราต่อรองของความน่าจะเป็นช่วงเวลาที่น่าเชื่อถือ 95% ของเราสำหรับความน่าจะเป็นที่แท้จริงคือจุดสองจุด{0,1} ก่อนที่เราจะเห็นข้อมูล! ถ้าเราได้รับจุดข้อมูลที่เป็นบวกเดียวและสร้างช่วงเวลาที่น่าเชื่อถือ 95% ตอนนี้กลายเป็นจุดเดียว{1}.

นี่คือเหตุผลว่าทำไมชาวเบย์หลายคนคัดค้านนักบวชแบน


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

1
@ สีสัน: ฟังก์ชั่นโอกาสเหมาะสมอย่างสมบูรณ์ แบนก่อนในการเข้าสู่ระบบการต่อรองไม่ได้ และนี่คือเหตุผลทั้งหมดที่ Bayesian ใช้เพื่อบอกว่าคุณไม่ควรใช้นักบวชแบน พวกเขาสามารถให้ข้อมูลอย่างมากและมักจะไม่ตรงตามที่ผู้ใช้ตั้งใจ!
หน้าผา AB

1
นี่คือแอนดรูเจลแมนพูดคุยถึงปัญหาบางอย่างของนักบวชแบน
หน้าผา AB

"แฟลตก่อนหน้าอัตราต่อรองไม่ใช่" ฉันหมายถึงการใส่อัตราเดิมพันก่อนหน้าอัตราต่อรองที่ดูเหมือนจะไร้สาระสำหรับคุณเช่นการใช้โอกาสที่ผิด ขออภัยฉันไม่คุ้นเคยกับตัวอย่างนี้ รุ่นนี้ควรทำอะไรกันแน่?
หน้าซีด

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