require(latticeExtra)
require(mosaic)
require(Hmisc)
require(kableExtra)

Example 6.7

    set.seed(72389)
    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
        }

    q <- mean(p < alpha)
    r <- sqrt(q * (1 - q) / m)
    s <- rbind(c("p.hat", "se.hat"),c(round(q,4), round(r,4)))
    kbl(s, caption = "Normal") %>%
  kable_styling(bootstrap_options = "striped",
                full_width = F)
Normal
p.hat se.hat
0.0505 0.0022
    set.seed(45234)
    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 <- rchisq(n, mu0)
        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)
    l <- rbind(c("p.hat", "se.hat"),c(round(p.hat,4), round(se.hat,4)))
    kbl(l, caption = "chi square") %>%
  kable_styling(bootstrap_options = "striped",
                full_width = F)
chi square
p.hat se.hat
0.0458 0.0021
    n <- 20
    m <- 1000
    mu0 <- 500
    sigma <- 100
    mu <- c(seq(450, 650, 10))  #alternatives
    M <- length(mu)
    power <- numeric(M)
    for (i in 1:M) {
        mu1 <- mu[i]
        pvalues <- replicate(m, expr = {
            #simulate under alternative mu1
            x <- rnorm(n, mean = mu1, sd = sigma)
            ttest <- t.test(x,
                     alternative = "greater", mu = mu0)
            ttest$p.value  } )
        power[i] <- mean(pvalues <= .05)
    }

    par(ask = TRUE)

    plot(mu, power)
    abline(v = mu0, lty = 1)
    abline(h = .05, lty = 1)
    lines(mu, power, lty=3)

    detach(package:Hmisc)
    par(ask = FALSE)