#==========================================================================================
# Aula 15 da disciplina ce223 (10/05/2011)
# Estatística básica, construção de funções para IC e teste de hipótese diferença de médias
#                                                               Professor Walmes M. Zeviani
#                                                                     www.leg.ufpr.br/ce223
#==========================================================================================

#------------------------------------------------------------------------------------------

ic.dif <- function(a1, a2, nivel){
  m1 <- mean(a1); m2 <- mean(a2)
  n1 <- length(a1); n2 <- length(a2)
  v1 <- var(a1); v2 <- var(a2)
  v <- ((n1-1)*v1+(n2-1)*v2)/(n1+n2-2)
  dif <- abs(m2-m1)
  qt <- -qt((1-nivel)/2, df=n1+n2-2)
  ep <- sqrt(v*(1/n1+1/n2))
  lts <- dif+c(li=-1,ls=1)*qt*ep
  tc <- (dif-0)/ep
  tt <- qt
  pvalor <- 2*(1-pt(abs(tc), df=n1+n2-2))
  return(list(medias=c(m1=m1, m2=m2, dif=dif),
              variancias=c(v1=v1, v2=v2, v=v),
              n=c(n1=n1, n2=n2, gl=n1+n2-2),
              ic=lts,
              statistica=c(tc=tc, tt=tt),
              pvalor=pvalor))
}

#------------------------------------------------------------------------------------------

x1 <- rgamma(14, 2, 2)
x2 <- rgamma(16, 2.2, 2)

plot(density(x1))
lines(density(x2), col=2)
abline(v=c(mean(x1), mean(x2)), col=1:2)

ic.dif(a1=x1, a2=x2, nivel=0.95)

tt <- t.test(x1, x2, var=TRUE)
tt

str(tt)

tt$p.value

curve(dt(x, df=tt$parameter), -4, 4)
abline(v=qt(c(0.025,0.975), df=tt$parameter))
abline(v=tt$statistic, col=2)

#------------------------------------------------------------------------------------------
# teste para igualdade de variâncias

var.test(x1, x2)
t.test(x1, x2, var=TRUE)

auto.t.test <- function(a1, a2){
  vt <- var.test(a1, a2)
  como <- ifelse(vt$p.value<0.05, FALSE, TRUE)
  t.test(a1, a2, var=como)
}

auto.t.test(x1,x2)

y1 <- rnorm(100, 3, 3)
y2 <- rnorm(89, 4, 3)

au <- auto.t.test(y1,y2)
str(au)
length(grep(au$method, "Welch")

#------------------------------------------------------------------------------------------
