categóricos: dados que são nomes.
A unica operação possível é contar cada categoria, proporção de pessoas de SP, estado de origem mais frequente (moda)
binários: categóricos com apenas 2 valores.
São categóricos mas de vez em quando a codificação 0/1 permite que a média faça sentido. 0->homem, 1-> mulher então a média é a proporção de mulheres
ordinais: valores/nomes ou números mas apenas a ordem é valida
Diferenças não fazem sentido. Passar da classe B2 para A nao é o mesmo que passar de D para B2. A operação de resumo que faz sentido é a mediana: qual o valor que divide o grupo em 2 (quase metades). Média não faz sentido
numérico: números com um zero arbitrário
Média, desvio padrão etc fazem sentido (subtração e soma fazem sentido)
ratio: números com um zero fixo (normalmente só positivos)
Medias “diferentes” harmonica, geométrica fazem sentido. (divisão faz sentido - 200 Kelvin é 2 vezes mais quente que 100 K, mas 20 Celsius não é duas vezes mais quente que 10 Celsius)
A diferença entre categóricos e numéricos é a mais importante do ponto de vista da estatística.
Mas há testes estatísticos mais exóticos para ordinais, e para binarios.
Ratio permite coisas como media harmonica e geometrica, mas até onde eu sei não há nada especifico em estatística para medidas ratio.
O papel de testes estatísticos é dar evidencias que dois (ou mais) conjuntos de dados não vieram da mesma fonte.
Você rodou 2 versões de um programa em vários dados,
Há dois conjuntos de dados. Não existe teste para 2 números, só para 2 ou mais conjuntos de dados
Dizer que os dois conjuntos de dados são “diferentes” é numa primeira aproximação dizer que esses dados vieram de duas fontes de dados (“populações”) diferentes.
Ou melhor, dizer que dois conjuntos são “diferentes” é dizer que é bem improvável que os dados vieram da mesma fonte.
Dados retirados (amostrados) de uma mesma fonte podem ter médias diferentes. A diferença é apenas por causa da sorte ou do azar. Isso é chamado de “erro de amostragem”. O nome erro não é um bom nome, pense como “ruído de amostragem”
set.seed(1234)
fonte=rnorm(10000,100,30)
O set.seed é para fixar o gerador de números aleatórios e portanto o exemplo será reprodutível.
a variável fonte contem 10000 dados amostrados de uma normal de media 100 e desvio padrão 30
Vamos ver que os dados em fonte parecem realmente vir de uma normal
hist(fonte,breaks=30)
Vamos tirar duas amostras aleatórias da fonte. a terá 7 dados e b terá 12 dados (escolhidos aleatoriamente da fonte)
a=fonte[sample(1:10000,7)]
b=fonte[sample(1:10000,12)]
Embora a e b são amostras da mesma fonte, eles tem médias diferentes
> mean(a)
[1] 110.6293
> mean(b)
[1] 95.70708
Vamos assumir que b são os tempos de execução do seu programa e a são os tempos de execução de um programa conhecido publicado na literatura, e seu mestrado é fazer uma implementação mais rápida do programa a
Voce pode dizer a sua orientadora que vc terminou o mestrado ja que voce criou um programa que é 13% mais rápido que o estado da arte?
Um teste estatístico informa a probabilidade de que os dados sejam tão (ou mais) diferentes quanto eles são tendo em vista que eles vieram da mesma fonte de dados. Esse valor é chamado de p-valor ou p-value
Se a probabilidade é alta então é provável que a diferença que voce encontrou na média (ou outras medidas - mais abaixo) é apenas devido a sorte.
Se a probabilidade é baixa então voce pode dizer que é pouco provável que os dados vieram de uma mesma fonte e que a diferença é apenas por causa do ruído de amostragem.
Se a probabilidade é baixa voce pode dizer que é bem provável que os dados realmente vieram de 2 fontes diferentes.
O termo oficial para dizer que “é bem provável que os dados realmente vieram de 2 fontes diferente” é a diferença é estatisticamente significante ou a diferença é estatisticamente significativa
> t.test(a,b)
Welch Two Sample t-test
data: a and b
t = 0.78595, df = 8.0367, p-value = 0.4544
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-28.82529 58.66978
sample estimates:
mean of x mean of y
110.62933 95.70708
Veja o p-value
> d = rnorm(12,150,30)
> mean(d)
[1] 159.3009
> t.test(a,d)
Welch Two Sample t-test
data: a and d
t = -2.5849, df = 7.7994, p-value = 0.03305
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-92.287107 -5.055969
sample estimates:
mean of x mean of y
110.6293 159.3009
No segundo caso nós geramos dados que realmente vieram de uma outra fonte bem diferente da original (media = 150 em vez de media = 100) e o teste estatístico mostra que o p-value é bem menor no segundo caso.
Tradicionalmente, na maioria das Ciências e em particular em Computação usa-se o valor de 0.05 de p-valor para afirmar que a diferença é estatisticamente significante
Na prática, se o p-valor do seu teste der 0.051 vc não tem um paper para publicar!!!
Há criticas sobre usar o p-valor como decisão, e veremos isso numa próxima aula, mas tradicionalmente essa é a prática.
Você tem dois conjuntos de dados A e B.
Assuma que eles vieram de uma mesma fonte de dados F (cujos detalhes você não sabe). Isso é chamado de hipótese nula
Calcule a probabilidade que 2 amostras dessa fonte F tenham as médias tão diferentes quanto as médias de A e B. Essa probabilidade é chamada de p-valor
Se o p-valor é alto, então é mais provável que A e B venham dessa mesma fonte e a diferença nas médias é apenas devido a “sorte”
Se o p-valor for baixo então há baixa chance que dados tão diferentes quanto os de A e B tenham vindo desta mesma fonte F. Se eles vieram de “fontes diferentes” então a diferença entre eles não é apenas por causa da sorte.
Em Ciência em geral, assume-se que p-valores menores que 0.05 (ou 95% de confiança) são evidência suficiente que os dados não vieram de uma mesma fonte.
Assim, se o p-valor é baixo (< 0.05), você tem alguma evidência que os conjuntos de dados são realmente diferentes (não vieram da mesma fonte) e diz-se que a diferença é estatisticamente significante (com 95% de confiança)
Se o p-valor é alto (> 0.05) não há nada que você pode dizer. Você não mostrou que os dados são semelhantes ou iguais. Você apenas não conseguiu mostrar que eles são diferentes!!!
Assim normalmente você quer um p-valor baixo
O papel de testes estatísticos é dar evidencias que a diferença entre a média de dois (ou mais) conjuntos de dados não é devido apenas a sorte (ou ao ruído de amostragem)
Média de execução do primeiro programa é 10.242 e a do segundo programa 9.648
Portanto o segundo programa é mais rápido. Escolha o segundo programa.
Se não há custos diferentes para escolher um ou outro programa, então você precisa de pouca evidência para decidir, escolha o com menor média (ou mediana), e pronto.
mas talvez a média menor do 2o programa foi apenas “sorte”! E dai? No pior caso, a vantagem do 2o programa é “falsa” e ambos são iguais - mas ai não há problema em usar o 2o programa!!
mas talvez o teste estatístico vai mostrar que realmente o 1o programa é o melhor. Isso nunca vai acontecer - o teste estatístico mostra no máximo que é improvável que a diferença entre o de menor média e o outro é seja apenas por sorte - o teste nunca vai mostrar que o que tem maior média (ou mediana) é “de verdade” mais rápido!
Testes pareados são usados se há uma relação entre cada dado de um conjunto com um dado do outro conjunto (ou conjuntos).
Testes não pareados (para dados “independentes”) não há essa relação. E os dois conjuntos podem ter um número diferente de dados.
Testes pareados são mais poderosos que os não pareados.
na literatura em estatística, testes pareados são de vez em quando chamados within subjects (dentro de um sujeito - as medidas são pareadas pois são duas medidas da mesma pessoa - antes e depois)
paramétrico = os dados A e B são quase normalmente (Gaussiana) distribuídos e há mais de 30 dados em cada conjunto
testes paramétricos usam o teorema do limite central que diz que a media de n variaves independentes se distribui como uma gaussiana quando n \rightarrow \infty
pareado | não pareado | |
---|---|---|
paramétrico | teste T pareado | teste T não pareado |
não paramétrico | Wilcoxon signed rank | Wilcoxon rank sum |
pareado | não pareado | |
---|---|---|
paramétrico | repeated ANOVA | ANOVA |
não paramétrico | Friedman | Kruskal-Wallis |
Testes para mais de um conjunto de dados são um pouco complicados. Os testes acima se baseiam não hipótese nula que todos os grupos vieram da mesma fonte. E portanto um p-valor pequeno apenas indica que não é provável que todas as médias sejam iguais. Mas o teste não diz quais grupos são estatisticamente diferentes dos outros.
Para determinar isso é preciso fazer testes post hoc Este blog tem alguma explicação sobre post hoc tests mas não vai muito a fundo. Na aula de problemas com o p-value veremos porque isso testes post hoc não são tão simples. Se voce precisa usar post hoc tests me procure.
Há outros testes para outras situações (dados não numéricos, dados 0/1 pareados e não pareados, etc), e
Há testes para outras perguntas: os dois conjuntos de dados tem a mesma variância (Levene test)? Os dados de um conjunto estão distribuídos segundo uma Gaussiana (Shapiro Wilks test)? etc
> t.test(a,b)
Welch Two Sample t-test
data: a and b
t = 0.78595, df = 8.0367, p-value = 0.4544
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-28.82529 58.66978
sample estimates:
mean of x mean of y
110.62933 95.70708
> wilcox.test(a,b)
Wilcoxon rank sum test
data: a and b
W = 51, p-value = 0.4824
alternative hypothesis: true location shift is not equal to 0
wilcox.test
roda o rank sum (dados não pareados), que é
um teste não paramétrico
veja que o teste T deu um p-valor menor, e confirma o que foi dito que teste T é mais poderoso. Mas veja:
> t.test(a,d)
Welch Two Sample t-test
data: a and d
t = -2.5849, df = 7.7994, p-value = 0.03305
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-92.287107 -5.055969
sample estimates:
mean of x mean of y
110.6293 159.3009
> wilcox.test(a,d)
Wilcoxon rank sum test
data: a and d
W = 12, p-value = 0.009764
alternative hypothesis: true location shift is not equal to 0
Na verdade a
,b
, e d
não
satisfazem as pressuposições do teste T (n>30) e então não deveríamos ter usado e
teste T em nenhum dos exemplos.
?t.test
Note o parâmetro mu
teste T - pareado e não pareado https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/t.test
Wilcoxon sum rank (não pareado) e signed rank (pareado) https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/wilcox.test
ANOVA (também chamado de 1-way anova) veja esse blog
Repeated ANOVA (também chamado de within-subject ANOVA) veja esse blog (Note que não é tão fácil fazer repeated ANOVA em R
Kruskal (ANOVA não paramétrico) https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/kruskal.test
Friedman (repeated ANOVA não paramétrico) https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/friedman.test
https://machinelearningmastery.com/statistical-hypothesis-tests-in-python-cheat-sheet/
A maioria das aulas de estatistica no Youtube que eu conheco nao seguem a abordagem de fonte de dados que eu usei acima. Eles usam mais frequentemente a ideia de comparar um conjunto de medidas com 1 valor apenas (que eu menciono apenas brevemente). Mas há vários vides sobre isso e voce certamente aprenderá algo útil neles.
Um canal do Youtube sobre estatistica e aprendizado de maquina
Uma aula que usa as tableas de testes como as minhas mas inclui uma linha a mais (dados binarios). Mas o sotaque do apresentador é bem forte.
variável dependente - a variável que é o que voce esta interessado e esta medindo
variável independente - variavies de cada dado que voce acha que são importantes mas que não é o que voce esta interessado
Estamos interessados nesta pagina apenas nos casos onde a variável dependente é numerica (ou razão).
Variável dependente binaria também aparece de vez em quando em computação
No caso do teste T e do Wilcoxon sum rank (nao pareado) só há uma variável independente, categorica e com 2 possíveis valores (meu-programa e a-competição)
no caso do Anova e do Kruscal-Wallis, so ha uma variável independente categorica com mais de 2 valores.
no caso de um problema pareado, há 2 variáveis independentes. Uma com 2 ou poucos valores (os grupos) e uma com varios valores que indica cada par. Essa variável que indica o pareamento é de vez em quando chamada de variável de identificação (id)