Reproduzindo tabelas estatísticas

June 5, 2011
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

O objetivo desse “post” é dúbio! Vamos mostrar como reproduzir as tabelas estatísticas dos livros no R.

Mas para quê reproduzir as tabelas que estão nos livros? Primeiro vamos ver como fazer…

Primeiro pegue o seu livro de estatística experimental de cabeceira, e procure (no final, quase certamente) a tabela de F-Snedecor. Aquela mesma que agente usa para ver se um teste F< é significativo ou não! Se estivermos diante da mesma tabela teremos algo como (supondo que estejamos usando um nível de significância \alpha de 0,01, ou seja a tabela de 1%):

Resumo da Tabela dos Quantis da Distribuição F-Snedecor
gl_2 / gl_1 1 2 3 \cdots 10
1 4052,18 4999,50 5403,35 \cdots 6055,85
2 98,50 99,00 99,17 \cdots 99,40
3 34,12 30,82 29,46 \cdots 27,23
\vdots \vdots \vdots \vdots \ddots \vdots
100 6,90 4,82 3,98 \cdots 2,50

Para reproduzir essa tabela fazemos: criamos um vetor com os ditos numeradores (com os graus de liberdade) da fonte de variação a ser testada na análise de variância; depois criamos outro vetor com os graus de liberdade do denominador (o erro na maioria das vezes); com esses dois vetores usamos a função expand.grid() criando uma planilha com as margens da tabela de dupla entrada.

Isso feito (fácil né?). Agora obtemos os valores críticos (F_{tab}), que nada mais são que quantis da distribuição F-Snedecor. Com o vetor dos ditos F_{tab} concatenado a planilha que criamos anteriormente conseguimos “reproduzir” ipsis literis, as tabelas dos livros usando uma combinação das funções with() e tapply(), veja no CMR que reproduz a tabela de F!


alpha <- .01
numerador <- 1:10
denominador <- c(1:30, 35, 40, 45, 50, 100) 

margens <- expand.grid(numerador = numerador, # margens - tabela
                       denominador = denominador)

probs <- round(qf((1 - alpha),
                  margens$numerador,
                  margens$denominador), # quantil da dist. F-Snedecor
               dig = 2) # arredondamento

class <- transform(cbind(margens, probs), # planilha com as margens
                   numerador = factor(numerador),
                   denominador = factor(denominador)) # transf. em fatores

tabela <- with(class,
               tapply(probs,
                      list(denominador, numerador),
                      sum)) # construção da tabela de dupla entrada

Você pode pensar “- Agora ficou fácil, nem preciso mais do livro, calculo os meus próprios F tabelados!”. Por trás desse “sentimento” de indepêndencia vamos agora fazer o mesmo para a tabela de \chi^2 (Veja o CMR). Não vamos nos alongar, mas acho que concordamos que isso é facilmente extrapolável para outras tabelas estatísticas do final dos livros.


gl <- c(1:30, 40, 50, 60, 120, 240, 480, 960)
nivel.prob <- sort(c(.005, .01, .025, .05, .1,
                   seq(.25, .75, .25), .9, .95, .975, .990, .995),
                   decreasing = TRUE) 

margens <- expand.grid(gl = gl, alpha = nivel.prob) # margens - tabela de dupla entrada

chi2 <- qchisq((1 - margens$alpha),
               margens$gl) # quantil da distribuição de chi-quadrado

class <- transform(cbind(margens, chi2), # construção da planilha de valores
                   gl = factor(gl),
                   alpha = factor(alpha)) # transformação em fatores

tabela <- round(with(class,
               tapply(chi2,
                      list(gl, alpha),
                      sum)), dig = 3) # tabela de dupla entrada

Compare o que você obteve no R com a tabela do seu livro, vou reproduzir um “pedaço” dela aqui, caso você não esteja com seu livro:

Resumo da Tabela dos Quantis da Distribuição \chi^2
gl / \alpha 0,005 0,010 0,025 \cdots 0,995
1 7,879 6,635 5,024 \cdots <0,000
2 10,597 9,210 7,78 \cdots 0,010
3 12,838 11,345 9,348 \cdots 0,072
\vdots \vdots \vdots \vdots \ddots \vdots
960 1076,621 1064,867 1047,760 \cdots 850,891

Agora a lógica desse “post”: na verdade, reproduzir as tabelas foi só um subterfúgio. Até porque não tem coisa mais torpe que isso (as tabelas sempre continuarão nos livros). E principalmente, na verdade, elas, hoje em dia, perderam um pouco (para não dizer todo) o propósito! Antes de você ou seu professor mais ortodoxo de estatística me apedrejar, deixe eu terminar…!

Antigamente, obter esse valores de F_{tab} eram difíceis de serem obtidos! Isso envolve integração e cálculo “pesado”. Assim, é extremmamente louvável que algumas pessoas tiveram a intenção de fazer essas contas e construir essas tabelas. Mas hoje em dia, isso é facilmente obtido pelo computador (da mesma forma que fizemos!). E principalmente, abre-se um “leque” para nós, afinal não precisamos mais ficar “presos”, aos valores de \alpha das tabelas! Basta apenas que entendamos a relação com as probabilidades de erros…

Essa figura mostra as probabilidades de erro tipo I, tipo II e o poder do teste. Erro tipo I é o erro ao rejeitar H_0 quando, na realidade, H_0 é verdadeira. A probabilidade de cometer este erro do tipo I é designada por \alpha (nível de significância). O erro do tipo I equivale a concluir que o tratamentos diferem quando na verdade eles diferem.

A probabilidade de cometermos o erro tipo I é de \alpha e de cometermos o erro tipo II é \beta. Em um teste de hipótese ambas essas probabilidades devem ser mínimas. Mas em geral se “escolhe” pela diminuição do erro tipo I, que é feita manipulando-se \alpha.

A maioria do programas hoje em dia (incluindo o tema do Ridículas) apresentam além dos asteríscos da significância do teste F a estatística do p-valor que é nada mais nada menos que o complemento do da probabilidade do erro tipo I.


Tags: , , , ,

Comments are closed.