First example in guided notes
set.seed(12345)
lambda<-2
numsim<-100
mean5<-rep(0,numsim)
mean25<-mean5
mean100<-mean5
for (i in 1:numsim){
mean5[i]<-mean(rexp(5,lambda))
mean25[i]<-mean(rexp(25,lambda))
mean100[i]<-mean(rexp(100,lambda))
}
boxplot(mean5,mean25,mean100,names=c("n=5","n=25","n=100"))
title("Distribution of Mean of Exponentials")
y <- seq(0,1,.1)
#lines(y,(1/sqrt(2*pi))*exp(-.5*(y)^2))
mean(mean5)
## [1] 0.5352591
mean(mean25)
## [1] 0.5027771
mean(mean100)
## [1] 0.4996425
n <- c(5,25,100)
mean <- c(mean(mean5),mean(mean25),mean(mean100))
sd <- c(sd(mean5),sd(mean25),sd(mean100))
kable(cbind(n,mean,sd)) %>%
kable_paper("hover", full_width = F)
| n | mean | sd |
|---|---|---|
| 5 | 0.5352591 | 0.2551066 |
| 25 | 0.5027771 | 0.1011640 |
| 100 | 0.4996425 | 0.0458466 |
Page 5 Ex
library(kableExtra)
set.seed(12345678)
#Generate from normal(0,1) 3 samples of size 5
s <- 3
n <- 5
x4 <- rep(0,s)
x5 <- rep(0,s)
x6 <- rep(0,s)
mymatrix <- matrix(rnorm(s*n), nrow=s,ncol=n)
mydata <- cbind(mymatrix,x4,x5,x6)
mydata[,6] <- apply(mydata[,1:5],1,mean)
mydata[,7] <- apply(mydata[,1:5],1,function(s){mean(s,trim=.2)} )
mydata[,8] <- apply(mydata[,1:5],1,median)
thetaMC <- rep(0,3)
biasMC<- rep(0,3)
SDMC<- rep(0,3)
MSEMC<- rep(0,3)
for (i in 1:3) {
thetaMC[i] <- mean(mydata[,n+i])
biasMC[i] <- thetaMC[i] - 0
SDMC[i] <- sd(mydata[,n+i])
MSEMC[i] <- (SDMC[i])^2 + (biasMC[i])^2
}
estimator <- c("sample mean", "trimmed mean", "median")
kable(round(mydata,3)) %>%
kable_paper("hover", full_width = F)
| x4 | x5 | x6 | |||||
|---|---|---|---|---|---|---|---|
| 1.148 | -0.257 | -0.756 | 2.552 | -0.280 | 0.481 | 0.204 | -0.257 |
| 1.618 | 0.892 | 0.984 | -0.525 | -0.052 | 0.583 | 0.608 | 0.892 |
| -2.379 | -0.752 | 1.099 | -0.221 | -0.497 | -0.550 | -0.490 | -0.497 |
kable(cbind(estimator,round(thetaMC,3),round(biasMC,3),round(SDMC,3),round(MSEMC,3)))%>%
kable_styling()
| estimator | ||||
|---|---|---|---|---|
| sample mean | 0.172 | 0.172 | 0.627 | 0.423 |
| trimmed mean | 0.107 | 0.107 | 0.555 | 0.32 |
| median | 0.046 | 0.046 | 0.742 | 0.553 |
mu <- 0
m <- 1000
g <- numeric(m)
MSE.Num<-numeric(m)
for (i in 1:m) {
x <- rnorm(2)
g[i] <- abs(x[1] - x[2])
MSE.Num[i]<-(g[i]-mu)^2 # MSE calculation of the numerator
}
est <- mean(g)
est
## [1] 1.094918
bias.g<-est-0 # Monte Carlo Bias, note mu ==0
bias.g
## [1] 1.094918
MC.SE<-sd(g) # MC Standard error
var.theor<-2-(4/pi) # theoretical variance
MC.SE
## [1] 0.8096886
var.theor
## [1] 0.7267605
MC.MSE<-sum(MSE.Num)/m # Monte Carlo MSE
MC.MSE.shortcut<-(bias.g)^2+(MC.SE)^2 # Short cut way to calculate MSE
MC.MSE
## [1] 1.853786
MC.MSE.shortcut
## [1] 1.854442
names <- c("mean estimate","bias", "SE","theor. variance", "MSE")
kable(rbind(c("mean estimate","bias", "SE","theor. variance", "MSE"), round(c(est,bias.g,MC.SE,var.theor,MC.MSE),3))) %>%
kable_styling()
| mean estimate | bias | SE | theor. variance | MSE |
| 1.095 | 1.095 | 0.81 | 0.727 | 1.854 |
6.4 and 6.5
n <- 20
alpha <- .05
UCL <- replicate(1000, expr = {
x <- rnorm(n, mean = 0, sd = 2)
(n-1) * var(x) / qchisq(alpha, df = n-1)
} )
#count the number of intervals that contain sigma^2=4
sum(UCL > 4)
## [1] 951
#or compute the mean to get the confidence level
mean(UCL > 4)
## [1] 0.951
Page 11 ex
set.seed(1234)
n <- 10
alpha <- .025
UCL <- replicate(10000, expr = {
x <- rnorm(n, mean = 2, sd = 1) +
(sd(x)/sqrt(n)) * qt(p=(1-alpha/2), df = (n-1))
} )
sum(UCL > 2)
## [1] 52584
mean(UCL > 2)
## [1] 0.52584
Ex 6.7 pg 163 in text
set.seed(12345)
n <- 20
alpha <- .05
mu0 <- 500
sigma <- 100
m <- 10000 #number of replicates
p <- numeric(m) #storage for p-values
for (j in 1:m) {
x <- rnorm(n, mu0, sigma)
ttest <- t.test(x, alternative = "greater", mu = mu0)
p[j] <- ttest$p.value
}
p.hat <- mean(p < alpha)
se.hat <- sqrt(p.hat * (1 - p.hat) / m)
kable(rbind(c("p.hat","se.hat"),c(round(p.hat,3), round(se.hat,3)))) %>%
kable_paper(full_width = F)
| p.hat | se.hat |
| 0.051 | 0.002 |
Different version of 6.7 (Chi squared)
set.seed(23456)
n2 <- 20
alpha2 <- .05
mu02 <- 500
m2 <- 10000 #number of replicates
q <- numeric(m2) #storage for p-values
for (j in 1:m2) {
x2 <- rchisq(n2, df = 500)
ttest2 <- t.test(x2, alternative = "greater", mu = mu02)
q[j] <- ttest2$p.value
}
p.hat2 <- mean(q < alpha)
se.hat2 <- sqrt(p.hat2 * (1 - p.hat2) / m2)
kable(rbind(c("p.hat2","se.hat2"),c(round(p.hat2,3), round(se.hat2,3)))) %>%
kable_paper(full_width = F)
| p.hat2 | se.hat2 |
| 0.044 | 0.002 |
Power curve for ex 6.7
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
set.seed(34567)
n3 <- 20
mu03 <- 500
s <- 10000
sigma3 <- 100
mu <- c(seq(450, 650, 10))
M <- length(mu)
power <- numeric(M)
r <- numeric(s) #storage for p-values
for (i in 1:M) {
mu1 <- mu[i]
pvalues <- replicate(s, expr = {
#simulate under alternative mu1
x <- rnorm(n3, mean = mu1, sd = sigma3)
ttest3 <- t.test(x, alternative = "greater", mu = mu03)
ttest3$p.value } )
power[i] <- mean(pvalues <= .05)
}
plot(mu,power)
abline(v = mu03, lty = 1)
abline(h = .05, lty = 1)
se <- sqrt(power * (1-power) / m)
errbar(mu, power, yplus = power+se, yminus = power-se,
xlab = bquote(theta))
lines(mu, power, lty=3)
detach(package:Hmisc)
par(ask = FALSE)