# Case 011: hypothetical independent-group summaries, base R.
# Continuous normal outcomes; no sampled observations or attrition simulation.
n1 <- 20; n2 <- 100; mean1 <- 53; mean2 <- 50; sd1 <- 12; sd2 <- 6
difference <- mean1-mean2
v1 <- sd1^2/n1; v2 <- sd2^2/n2
se_w <- sqrt(v1+v2)
df_w <- (v1+v2)^2/(v1^2/(n1-1)+v2^2/(n2-1))
pooled_variance <- ((n1-1)*sd1^2+(n2-1)*sd2^2)/(n1+n2-2)
se_p <- sqrt(pooled_variance*(1/n1+1/n2))
summarize <- function(se,df) {
  statistic <- difference/se
  half_width <- qt(.975,df)*se
  c(difference=difference,SE=se,df=df,t=statistic,p=2*pt(-abs(statistic),df),
    CI_low=difference-half_width,CI_high=difference+half_width)
}
results <- rbind(Welch=summarize(se_w,df_w),pooled=summarize(se_p,n1+n2-2))
print(round(results,6))
# Allocation-only comparison: assumed common population SD=10 and fixed total N=120.
se_unequal <- 10*sqrt(1/20+1/100)
se_balanced <- 10*sqrt(1/60+1/60)
print(c(equal_variance_SE_20_100=se_unequal,equal_variance_SE_60_60=se_balanced,
        allocation_SE_ratio=se_unequal/se_balanced,small_group_variance_share=v1/(v1+v2)))
stopifnot(se_w>se_p,abs(v1/(v1+v2)-20/21)<1e-10,
 abs(se_unequal/se_balanced-sqrt(1.8))<1e-10,
 results["Welch","CI_low"]<0,results["Welch","CI_high"]>0)
sessionInfo()
