2

$X$ a Gamma Distributed random variable. Calculate $E[X\mid X \in [a,b]]$, where $a>0$, $b>0$. Is there a closed form solution for this, and if so, how can I calculate it?

Stephan Kolassa
  • 95,027
  • 13
  • 197
  • 357
M N
  • 53
  • 2
  • 1
    Yesterday you asked [the analogous question for the Weibull distribution](https://stats.stackexchange.com/q/471358/1352). I pointed out that searching for a "truncated" distribution would be helpful. Is there any particular reason why you didn't just [search for "truncated gamma distribution"](https://duckduckgo.com/?t=ffsb&q=truncated+gamma+distribution&ia=web) (I just used the fourth result), and/or included the [tag:truncated-distributions] tag? – Stephan Kolassa Jun 11 '20 at 13:10

2 Answers2

2

What you are looking for is the expectation of a truncated gamma distribution. Formulas (11) and (13) in "A Right and Left Truncated Gamma Distribution with Application to the Stars" by Zaninetti (there is a pdf here) give you the formula you are looking for. Let $b$ denote the scale and $c$ the shape. Then

$$ E(X|X\in[x_\ell,x_u]) = b^2k\bigg(\Gamma\Big(1+c, \frac{x_\ell}{b}\Big)-\Gamma\Big(1+c,\frac{x_u}{b}\Big)\bigg), $$

where $\Gamma$ denotes the upper incomplete gamma function and

$$ k= \frac{c}{b\Gamma(1+c,\frac{x_\ell}{b})-b\Gamma(1+c,\frac{x_u}{b})+ e^{-\frac{x_u}{b}}b^{-c+1}x_u^c-e^{-\frac{x_\ell}{b}}b^{-c+1}x_\ell^c}.$$

I like verifying calculations like this using an R script, like this (note that pracma::incgam() switches the order of the two parameters of the upper incomplete gamma function compared to the formulation I took from the paper):

require(pracma)

shape <- 2
scale <- 3
aa <- 1
bb <- 4

set.seed(1)
foo <- rgamma(1e6,shape,scale=scale)
mean(foo[foo>aa & foo<bb])

kk <- shape/
    (scale*incgam(aa/scale,1+shape)-scale*incgam(bb/scale,1+shape)+
        exp(-bb/scale)*scale^(-shape+1)*bb^shape-exp(-aa/scale)*scale^(-shape+1)*aa^shape)
scale^2*kk*(incgam(aa/scale,1+shape)-incgam(bb/scale,1+shape))

The call to mean() and the last command give the same result up to noise, also for other values of the parameters.

Stephan Kolassa
  • 95,027
  • 13
  • 197
  • 357
1

The formula for the expected value of a gamma random variable (with shape parameter $\alpha$ and scale parameter $\beta$) constrained to an interval $\left[ a,b \right]$ can be expressed as $$ E \left[ X \ | \ a<X<b \ \right]=\frac{\alpha \beta \left[ P \left( \alpha+1,\frac{b}{\beta} \right) - P \left( \alpha+1,\frac{a}{\beta} \right) \right] }{P \left( \alpha,\frac{b}{\beta} \right) - P \left( \alpha,\frac{a}{\beta} \right)} \ , $$ where the function $P \left( \alpha,x \right)$ is the lower incomplete gamma function defined by $$P \left( \alpha,x \right) = {\frac{1}{\Gamma \left( \alpha \right)}} \int_0^x t^{\alpha-1} \ e^{-t} \ dt$$

Here is R code to illustrate:

# Assign shape and scale
alpha <- 3
beta <- 2

# Simulate
x <- rgamma(5000000,shape=alpha,scale=beta)

# Constrain to interval
a <- 3
b <- 5
y <- x[x > a & x < b]

# Get sample mean
mean(y)

# Calculate expected value
numer <- alpha*beta*(pgamma(b/beta,shape=alpha+1,scale=1)-pgamma(a/beta,shape=alpha+1,scale=1))

denom <- pgamma(b/beta,shape=alpha,scale=1)-pgamma(a/beta,shape=alpha,scale=1)

expec <- numer/denom

expec

Here's the output:

> mean(y)
[1] 4.002289


> expec
[1] 4.002089
soakley
  • 4,341
  • 3
  • 16
  • 27