আমি আরেকটি সম্ভাব্য সমাধান দেখাব, এটি বেশ ব্যাপকভাবে প্রযোজ্য এবং আজকের আর সফ্টওয়্যার সহ কার্যকর করা খুব সহজ। এটি স্যাডলিপয়েন্টের ঘনত্বের আনুমানিক, যা আরও বিস্তৃত জানা উচিত!
গামা বিতরণ সম্পর্কে পরিভাষার জন্য, আমি https://en.wikedia.org/wiki/Gamma_distribration কে আকার / স্কেল প্যারামিটারাইজেশন সহ অনুসরণ করব , আকারের প্যারামিটার এবং θ স্কেল। স্যাডলিপয়েন্টের প্রায় অনুমানের জন্য আমি রোনাল্ড ডাব্লু বাটলার অনুসরণ করব: "অ্যাপ্লিকেশনগুলির সাথে স্যাডলিপয়েন্টের আনুমানিকতা" (কেমব্রিজ ইউপি)। স্যাডলিপয়েন্টের সান্নিধ্যটি এখানে ব্যাখ্যা করা হয়েছে: স্যাডলিপয়েন্টের আনুমানিক কাজ কীভাবে হয়?
এই অ্যাপ্লিকেশনটিতে এটি কীভাবে ব্যবহৃত হবে তা আমি এখানে দেখাব।kθ
যাক বিদ্যমান momentgenerating ফাংশন সঙ্গে একটি দৈব চলক হতে
এম ( গুলি ) = ই ই গুলি এক্স , যার জন্য থাকা আবশ্যক গুলি কিছু খোলা বিরতি যে শূন্য থাকে। তারপরে কে ( গুলি ) = লগ এম ( গুলি ) দ্বারা কুল্যান্ট জেনারেটিং ফাংশনটি সংজ্ঞায়িত করুন
এটি জানা যায় যে ই এক্স = কে ′ ( 0 ) , ভার ( এক্স ) = কে ″ ( 0 )X
M(s)=EesX
sK(s)=logM(s)
EX=K′(0),Var(X)=K′′(0)। Saddlepoint সমীকরণ হয়
যা implicitely সংজ্ঞায়িত
গুলি এর কার্যকারিতা হিসেবে
এক্স (যা সীমার মধ্যে থাকতে হবে
এক্স )। আমরা যত এই implicitely সংজ্ঞায়িত ফাংশন লিখতে
গুলি ( এক্স ) । নোট করুন যে স্যাডলিপয়েন্ট সমীকরণের সর্বদা ঠিক একটি সমাধান থাকে কারণ কুমুল্যান্ট ফাংশন উত্তল।
K′(s^)=x
sxXs^(x)
তারপর ঘনত্বের saddlepoint পড়তা এর এক্স দেওয়া হয়
চ ( এক্স ) = 1fX
এই আনুমানিক ঘনত্ব ফাংশন 1 সংহত করতে নিশ্চিত করা হয় না, তাই unnormalized saddlepoint পড়তা হয়। আমরা এটি সংখ্যার সাথে সংহত করতে পারি এবং আরও ভাল অনুমানের জন্য পুনর্নবীকরণ করতে পারি। তবে এই অনুমানটি অ-নেতিবাচক হওয়ার গ্যারান্টিযুক্ত।
f^(x)=12πK′′(s^)−−−−−−−√exp(K(s^)−s^x)
এক্স1, এক্স2, … , এক্সএনএক্সআমি( কেআমি, θআমি)
কে( গুলি ) = - ∑i = 1এনটআমিLn( 1 - θ)আমিগুলি )
এস < 1 / সর্বোচ্চ ( θ1, θ2, … , Θএন)কে'( গুলি ) = Σi = 1এনটআমিθআমি1 - θআমিগুলি
কে''( গুলি ) = Σi = 1এনটআমিθ2আমি( 1 - θ)আমিগুলি )2।
R
n = 3কে = ( 1 , 2 , 3 )θ = ( 1 , 2 , 3 )R
shape <- 1:3 #ki
scale <- 1:3 # thetai
# For this case, we get expectation=14, variance=36
make_cumgenfun <- function(shape, scale) {
# we return list(shape, scale, K, K', K'')
n <- length(shape)
m <- length(scale)
stopifnot( n == m, shape > 0, scale > 0 )
return( list( shape=shape, scale=scale,
Vectorize(function(s) {-sum(shape * log(1-scale * s) ) }),
Vectorize(function(s) {sum((shape*scale)/(1-s*scale))}) ,
Vectorize(function(s) { sum(shape*scale*scale/(1-s*scale)) })) )
}
solve_speq <- function(x, cumgenfun) {
# Returns saddle point!
shape <- cumgenfun[[1]]
scale <- cumgenfun[[2]]
Kd <- cumgenfun[[4]]
uniroot(function(s) Kd(s)-x,lower=-100,
upper = 0.3333,
extendInt = "upX")$root
}
make_fhat <- function(shape, scale) {
cgf1 <- make_cumgenfun(shape, scale)
K <- cgf1[[3]]
Kd <- cgf1[[4]]
Kdd <- cgf1[[5]]
# Function finding fhat for one specific x:
fhat0 <- function(x) {
# Solve saddlepoint equation:
s <- solve_speq(x, cgf1)
# Calculating saddlepoint density value:
(1/sqrt(2*pi*Kdd(s)))*exp(K(s)-s*x)
}
# Returning a vectorized version:
return(Vectorize(fhat0))
} #end make_fhat
fhat <- make_fhat(shape, scale)
plot(fhat, from=0.01, to=40, col="red", main="unnormalized saddlepoint approximation\nto sum of three gamma variables")
নিম্নলিখিত চক্রান্ত ফলাফল:
আমি অনুশীলন হিসাবে সাধারনত স্যাডলিপয়েন্টের কাছাকাছি চলে যাব।