#=============================================================================== #. Título: Revisão de cursos anteriores usando R #. Autor : José Cláudio Faria # Data : 19/08/2021 10:52:42 # Objetivo: Revisar tópicos importantes via software: medidas estatísticas #=============================================================================== # 1- Apresentação do potencial do R para a disciplina # 2- Familiarização com o R #=============================================================================== #------------------------------------------------------------------------------- #.. Gerando amostras # Baseadas na apostila de CET076 - Metodologia e estatística experimental # (pag. 18) #------------------------------------------------------------------------------- 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 A_100 <- 100 * A # (Altura, cm) A; A_100 mean(A); mean(A_100) var(A); var(A_100) sd(A); sd(A_100) cv(A); cv(A_100) #... 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) # PLotando as estimativas da variância das amostras plot(apply(amo, 1, var), pch='.', cex=2, ylim=c(0,30), xlab='Amostra', ylab=expression(s^2)) # Linha horizontal da média de dqm: E(dqm) e_dqm <- mean(apply(amo, 1, dqm)) e_dqm abline(h=e_dqm, col='darkblue', lw=4) # Linha horizontal da média de var: E(var) e_var <- mean(apply(amo, 1, var)) e_var abline(h=mean(apply(amo, 1, var)), col='red', lw=4) # Linha horizontal da variância: Sigma^2 v_var <- Sigma^2 v_var abline(h=v_var, col='black', 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, min=1, max=15) Y7 <- Y6 + rnorm(20, mean=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)