সিমুলেশন সহ গুরুত্বপূর্ণ স্যাম্পলিংয়ের জন্য প্রত্যাশার চেয়ে কম কভারেজ


9

আমি আর এর মধ্যে ইম্পোর্টেন্স স্যাম্পলিং পদ্ধতির সাথে ইন্টিগ্রাল মূল্যায়ন প্রশ্নের উত্তর দেওয়ার চেষ্টা করছিলাম । মূলত, ব্যবহারকারীর গণনা করা দরকার

0πf(x)dx=0π1cos(x)2+x2dx

তাত্পর্যপূর্ণ বিতরণকে গুরুত্ব বিতরণ হিসাবে ব্যবহার করে

q(x)=λ expλx

এবং এর মান সন্ধান করুন যা ইন্টিগ্রালের (এটি ) আরও ভাল দেয় । আমি ওভার এর গড় মান এর মূল্যায়ন হিসাবে সমস্যাটি পুনরায় পুনঃস্থাপন করলাম : অবিচ্ছেদ্য তখন কেবল । λself-studyμf(x)[0,π]πμ

সুতরাং, কে এর পিডিএফ হতে দিন, এবং : এখন লক্ষ্যটি অনুমান করাp(x)XU(0,π)Yf(X)

μ=E[Y]=E[f(X)]=Rf(x)p(x)dx=0π1কোসাইন্(এক্স)2+ +এক্স21πএক্স

গুরুত্ব নমুনা ব্যবহার। আমি আর তে একটি সিমুলেশন সম্পাদন করেছি:

# clear the environment and set the seed for reproducibility
rm(list=ls())
gc()
graphics.off()
set.seed(1)

# function to be integrated
f <- function(x){
    1 / (cos(x)^2+x^2)
}

# importance sampling
importance.sampling <- function(lambda, f, B){
    x <- rexp(B, lambda) 
    f(x) / dexp(x, lambda)*dunif(x, 0, pi)
}

# mean value of f
mu.num <- integrate(f,0,pi)$value/pi

# initialize code
means  <- 0
sigmas <- 0
error  <- 0
CI.min <- 0
CI.max <- 0
CI.covers.parameter <- FALSE

# set a value for lambda: we will repeat importance sampling N times to verify
# coverage
N <- 100
lambda <- rep(20,N)

# set the sample size for importance sampling
B <- 10^4

# - estimate the mean value of f using importance sampling, N times
# - compute a confidence interval for the mean each time
# - CI.covers.parameter is set to TRUE if the estimated confidence 
#   interval contains the mean value computed by integrate, otherwise
# is set to FALSE
j <- 0
for(i in lambda){
    I <- importance.sampling(i, f, B)
    j <- j + 1
    mu <- mean(I)
    std <- sd(I)
    lower.CB <- mu - 1.96*std/sqrt(B)  
    upper.CB <- mu + 1.96*std/sqrt(B)  
    means[j] <- mu
    sigmas[j] <- std
    error[j] <- abs(mu-mu.num)
    CI.min[j] <- lower.CB
    CI.max[j] <- upper.CB
    CI.covers.parameter[j] <- lower.CB < mu.num & mu.num < upper.CB
}

# build a dataframe in case you want to have a look at the results for each run
df <- data.frame(lambda, means, sigmas, error, CI.min, CI.max, CI.covers.parameter)

# so, what's the coverage?
mean(CI.covers.parameter)
# [1] 0.19

কোড মূলত গুরুত্ব স্যাম্পলিং একটি সহজবোধ্য বাস্তবায়ন ব্যবহার স্বরলিপি অনুসরণ করছে এখানে । গুরুত্ব স্যাম্পলিং তারপর পুনরাবৃত্তি করা হয় একাধিক অনুমান পেতে বার \ মিউ , এবং প্রতিটি সময় একটি চেক তৈরি করা হয় কিনা 95% ব্যবধান কভার প্রকৃত গড় বা না।এনμ

আপনি দেখতে পাচ্ছেন, জন্য প্রকৃত কভারেজটি মাত্র 0.19। এবং মতো মানগুলিতে বাড়ানো সাহায্য করে না (কভারেজটি আরও ছোট, 0.15)। ইহা কি জন্য ঘটিতেছে?λ=20বি106


1
সীমাবদ্ধ সমর্থন ইন্টিগ্রালের জন্য একটি অসীম সমর্থন গুরুত্ব ফাংশন ব্যবহার করা অনুকূল নয় কারণ সিমুলেশনের একটি অংশ জিরোস অনুকরণ করতে ব্যবহৃত হয়, তাই কথা বলতে। কমপক্ষে এ , যা করা এবং অনুকরণ করা সহজ। π
সিয়ান

@ শি'আন নিশ্চিত, আমি একমত, আমি যদি ইম্পরেন্স স্যাম্পলিংয়ের মাধ্যমে সেই অবিচ্ছেদ্য মূল্যায়ন করতে হত তবে আমি সেই গুরুত্ব বিতরণটি ব্যবহার করতাম না, তবে আমি মূল প্রশ্নের উত্তর দেওয়ার চেষ্টা করছিলাম, যার জন্য তাত্পর্যপূর্ণ বিতরণ ব্যবহার করা দরকার। আমার সমস্যাটি ছিল, এমনকি যদি এই পদ্ধতিরটি সর্বোত্তম থেকে দূরে হয় তবে কভারেজ এখনও বাড়ানো উচিত (গড়) onB। এবং গ্রিনপার্কার এটি দেখিয়েছিল।
ডেল্টাভিও

উত্তর:


3

গুরুত্বের নমুনাটি গুরুত্ব বিতরণের পছন্দের জন্য যথেষ্ট সংবেদনশীল। যেহেতু আপনি বেছে নিয়েছেনλ=20, আপনি যে নমুনাগুলি ব্যবহার করে আঁকেন rexpতার অর্থ হবে1/20 বৈকল্পিক সঙ্গে 1/400। এই আপনি পাবেন বিতরণ

এখানে চিত্র বর্ণনা লিখুন

তবে, আপনি যে অবিচ্ছেদ্য মূল্যায়ন করতে চান তা 0 থেকে চলে যায় π=3.14। সুতরাং আপনি একটি ব্যবহার করতে চানλএটি আপনাকে এ জাতীয় পরিসর দেয়। আমি ব্যবহার করিλ=1

এখানে চিত্র বর্ণনা লিখুন

ব্যবহার λ=1 আমি 0 থেকে সম্পূর্ণ অবিচ্ছেদ্য স্থানটি অন্বেষণ করতে সক্ষম হব π, এবং মনে হচ্ছে কেবল কয়েকটা ড্র হয়েছে πনষ্ট হবে এখন আমি আপনার কোডটি পুনরায় চালু করেছি এবং কেবল পরিবর্তন করছিλ=1

# clear the environment and set the seed for reproducibility
rm(list=ls())
gc()
graphics.off()
set.seed(1)

# function to be integrated
f <- function(x){
  1 / (cos(x)^2+x^2)
}

# importance sampling
importance.sampling <- function(lambda, f, B){
  x <- rexp(B, lambda) 
  f(x) / dexp(x, lambda)*dunif(x, 0, pi)
}

# mean value of f
mu.num <- integrate(f,0,pi)$value/pi

# initialize code
means  <- 0
sigmas <- 0
error  <- 0
CI.min <- 0
CI.max <- 0
CI.covers.parameter <- FALSE

# set a value for lambda: we will repeat importance sampling N times to verify
# coverage
N <- 100
lambda <- rep(1,N)

# set the sample size for importance sampling
B <- 10^4

# - estimate the mean value of f using importance sampling, N times
# - compute a confidence interval for the mean each time
# - CI.covers.parameter is set to TRUE if the estimated confidence 
#   interval contains the mean value computed by integrate, otherwise
# is set to FALSE
j <- 0
for(i in lambda){
  I <- importance.sampling(i, f, B)
  j <- j + 1
  mu <- mean(I)
  std <- sd(I)
  lower.CB <- mu - 1.96*std/sqrt(B)  
  upper.CB <- mu + 1.96*std/sqrt(B)  
  means[j] <- mu
  sigmas[j] <- std
  error[j] <- abs(mu-mu.num)
  CI.min[j] <- lower.CB
  CI.max[j] <- upper.CB
  CI.covers.parameter[j] <- lower.CB < mu.num & mu.num < upper.CB
}

# build a dataframe in case you want to have a look at the results for each run
df <- data.frame(lambda, means, sigmas, error, CI.min, CI.max, CI.covers.parameter)

# so, what's the coverage?
mean(CI.covers.parameter)
#[1] .95

যদি আপনি সাথে চারপাশে খেলা λ, আপনি দেখতে পাবেন যে আপনি যদি এটি সত্যই ছোট (.00001) বা বড় করেন তবে কভারেজের সম্ভাবনাগুলি খারাপ হবে।

সম্পাদনা -------

কভারেজ প্রবণতা হ্রাস একবার আপনি থেকে যান B=104 প্রতি B=106, এটি আপনি যে সত্য ব্যবহার করেন তার উপর ভিত্তি করে এটি কেবল একটি এলোমেলো ঘটনা N=100প্রতিলিপিকৃত। কভারেজ সম্ভাবনার জন্য আত্মবিশ্বাসের ব্যবধানB=104 হল

.19±1.96.19(1.19)100=.19±.0769=(.1131,.2669).

সুতরাং আপনি সত্যিই যে ক্রমবর্ধমান বলতে পারেন না B=106 উল্লেখযোগ্যভাবে কভারেজ সম্ভাবনা হ্রাস।

আসলে একই বীজের জন্য আপনার কোডে, পরিবর্তন করুন N=100 প্রতি N=1000, তারপর সাথে B=104, কভারেজ সম্ভাব্যতা .123 এবং এর সাথে B=106 কভারেজ সম্ভাবনা .158

এখন .123 এর কাছাকাছি আত্মবিশ্বাসের ব্যবধান

.123±1.96.123(1.123)1000=.123±.0203=(.102,.143).

সুতরাং, এখন সঙ্গে N=1000 প্রতিলিপিগুলি, আপনি পাবেন যে কভারেজটির সম্ভাব্যতা উল্লেখযোগ্যভাবে বৃদ্ধি পায়।


হ্যাঁ, আমি জানি যে কভারেজটি পরিবর্তিত হয় λ: বিশেষত সেরা কভারেজ জন্য প্রাপ্ত হয় 0.1<λ<2। এখন, আমি বুঝতে পেরেছি যেহেতু নমুনা গড়ের সিআই সিএলটি ভিত্তিক, এটি একটি অ্যাসিম্পটোটিক ফলাফল। সুতরাং, এটি ভাল যে পরিবর্তন হতে পারেλ"অ্যাসিপটোটিক রেজিম" এর নিকটবর্তী হওয়ার জন্য প্রয়োজনীয় নমুনার সংখ্যাকে প্রভাবিত করে, তাই বলার জন্য। তবে মুল বক্তব্যটি হ'ল কেনλ=20নমুনা আকার থেকে কভারেজ হ্রাস পায়104 নমুনা আকার 106? অবশ্যই এটি বাড়ানো উচিত, যদি দরিদ্র কভারেজ কেবলমাত্র উচ্চতার কারণে হতλমূল্য কত?
ডেল্টাভিও

1
@ দেলতাভ এই প্রশ্নের উত্তর দেওয়ার জন্য আমি একটি সম্পাদনা করেছি। কথাটি হ'ল,N=100নিশ্চিতভাবে কিছু বলতে যথেষ্ট প্রতিলিপি হয় না।
গ্রিনপার্কার

1
আহ উজ্জ্বল! আমি কভারেজ অনুপাতের জন্য আত্মবিশ্বাসের ব্যবধান গঠনের কথা ভাবিনি, কেবলমাত্র গড়ের চেয়ে। নাইটপিকের মতো, আমি কোনও অনুপাতের আস্থার ব্যবধানের জন্য ওয়াল্ডের আত্মবিশ্বাসের ব্যবধানটি ব্যবহার করতাম না। তবে অনুপাতটি যেহেতু 0 এবং 1 থেকে দূরে রয়েছে এবং প্রতিলিপিগুলির সংখ্যা (আপনার দ্বিতীয় ক্ষেত্রে,N=1000) তুলনামূলকভাবে বড়, সম্ভবত উইলসন বা জেফরির ব্যবধানটি ব্যবহার করা কোনও তাত্পর্যপূর্ণ হবে না। অন্যান্য উত্তর আছে কিনা তা দেখার জন্য আমি কিছুটা অপেক্ষা করব, তবে আমি বলতে চাই যে আপনি +100 এর পুরোপুরি প্রাপ্য
হোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.