13
3858 Tutorial 8 Yifan Li, [email protected] 2017-03-21 Parametric vs Non-parametric Bootstrap for Gamma distribution In class we discuss the non-parametric bootstrap in the estimation of expectation of X (using sample mean), where T n * will have normal limiting distribution (by CLT). Here we try the non-parametric bootstrap for the T n * that may not converge to normal distribution. We assume we construct the expressions of variance without knowing the distribution. Let’s see what will happen. #rain.dat <- scan("http://www.stats.uwo.ca/faculty/kulperger/SS3858/Data/illinois60.txt") set.seed(31415926) rain.dat <- rgamma(100, shape = 2.5, rate = 1/3) gamma.est <- function(x){ mu.1 <- mean(x) mu.2 <- mean(x^2) var.x <- mu.2-mu.1^2 lam.hat <- mu.1/(mu.2-mu.1^2) alpha.hat <- mu.1*lam.hat c(lam.hat, alpha.hat) } est <- gamma.est(rain.dat) lam <- est[1] #lam and alpha are estimated values alpha <- est[2] #try to get better estimate at first (it needs more data) #bootstrap M <- 1e4 n <- length(rain.dat) #using the Fisher information matrix in class I.0.mat = function(theta){ A= matrix(0, 2,2) lambda = theta[1] alpha = theta[2] A[1,1] = alpha/lambda^2 A[2,1]=- 1/lambda A[1,2] = A[2,1] A[2,2]= trigamma(alpha) A } V.est <- solve(I.0.mat(est)) #inverse of the Fisher Information matrix var.lam <- V.est[1,1] var.alpha <- V.est[2,2] Boot.est <- function(x){ 1

Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, [email protected] 2017-03-21

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

3858 Tutorial 8Yifan Li, [email protected]

2017-03-21

Parametric vs Non-parametric Bootstrap for Gamma distribution

In class we discuss the non-parametric bootstrap in the estimation of expectation of X (using sample mean),where Tn

∗ will have normal limiting distribution (by CLT).

Here we try the non-parametric bootstrap for the Tn∗ that may not converge to normal distribution. We

assume we construct the expressions of variance without knowing the distribution. Let’s see what will happen.#rain.dat <- scan("http://www.stats.uwo.ca/faculty/kulperger/SS3858/Data/illinois60.txt")set.seed(31415926)rain.dat <- rgamma(100, shape = 2.5, rate = 1/3)

gamma.est <- function(x){mu.1 <- mean(x)mu.2 <- mean(x^2)var.x <- mu.2-mu.1^2lam.hat <- mu.1/(mu.2-mu.1^2)alpha.hat <- mu.1*lam.hatc(lam.hat, alpha.hat)

}

est <- gamma.est(rain.dat)lam <- est[1] #lam and alpha are estimated valuesalpha <- est[2]#try to get better estimate at first (it needs more data)

#bootstrapM <- 1e4n <- length(rain.dat)

#using the Fisher information matrix in class

I.0.mat = function(theta){A = matrix(0, 2,2)lambda = theta[1]alpha = theta[2]A[1,1] = alpha/lambda^2A[2,1] = - 1/lambdaA[1,2] = A[2,1]A[2,2] = trigamma(alpha)A

}

V.est <- solve(I.0.mat(est)) #inverse of the Fisher Information matrixvar.lam <- V.est[1,1]var.alpha <- V.est[2,2]

Boot.est <- function(x){

1

Page 2: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

theta <- gamma.est(x)V.hat <- solve(I.0.mat(theta))W.lam <- sqrt(n)*(theta[1]-lam)/sqrt(V.hat[1,1])W.alpha <- sqrt(n)*(theta[2]-alpha)/sqrt(V.hat[2,2])c(W.lam, W.alpha)

}

#parametricBoot.est.seq1 <- replicate(M, Boot.est(rgamma(n, shape = alpha, rate = lam)))

hist(Boot.est.seq1[1,], main = "W.lam.hat")

W.lam.hat

Boot.est.seq1[1, ]

Fre

quen

cy

−6 −4 −2 0 2

050

010

0015

00

hist(Boot.est.seq1[2,], main = "W.alpha.hat")

2

Page 3: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

W.alpha.hat

Boot.est.seq1[2, ]

Fre

quen

cy

−6 −4 −2 0 2

050

010

0015

00

qqnorm(Boot.est.seq1[1,]); qqline(Boot.est.seq1[1,])

−4 −2 0 2 4

−4

−2

02

Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

qqnorm(Boot.est.seq1[2,]); qqline(Boot.est.seq1[2,])

3

Page 4: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

−4 −2 0 2 4

−6

−4

−2

02

Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

#non parametric

ecdf.sample <- function(num=n, data.sample=rain.dat){#n=length(rain.dat)x <- data.samplei.sample = sample(1:n , size = num , replace = T)x[i.sample]

}

#compare data with X.starqqplot(rain.dat, ecdf.sample(n)) #n is so smallabline(0,1)

4

Page 5: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

0 5 10 15 20 25

510

1520

rain.dat

ecdf

.sam

ple(

n)

Boot.est.seq2 <- replicate(M, Boot.est(ecdf.sample(n)))

hist(Boot.est.seq2[1,], main = "W.lam.hat") #non-par makes it like normal

W.lam.hat

Boot.est.seq2[1, ]

Fre

quen

cy

−4 −2 0 2 4

050

010

0015

00

hist(Boot.est.seq2[2,], main = "W.alpha.hat") #non-par make it like normal

5

Page 6: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

W.alpha.hat

Boot.est.seq2[2, ]

Fre

quen

cy

−4 −2 0 2 4

050

010

0015

00

#non-par vs normalqqnorm(Boot.est.seq2[1,]); qqline(Boot.est.seq2[1,])

−4 −2 0 2 4

−4

−2

02

4

Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

6

Page 7: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

qqnorm(Boot.est.seq2[2,]); qqline(Boot.est.seq2[2,])

−4 −2 0 2 4

−4

−2

02

4Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

#but the true distribution are not normalTrue.seq <- replicate(M, Boot.est(rgamma(n, shape = 2.5, rate = 1/3))) #with true parameterhist(True.seq[1,], main = "W.lam.hat true")

W.lam.hat true

True.seq[1, ]

Fre

quen

cy

−8 −6 −4 −2 0 2 4

050

015

0025

0035

00

7

Page 8: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

hist(True.seq[2,], main = "W.alpha.hat true")

W.alpha.hat true

True.seq[2, ]

Fre

quen

cy

−10 −5 0

050

015

0025

00

#true vs normalqqnorm(True.seq[1,]); qqline(True.seq[1,])

−4 −2 0 2 4

−6

−4

−2

02

Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

8

Page 9: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

qqnorm(True.seq[2,]); qqline(True.seq[2,])

−4 −2 0 2 4

−10

−6

−4

−2

02

Normal Q−Q Plot

Theoretical Quantiles

Sam

ple

Qua

ntile

s

#true vs par#maybe some translation happens, due to the low accuarcy of the estimatesqqplot(True.seq[1,], Boot.est.seq1[1,]); abline(0,1)

−6 −4 −2 0 2

−4

−2

02

True.seq[1, ]

Boo

t.est

.seq

1[1,

]

qqplot(True.seq[2,], Boot.est.seq1[2,]); abline(0,1)

9

Page 10: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

−10 −8 −6 −4 −2 0 2

−6

−4

−2

02

True.seq[2, ]

Boo

t.est

.seq

1[2,

]

#true vs non-parqqplot(True.seq[1,], Boot.est.seq2[1,]); abline(0,1)

−6 −4 −2 0 2

−4

−2

02

4

True.seq[1, ]

Boo

t.est

.seq

2[1,

]

qqplot(True.seq[2,], Boot.est.seq2[2,]); abline(0,1)

10

Page 11: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

−10 −8 −6 −4 −2 0 2

−4

−2

02

4

True.seq[2, ]

Boo

t.est

.seq

2[2,

]

#compare par vs non-parqqplot(Boot.est.seq1[1, ], Boot.est.seq2[1,]) #they are differentabline(0 , 1)

−4 −2 0 2

−4

−2

02

4

Boot.est.seq1[1, ]

Boo

t.est

.seq

2[1,

]

qqplot(Boot.est.seq1[2, ], Boot.est.seq2[2,]) #they are differentabline(0 , 1)

11

Page 12: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

−6 −4 −2 0 2

−4

−2

02

4

Boot.est.seq1[2, ]

Boo

t.est

.seq

2[2,

]

#par quantilepr <- c(.025 , .975)q.lam <- quantile(Boot.est.seq1[1,], pr)q.lam

## 2.5% 97.5%## -2.535069 2.137008

q.alpha <- quantile(Boot.est.seq1[2,], pr)q.alpha

## 2.5% 97.5%## -2.706911 2.167158

#confidence intervalunname(lam - q.lam[c(2,1)] * sqrt(var.lam)/sqrt(n))

## [1] 0.2211551 0.4429961

unname(alpha - q.alpha[c(2,1)] * sqrt(var.alpha)/sqrt(n))

## [1] 1.819385 3.480495

#non-par quantilepr <- c(.025 , .975)q.lam <- quantile(Boot.est.seq2[1,], pr)q.lam

## 2.5% 97.5%## -2.321283 2.325222

q.alpha <- quantile(Boot.est.seq2[2,], pr)q.alpha

## 2.5% 97.5%## -2.39227 2.30511

12

Page 13: Parametric vs Non-parametric Bootstrap for Gamma distributionfisher.stats.uwo.ca/faculty/kulperger/SS3858/Tutorial/3858tutor8.pdf · 3858 Tutorial 8 Yifan Li, yli2763@uwo.ca 2017-03-21

#confidence intervalunname(lam - q.lam[c(2,1)] * sqrt(var.lam)/sqrt(n))

## [1] 0.2122183 0.4328450

unname(alpha - q.alpha[c(2,1)] * sqrt(var.alpha)/sqrt(n))

## [1] 1.772370 3.373263

13