Skip to content

Instantly share code, notes, and snippets.

@sherman
Created November 6, 2015 16:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sherman/88abbaad799f0af7fae6 to your computer and use it in GitHub Desktop.
Save sherman/88abbaad799f0af7fae6 to your computer and use it in GitHub Desktop.
require(graphics)
# get first group result
x <- round(rnorm(100, 150, 10))
# get second group result (20% better mean)
y <- sample(c(round(rnorm(80, 150, 10)), round(rnorm(20, 180, 10))))
groups <- c(rep(1, length(x)), rep(2, length(y)))
data <- c(x, y)
# make an observation (difference in mean)
observation <- diff(by(data, groups, mean))
# let's generate 1000 observations by shuffling original data
iterations <- 1000
generated <- unlist(lapply(1:iterations, function(elt) {
diff(by(data, sample(groups, length(groups), FALSE), mean))
}))
par(mfrow = c(1,1))
hist(generated, col = "red", breaks = 100, main = "Generated", xlab = "var")
# if we were lucky, we would see the observation on the histogram of generated data
abline(v = observation, col = "black", lwd = 4)
# it should be similar
sprintf("two-tailed test: %f", (sum(abs(generated) > abs(observation)) + 1) / (iterations + 1))
sprintf("p-value: %f", t.test(x, y)$p.value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment