Main»T-test And P-value

T-test And P-value

set.seed(12345); #set the random number generator x = rnorm(100); y = rnorm(100,mean=0.5)

  1. t-test, although they are clearly not normal

t.test( x, y, alternative="two.sided"); t.test( x, y, alternative="less"); #one-sided test

tt = t.test( x, y, alternative="less");

  1. alternatively, let's try simulation

t.stat = function( x1, x2 ) {

  ( mean(x1) - mean(x2)) / sqrt( var(x1)/length(x1) + var(x2)/length(x2));

}

t.obs = t.stat(x,y);

n=1000 #1K permutations permu = data.frame( matrix(NA, nrow=n, ncol=3) ); names(permu) = c("xbar","ybar","t"); head(permu);

  1. Reset:
  1. RNGkind(ok[1])

i=1; while( i <= n ) {

  new  = sample( c(x,y), replace = TRUE); 
  newX = new[1:100];
  newY = new[101:200];
  permu$t[i] = t.stat( newX, newY);
  permu$xbar = mean(newX);
  permu$ybar = mean(newY);
  i = i+1; 

}

sub = permu[permu$t< t.obs, ] my.p = length(sub$t) / length(permu$t); my.p

results = rbind(my.p, tt$p.value); rownames(results) = c("permutation", "t-test"); colnames(results) = c("p"); results;

hist( permu$t, breaks=20, xlab="t-statistic", main="p-value and simulation" ); arrows( t.obs, n/10, t.obs, n/20, col="red");