এটি প্রায়শই ক্ষেত্রে ঘটে যে 95% কভারেজ সহ একটি আস্থার ব্যবধান একটি বিশ্বাসযোগ্য ব্যবধানের সাথে খুব সামঞ্জস্যপূর্ণ যা 95% উত্তরীয় ঘনত্ব ধারণ করে। পূর্ববর্তী ক্ষেত্রে ইউনিফর্ম বা ইউনিফর্মের নিকটবর্তী হলে এটি ঘটে। সুতরাং একটি আত্মবিশ্বাসের ব্যবধান প্রায়শই একটি বিশ্বাসযোগ্য ব্যবধান এবং বিপরীতভাবে প্রায় অনুমান করতে ব্যবহার করা যেতে পারে। গুরুত্বপূর্ণভাবে, আমরা এ থেকে উপসংহারে পৌঁছে যেতে পারি যে বিশ্বাসযোগ্য ব্যবধান হিসাবে একটি আত্মবিশ্বাসের ব্যবধানের অনেক ত্রুটিযুক্ত ব্যাখ্যাটির অনেকগুলি সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারিক গুরুত্ব নেই।
এরকম কয়েকটি উদাহরণ রয়েছে যেখানে এই ঘটনাটি ঘটে না, তবে এগুলি সবগুলিই ঘনতান্ত্রিক পদ্ধতির সাথে কিছু ভুল আছে তা প্রমাণ করার প্রয়াসে বায়েশিয়ান স্ট্যাটাসের সমর্থকরা চেরিপিকযুক্ত বলে মনে হয়। এই উদাহরণগুলিতে, আমরা দেখি আত্মবিশ্বাসের ব্যবধানে অসম্ভব মানগুলি রয়েছে etc যা এগুলি বাজে।
আমি সেই উদাহরণগুলি বা বায়েশিয়ান বনাম ফ্রুসিডনিস্টের দার্শনিক আলোচনা ফিরে পেতে চাই না।
আমি কেবল বিপরীত উদাহরণ খুঁজছি। আত্মবিশ্বাস এবং বিশ্বাসযোগ্য ব্যবধানগুলি যথেষ্ট পরিমাণে পৃথক হওয়া এবং আত্মবিশ্বাসের পদ্ধতি দ্বারা প্রদত্ত বিরতিটি স্পষ্টতই উচ্চতর কোনও ক্ষেত্রে রয়েছে কি?
স্পষ্ট করার জন্য: এটি নির্ভর করে যখন বিশ্বাসযোগ্য ব্যবধানটি সাধারণত আত্মবিশ্বাসের অন্তর্ভুক্তির সাথে মিলিত হয়, যেমন ফ্ল্যাট, ইউনিফর্ম ইত্যাদি প্রিয়ার ব্যবহার করার সময়। যে ক্ষেত্রে আগে কেউ নির্বিচারে খারাপ পছন্দ করে সে ক্ষেত্রে আমি আগ্রহী নই।
সম্পাদনা: নীচে @ জায়েহ্যোক শিনের উত্তরের প্রতিক্রিয়াতে, আমি অবশ্যই তার সাথে এই উদাহরণটি সঠিক সম্ভাবনাটি ব্যবহার করি তা নিয়ে দ্বিমত পোষণ করতে হবে। নীচে থেটার জন্য সঠিক উত্তরোত্তর বিতরণটি অনুমান করার জন্য আমি আনুমানিক বেইসিয়ান গণনা ব্যবহার করেছি:
### 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:
@ জায়েহ্যোক শিনের মন্তব্যের পরে এখানে একটি আপডেট রয়েছে। আমি এটি যথাসম্ভব সহজ রাখার চেষ্টা করছি তবে স্ক্রিপ্টটি আরও জটিল হয়ে উঠল। প্রধান পরিবর্তনগুলি:
- এখন গড় জন্য 0.001 সহনশীলতা ব্যবহার করে (এটি ছিল 1)
- ছোট সহনশীলতার জন্য অ্যাকাউন্টে পদক্ষেপের সংখ্যা 500 কে বেড়েছে
- ছোট সহনশীলতার জন্য অ্যাকাউন্টে প্রস্তাব বিতরণের এসডি হ্রাস করেছেন (এটি ছিল 10)
- তুলনা করার জন্য n = 2k এর সাথে সহজ rnorm সম্ভাবনা যুক্ত করা হয়েছে
- সংক্ষিপ্ত পরিসংখ্যান হিসাবে নমুনার আকার (এন) যুক্ত করেছেন, সহনীয়তা 0.5 * এন_টরেটে সেট করুন
কোডটি এখানে:
### 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)
ফলাফলগুলি, যেখানে এইচডিআই 1 হ'ল আমার "সম্ভাবনা" এবং এইচডিআই 2 হ'ল সরল রনরম (এন, থেইটা, 1):
> 2*1.96/sqrt(2e3)
[1] 0.08765386
> diff(hdi1)
[1] 1.087125
> diff(hdi2)
[1] 0.07499163
সুতরাং সহনশীলতা যথেষ্ট পরিমাণে হ্রাস করার পরে এবং আরও অনেক এমসিসিএম পদক্ষেপ ব্যয় করে আমরা রনরম মডেলের প্রত্যাশিত সিআরআই প্রস্থ দেখতে পাচ্ছি।