Estatísticas básicas no R

## Objetivo: Revisar tópicos de medidas estatísticas
##===================================================================
## 1- Apresentação do potencial do R
## 2- Familiarização com o R
##===================================================================
##-------------------------------------------------------------------
## Gerando amostras
##-------------------------------------------------------------------------------

A <- c(2, 1.2, 2.1, 1.6, 0.9, 2.2, 1.8)    # Altura, m

B <- c(1.8, 1.7, 1.7, 1.7, 1.5, 1.7, 1.5)  # Altura, m


##-------------------------------------------------------------------------------
## Visualização gráfica das amostras
##-------------------------------------------------------------------------------
par(mfrow=c(2,1),
    bty='l')

## A
plot(A,
     type='h',
     ylim=c(0, 2.5),
     xlab='A',
     ylab='')

## Média de A
abline(h=mean(A),
       col='red',
       lw=2)

## B
plot(B,
     type='h',
     ylim=c(0, 2.5),
     xlab='B',
     ylab='Altura, m')

## Média de B
abline(h=mean(B),
       col='red',
       lw=2)


##-------------------------------------------------------------------
## Algumas medidas estatísticas importantes
##-------------------------------------------------------------------
## Média
mean(A)
mean(B)

## Variância
var(A)
var(B)

## Desvio padrão
sd(A)
sd(B)

## Coeficiente de variação
100 * sd(A) / mean(A)
100 * sd(B) / mean(B)

## Uma pequena e simples função
cv <- function(x) {
  100 * sd(x) / mean(x)
}

cv(A)
cv(B)

## Verificando a influência da escala nas medidas
A100 <- 100 * A  # (Altura, cm)

mean(A); mean(A100)

var(A); var(A100)

sd(A); sd(A100)

cv(A); cv(A100)

## Curiosidade
## Testando a igualdade
var(100 + A) == var(A)

## Testando a igualdade variando o número de casas decimais
for(ndec in 1:17)
  print(round(var(100 + A), ndec) == round(var(A), ndec))


##-------------------------------------------------------------------------------
## Dividir SQD por n-1 no cálculo da estimativa da variância: por quê?
##-------------------------------------------------------------------------------
## Função para determinar o desvio quadrático médio - dqm
dqm <- function(x) {
  sum((x - mean(x))^2) / length(x)
}

## Retirar 'na' amostras válidas de tamanho 'n' de uma população
## com distribuição normal Y ~ N(Mu, Sigma)
## (média 'Mu', desvio padrão 'Sigma')

## Parâmetros da população
Mu    <- 10  # Média
Sigma <-  2  # Desvio Padrão

## Características da amostra
na <- 1e4  # Número de amostras (usar 1e3, 1e4, 1e5)
n  <-   5  # Tamanho da amostra (usar 5, 10, 50, ...)

## Amostragem
amo <- matrix(rnorm(na * n,
                    Mu,
                    Sigma),
              ncol=n)

## Parâmetros gráficos
par(mfrow=c(2,1),
    pch='.',
    cex=1)

## Determinando o dqm das amostras
plot(apply(amo,
           1,
           dqm),
     ylim=c(0,30),
     xlab='',
     main='Desvio quadrático médio',
     col='orange')

## Determinando a variância das amostras
plot(apply(amo,
           1,
           var),
     ylim=c(0,30),
     xlab='Amostra',
     main='Variância',
     col='darkgreen')

## Linha horizontal da média de dqm: E(dqm)
abline(h=mean(apply(amo,
                    1,
                    dqm)),
       col='orange',
       lw=2)

## Linha horizontal da média de var: E(var)
abline(h=mean(apply(amo,
                    1,
                    var)),
       col='green',
       lw=2)


##-------------------------------------------------------------------------------
## Medidas de associação
##-------------------------------------------------------------------------------
## Criando os vetores
Y1  <- 1:12

Y2  <- 10 * Y1

Y3  <- -10 * Y1

Y4  <- c(10, 24, 28, 40, 55, 62,
         65, 80, 94, 95, 112, 116)

Y5  <- -1 * Y4

Y6  <- runif(n = 20, 1, 15)

Y7  <- Y6 + rnorm(20, m=2, sd=5)

Y8  <- -1 * Y6 + rnorm(20, m=2, sd=5)

Y9  <- c(0.03, 0.62, 0.07, 0.75, 0.88, 0.59,
         0.93, 0.15, 0.45, 0.61, 0.33, 0.70)

Y10 <- c(0.78, 0.39, 0.40, 0.38, 0.68, 0.63,
         0.66, 0.62, 0.19, 0.98, 0.75, 0.56)

## Definindo parâmetros gráficos
par(mfrow=c(2,2),
    cex=1,
    bty='l',
    pch=19,
    col='blue')

## Visualização gráfica das variáveis aleatórias em um diagrama de dispersão
## Y1 vs. Y2
plot(Y2 ~ Y1,                   
     main='Perfeita e positiva',
     sub=paste('cov(Y1, Y2)',
               round(cov(Y1, Y2),
                     2),
               sep='='))

## Y1 vs. Y3
plot(Y3 ~ Y1,                   
     main='Perfeita e negativa',
     sub=paste('cov(Y1, Y3)',
               round(cov(Y1, Y3),
                     2),
               sep='='))

## Y1 vs. Y4
plot(Y4 ~ Y1,
     main='Forte e positiva',
     sub=paste('cov(Y1, Y4)',
               round(cov(Y1, Y4),
                     2),
               sep='='))

## Y1 vs. Y5
plot(Y5 ~ Y1,
     main='Forte e negativa',
     sub=paste('cov(Y1, Y5)',
               round(cov(Y1, Y5),
                     2),
               sep='='))

## Y6 vs. Y7
plot(Y7 ~ Y6,
     main='Fraca e positiva',
     sub=paste('cov(Y6, Y7)',
               round(cov(Y6, Y7),
                     2),
               sep='='))
## Y6 vs. Y8
plot(Y8 ~ Y6,
     main='Fraca e negativa',
     sub=paste('cov(Y6, Y8)',
               round(cov(Y6, Y8),
                     2),
               sep='='))
## Y10 vs. Y9
plot(Y10 ~ Y9,
     main='Nula',
     sub=paste('cov(Y9, Y10)',
               round(cov(Y9, Y10),
                     2),
               sep='='))

## Covariância
cov(Y1, Y2)   # Perfeita positiva
cov(Y1, Y3)   # Perfeita negativa
cov(Y1, Y4)   # Forte positiva
cov(Y1, Y5)   # Forte negativa
cov(Y6, Y7)   # Fraca e positiva
cov(Y7, Y8)   # Fraca e negativa
cov(Y9, Y10)  # Nula

## Correlação: observar as vantagens em relação a covariância!
cor(Y1, Y2)   # Perfeita positiva
cor(Y1, Y3)   # Perfeita negativa
cor(Y1, Y4)   # Forte positiva   
cor(Y1, Y5)   # Forte negativa   
cor(Y6, Y7)   # Fraca e positiva 
cor(Y7, Y8)   # Fraca e negativa 
cor(Y9, Y10)  # Nula             

## Verificando a influência da escala
## Covariância
cov(Y1, Y4)
cov(100 * Y1, 100 * Y4)

## Correlação
cor(Y1, Y4)
cor(100 * Y1, 100 * Y4)