As funções esquecidas do Oracle
Com as funções estatísticas do banco nós podemos obter desde o básico da estatística descritiva como count, max, mean, min e um standard deviation, bem como determinar a importância de relações usando testes de hipóteses, dentre os quais temos t-test, f-test ou Análise de Variância (ANOVA).
Dentre as características do Oracle Statistical Functions nós temos:
§ Estatística Descritiva
§ Teste de Hipótese
§ Análise de Correlação (Paramétrica e Não Paramétrica)
§ Funções de Rank
§ Qui-quadrado
§ Regressão Linear
§ Análise de Variância (ANOVA)
§ Teste de Distribuição
§ Funções de Agregação
§ Análise de Pareto
§ Funções Analíticas (essas até já bem usadas ultimamente)
Um fato importante é que todas essas funções não fazem parte de um pacote que deve ser pago separadamente, já estão inclusas nas edições Standard e Enterprise a partir da versão 10g e são free!
Vamos a alguns exemplos. Comecemos pelo básico, estatística descritiva. Média, Moda e Mediana:
Como fazer a média usando Oracle? Bem, aos iniciantes é normal não conhecer, mas para os já experientes programadores, DBA’s, etc, isso pode parecer básico. No entanto, não custa nada relembrar. Vamos usar os seguintes dados:
ID_PACIENTE NOME IDADE
----------- ---- -----
1 Joao Silva 50
2 Jose Souza 30
3 Maria Faria 50
4 Antonia Xavier 65
SQL> select avg(idade), median(idade), stats_mode(idade)
2 from fat_linfoma li,
3 dim_paciente pac
4 where li.id_paciente = pac.id_paciente;
AVG(IDADE) MEDIAN(IDADE) STATS_MODE(IDADE)
---------- ------------- -----------------
49 50 50
Neste exemplo temos as três medidas: média, mediana e moda da idade de pacientes com linfomas. Sempre podemos programar mais uma consulta! E se quisermos obter o resultado de qual a mediana de redução do tamanho do linfoma por grupo de tratamento, faremos o seguinte, usando os dados abaixo:
NOME TAMANHO_REDUCAO
---- ---------------
Radioterapia ,5
Quimioterapia ,25
Quimo e Radio ,25
Experimental ,5
Radioterapia ,3
SQL> select trat.nome, median(tamanho_reducao)
2 from fat_linfoma lin,
3 dim_tratamento trat
4 where lin.id_tratamento = trat.id_tratamento
5 group by trat.nome;
NOME MEDIAN(TAMANHO_REDUCAO)
---- -----------------------
Experimental ,5
Quimioterapia ,25
Quimo e Radio ,25
Radioterapia ,4
Isso que vimos são coisas simples. Agora, outro exemplo. Digamos que um pesquisador, com o conjunto de dados a seguir, gostaria de investigar o tempo de vida médio de pacientes com determinado tipo de linfoma. Estabelecemos como hipótese nula que o tempo de vida médio desses pacientes é de 12 meses e como hipótese alternativa que o tempo de vida médio dos pacientes é diferente de 12 meses. Para testar essas hipóteses, voltamos à prancheta do SQL*PLus. Neste caso a estatística faz uso dos testes de hipóteses e nós vamos usar o teste t.
NOME TEMPO_VIDA
---- ----------
Nao-Hodgkin 24
Hodgkin 12
Hodgkin 6
Nao-Hodgkin 36
Hodgkin 100
SQL> select avg(tempo_vida) media_grupo,
2 stats_t_test_one(tempo_vida, 12, ‘STATISTIC’) vlr_observado,
3 stats_t_test_one(tempo_vida, 12) p_vlr
4 from fat_linfoma;
MEDIA_GRUPO VLR_OBSERVADO P_VLR
----------- ------------- -----
35,6 1,39608315 0,235187133
Pelo resultado encontrado, não existem evidências suficientes para admitirmos que o tempo de vida médio dos pacientes com este tipo de linfoma seja diferente de 12 meses, pois o p_vlr é maior que 0,05. Para que a hipótese nula fosse considerada verdadeira, o resultado do p_vlr deveria ser menor que 5%.
Vamos dar uma olhada em como fazer o teste de qui-quadrado utilizando Oracle. Neste caso vou usar a estrutura da tabela Customer, que faz parte o owner SH, dos demos do Oracle. Este exemplo está na documentação da Oracle, quem quiser testar pode usar em casa ou no trabalho.
SQL> select stats_crosstab (cust_gender, cust_income_level, ‘CHISQ_OBS’) qui_quadrado,
2 stats_crosstab (cust_gender, cust_income_level, ‘CHISQ_SIG’) p_vlr,
3 stats_crosstab (cust_gender, cust_income_level, ‘PHI_COEFFICIENT’) coef_corr
4 from sh.customers;
QUI_QUADRADO P_VLR COEF_CORR
------------ ----- ---------
251,690705 1,2364E-47 ,067367056
Esta consulta procura determinar se existe uma relação significativa entre renda e sexo. O resultado mostra que o p_vlr é de 1,23, portanto existe uma relação significativa entre renda e sexo. Adicionalmente a nossa query fornece o valor do coeficiente de correlação, que no caso foi de 0,06.
Nenhum comentário :
Postar um comentário