Question: Is it better in terms of Type I and Type II error to delete tied values or to use the midrank correction? Use at least three different sample sizes, two different significance levels, two values of d, two different distributions, and 10% versus 30% tied values. Use any test in Chapters 2 7 of the text, except for Wilcoxon rank sum, Siegel-Tukey, and two-sample t-test. Useful code: ## Power for sign test vs. t-test if the distribution is normal require(coin) require(rmutil) powerFun.norm <- function(n,d=1,p=0.5,alpha=0.05,sigma=1,nsims=1000) { pval.sign <- numeric(nsims) pval.t <- numeric(nsims) pval.wsr <- numeric(nsims) for (i in 1:nsims) { dat1 <- rnorm(n,mean=0,sd=sigma) dat2 <- rnorm(n,mean=d,sd=sigma) diff <- dat2-dat1 ts <- length(diff[diff > 0]) pval.sign[i] <- binom.test(ts,n)$p.value pval.wsr[i] <- pvalue(wilcoxsign_test(dat2~dat1)) pval.t[i] <- t.test(diff)$p.value } power.sign <- length(pval.sign[pval.sign < alpha])/nsims power.wsr <- length(pval.wsr[pval.wsr < alpha])/nsims power.t <- length(pval.t[pval.t < alpha])/nsims return(list(sign = power.sign, WSR = power.wsr, t=power.t)) } powerFun.norm(10) powerFun.norm(20) # Underlying distribution is exponential powerFun.exp <- function(n,d=0.5,p=0.5,alpha=0.05,sigma=1,nsims=1000) { pval.sign <- numeric(nsims) pval.t <- numeric(nsims) pval.wsr <- numeric(nsims) for (i in 1:nsims) { dat1 <- rexp(n,rate=1) dat2 <- rexp(n,rate=d) diff <- dat2-dat1 ts <- length(diff[diff > 0]) pval.sign[i] <- binom.test(ts,n)$p.value pval.wsr[i] <- pvalue(wilcoxsign_test(dat2~dat1)) pval.t[i] <- t.test(diff, mu=1)$p.value } power.sign <- length(pval.sign[pval.sign < alpha])/nsims power.wsr <- length(pval.wsr[pval.wsr < alpha])/nsims power.t <- length(pval.t[pval.t < alpha])/nsims return(list(sign = power.sign, WSR = power.wsr, t=power.t)) } powerFun.exp(10) powerFun.exp(20) powerFun.dexp <- function(n,d=1,p=0.5,alpha=0.05,sigma=1,nsims=1000) { pval.sign <- numeric(nsims) pval.t <- numeric(nsims) pval.wsr <- numeric(nsims) for (i in 1:nsims) { dat1 <- rlaplace(n,m=0,s=sigma) dat2 <- rlaplace(n,m=d,s=sigma) diff <- dat2-dat1 ts <- length(diff[diff > 0]) pval.sign[i] <- binom.test(ts,n)$p.value pval.wsr[i] <- pvalue(wilcoxsign_test(dat2~dat1)) pval.t[i] <- t.test(diff)$p.value } power.sign <- length(pval.sign[pval.sign < alpha])/nsims power.wsr <- length(pval.wsr[pval.wsr < alpha])/nsims power.t <- length(pval.t[pval.t < alpha])/nsims return(list(sign = power.sign, WSR = power.wsr, t=power.t)) } powerFun.dexp(10) powerFun.dexp(20)