R/mean.is.R

Defines functions size.test.mean.is size.ci.mean.is ci.mean.is ci.mean.is.data

Documented in ci.mean.is size.ci.mean.is

# DGB
## Mean Difference from Two (Independent) Samples

ci.mean.is.data <- function(alpha, y1, y2) {
 # Computes confidence interval for a 
 # difference in population means in a 2-group design
 # Arguments: 
 #   alpha: alpha level for 1-alpha confidence
 #   y1:     vector of scores for group 1
 #   y2:     vector of scores for group 2
 # Values:
 #   estimate, SE, df, lower limit, upper limit
 #   for both equal variance and unequal variance methods
 n1 <- length(y1)
 n2 <- length(y2)
 df1 <- n1 + n2 - 2
 m1 <- mean(y1)
 m2 <- mean(y2) 
 est <- m1 - m2
 v1 <- var(y1)
 v2 <- var(y2)
 vp <- ((n1 - 1)*v1 + (n2 - 1)*v2)/df1
 se1 <- sqrt(vp/n1 + vp/n2)
 t1 <- est/se1
 p1 <- 2*(1 - pt(abs(t1),df1))
 tcrit1 <- qt(1 - alpha/2, df1)
 ll1 <- est - tcrit1*se1
 ul1 <- est + tcrit1*se1
 se2 <- sqrt(v1/n1 + v2/n2)
 t2 <- est/se2
 df2 <- (se2^4)/(v1^2/(n1^3 - n1^2) + v2^2/(n2^3 - n2^2))
 p2 <- 2*(1 - pt(abs(t2),df2))
 tcrit2 <- qt(1 - alpha/2, df2)
 ll2 <- est - tcrit2*se2
 ul2 <- est + tcrit2*se2
 out1 <- t(c(est, se1, df1, ll1, ul1))
 out2 <- t(c(est, se2, df2, ll2, ul2))
 out <- rbind(out1, out2)
 colnames(out) <- c("Estimate", "SE", "df", "LL", "UL")
 rownames(out) <- c("Equal Variances Assumed:", "Equal Variances Not Assumed:")
 return(out)
}

ci.mean.is <- function(alpha, m1, m2, sd1, sd2, n1, n2) {
 # Computes confidence interval and test statistic for a 
 # difference in population means in a 2-group design
 # Arguments: 
 #   alpha: alpha level for 1-alpha confidence
 #   mj:    sample mean in group j
 #   sdj:   sample standard deviation in group j
 #   nj:    sample size in group j
 # Values:
 #   estimate, SE, df, t-value, p-value, lower limit, upper limit
 #   for both equal variance and unequal variance methods
 df1 <- n1 + n2 - 2
 est <- m1 - m2
 v1 <- sd1^2
 v2 <- sd2^2
 vp <- ((n1 - 1)*v1 + (n2 - 1)*v2)/df1
 se1 <- sqrt(vp/n1 + vp/n2)
 t1 <- est/se1
 p1 <- 2*(1 - pt(abs(t1),df1))
 tcrit1 <- qt(1 - alpha/2, df1)
 ll1 <- est - tcrit1*se1
 ul1 <- est + tcrit1*se1
 se2 <- sqrt(v1/n1 + v2/n2)
 t2 <- est/se2
 df2 <- (se2^4)/(v1^2/(n1^3 - n1^2) + v2^2/(n2^3 - n2^2))
 p2 <- 2*(1 - pt(abs(t2),df2))
 tcrit2 <- qt(1 - alpha/2, df2)
 ll2 <- est - tcrit2*se2
 ul2 <- est + tcrit2*se2
 out1 <- t(c(est, se1, t1, df1, p1, ll1, ul1))
 out2 <- t(c(est, se2, t2, df2, p2, ll2, ul2))
 out <- rbind(out1, out2)
 colnames(out) <- c("Estimate", "SE", "t", "df", "p-value", "LL", "UL")
 rownames(out) <- c("Equal Variances Assumed:", "Equal Variances Not Assumed:")
 return(out)
}

size.ci.mean.is <- function(alpha, var, w, r) {
 # Computes sample size required to estimate a population mean 
 # difference with desired precision in a 2-group design
 # Arguments: 
 #   alpha:  alpha level for 1-alpha confidence 
 #   var:    planning value of average within-group DV variance
 #   w:      desired confidence interval width
 #   r:      desired n2/n1 ratio 
 # Values:
 #   required sample size per group (or n1 when r not equal to 1)
 z <- qnorm(1 - alpha/2)
 n <- ceiling(4*var*(1 + 1/r)*(z/w)^2 + z^2/4)
 return(n)
}

size.test.mean.is <- function(alpha, var, pow, es, r) {
 # Computes sample size required to test a difference in 
 # population means with desired power in a 2-group design
 # Arguments: 
 #   alpha:  alpha level for test
 #   var:    planning value of average within-group DV variance
 #   pow:    desired power
 #   es:     planning value of mean difference
 #   r:      desired n2/n1 ratio
 # Values:
 #   required sample size per group (or n1 when r not equal to 1)
 za <- qnorm(1 - alpha/2)
 zb <- qnorm(pow)
 n <- ceiling(var*(1 + 1/r)*(za + zb)^2/es^2 + za^2/4)
 return(n)
}
cwendorf/dgb documentation built on May 3, 2022, 9:35 p.m.