a1 = |
n ∑
i = 1
|
(xi − |
^
μ
|
) (xi−1 − |
^
μ
|
) |
n ∑
i = 1
|
(xi − |
^
μ
|
) (xi − |
^
μ
|
) |
|
|
- Function: double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t stride, const size_t n, const double mean)
Essa função calcula a autocorrelação lag-1 do conjunto de dados
data usando o valor fornecido da média aritmética simples mean.
21.5 Covariância
- Function: double gsl_stats_covariance (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n)
Essa função calcula a covariância dos conjuntos de dados data1 e
data2 que devem ambos serem do mesmo comprimento n.
covar = |
1
(n − 1)
|
|
n ∑
i = 1
|
(xi − |
^
x
|
) (yi − |
^
y
|
) |
|
- Function: double gsl_stats_covariance_m (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, const double mean1, const double mean2)
Essa função calcula a covariância dos conjuntos de dados data1 e
data2 usando os valores fornecidos das média aritmética simples, mean1 e
mean2. Essa função é útil se você já tem calculado as médias aritméticas simples de
data1 e data2 e deseja evitar recalcular essas duas médias.
21.6 Correlação
- Function: double gsl_stats_correlation (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n)
Essa função calcula eficientemente o coeficiente de correlação de Pearson
entre os conjuntos de dados data1 e data2 que devem ambos erem de
mesmo comprimento n.
r = |
cov(x, y)
|
= |
1
n−1
|
|
∑
| (xi − |
^
x
|
) (yi − |
^
y
|
) |
|
|
|
- Function: double gsl_stats_spearman (const double data1[], const size_t stride1, const double data2[], const size_t stride2, const size_t n, double work[])
Essa função calcula o coeficiente de correlação de posto de Spearman entre
os conjuntos de dados data1 e data2 que devem ser ambos de mesmo
comprimento n. Espaço de trabalho adicional de tamanho 2*n é requerido em
work. A correlação de posto de Spearman entre vetores x e
y é equivalente à correlação de Pearson entre os vetores
rankeados x_R e y_R, ondes os postos são definidos para serem as
médias das posições de um elementos na ordem ascendente dos valores.
21.7 Amostras Ponderadas
As funções descritas nessa seção permitem o cálculo
estatístico para amostras ponderadas. As funções aceitam um vetor estático de
amostras, x_i, com pesos associados, w_i. Cada amostra
x_i é considerada como tendo sido desenhada a partir de uma distribuição de
Gauss com variância \sigma_i^2. O peso da amostra
w_i é definido como o recíproco dessa variância, w_i =
1/\sigma_i^2. Ajustar um peso para zero corresponde a remover uma
amostra de um conjunto de dados.
- Function: double gsl_stats_wmean (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
Essa função retorna a média ponderada do conjunto de dados data com
salto stride e comprimento n, usando o conjutno de pesos w
com salto wstride e comprimento n. A média ponderada é definida como,
- Function: double gsl_stats_wvariance (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
Essa função retorna a variância estimada do conjunto de dados data
com salto stride e comprimento n, usando o conjunto de pesos
w com salto wstride e comprimento n. A variância
estimada de um conjunto de dados ponderados é calculado como,
|
^
σ
|
2
|
= |
|
|
∑
| wi (xi − |
^
μ
|
)2 |
| Note que essa expressão se reduz a uma variância sem pesos com o
fator familiar 1/(N-1) quando houverem N pesos iguais
não nulos.
- Function: double gsl_stats_wvariance_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean)
Essa função retorna a variância estimada do conjunto de dados ponderados
data usando a média ponderada wmean.
- Function: double gsl_stats_wsd (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
O desvio padrão é definido como a raíz quadrada da variância.
Essa função retorna a raíz quadrada da correspondente função de
variância gsl_stats_wvariance acima.
- Function: double gsl_stats_wsd_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean)
Essa função retorna a raíz quadrada da correspondente função de
variância gsl_stats_wvariance_m acima.
- Function: double gsl_stats_wvariance_with_fixed_mean (const double w[], size_t wstride, const double data[], size_t stride, size_t n, const double mean)
Essa função calcula uma estimativa imparcial da variância do conjunto de dados
com pesos data quando a média da população mean da distribuição
base for conhecida a priori. Nesse caso o valor estimado para
a variância substitui a média da amostra \Hat\mu pela conhecida
média da população \mu,
- Function: double gsl_stats_wsd_with_fixed_mean (const double w[], size_t wstride, const double data[], size_t stride, size_t n, const double mean)
O desvio padrão é definido como a raíz quadrada da variância.
Essa função retorna a raíz quadrada da correspondente função de
variância acima.
- Function: double gsl_stats_wtss (const double w[], const size_t wstride, const double data[], size_t stride, size_t n)
- Function: double gsl_stats_wtss_m (const double w[], const size_t wstride, const double data[], size_t stride, size_t n, double wmean)
Essas funções retornam a soma de quadrados (TSS) total ponderada dos dados contidos em
data sobre a média ponderada. Para gsl_stats_wtss_m o
valor fornecido pelo usuário de wmean é usada, e para gsl_stats_wtss
A soma de quadrados (TSS) total ponderada é calculada usando gsl_stats_wmean .
- Function: double gsl_stats_wabsdev (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
Essa função calcula o desvio absouluto ponderado a partir da média
ponderada dos dados contidos em data. O desvio absoluto a partir da média aritmética simples é definido como,
- Function: double gsl_stats_wabsdev_m (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean)
Essa função calcula o desvio absoluto do conjunto de dados ponderados
data sobre a fornecida média ponderada wmean.
- Function: double gsl_stats_wskew (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
Essa função calcula a assimetria ponderada do conjunto de dados data.
skew = |
∑
| wi ((xi − |
^
x
|
)/ |
^
σ
|
)3 |
|
|
|
- Function: double gsl_stats_wskew_m_sd (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean, double wsd)
Essa função calcula a assimetria ponderada do conjunto de dados data
usando os valores fornecidos de média ponderada e desvio padrão
ponderado, wmean e wsd.
- Function: double gsl_stats_wkurtosis (const double w[], size_t wstride, const double data[], size_t stride, size_t n)
Essa função calcula a curtose ponderada do conjunto de dados data.
kurtosis = |
∑
| wi ((xi − |
^
x
|
)/ |
^
σ
|
)4 |
|
− 3 |
|
- Function: double gsl_stats_wkurtosis_m_sd (const double w[], size_t wstride, const double data[], size_t stride, size_t n, double wmean, double wsd)
Essa função calcula a curtose ponderada do conjunto de dados data
usando os valores fornecidos de média ponderada e desvio padrão
ponderado, wmean e wsd.
21.8 Valores de Máximo e Mínimo
As seguintes funções encontram os valores maior e menor de um
conjunto de dados (ou seus índices). Se os dados possuem NaN s (45) então um
NaN irá ser retornado, uma vez que os valores maior e menor são
indefinidos para NaN . Para funções que retornam um índice, a localização do
primeiro NaN no vetor estático é retornada.
- Function: double gsl_stats_max (const double data[], size_t stride, size_t n)
Essa função retorna o maior valor em data, um conjunto de dados de
comprimento n com salto stride. O maior valor é definido
como o valor do elemento x_i que satisfaz x_i >= x_j para todo j.
Se você deseja ao invés de encontra o elementos com o maior módulo
absoluto você irá precisar aplicar fabs ou abs a seus dados
antes de chamar essa função.
- Function: double gsl_stats_min (const double data[], size_t stride, size_t n)
Essa função retorna o menor valor em data, um conjunto de dados de
comprimento n com salto stride. O menor valor é definido
como o valor do elemento x_i que satisfaz x_i <= x_j para todo j.
Se você deseja ao invés encontrar o elemento com o menor módulo
absoluto você irá precisar aplicar fabs ou abs a seus dados
antes de chamar essa função.
- Function: void gsl_stats_minmax (double * min, double * max, const double data[], size_t stride, size_t n)
Essa função encontra ambos o maior e o menor valor min,
max em data em um passo apenas.
- Function: size_t gsl_stats_max_index (const double data[], size_t stride, size_t n)
Essa função retorna os índices do maior valor em data, um
conjunto de dados de comprimento n com salto stride. O maior valor é
definido com o valor do elemento x_i que satisfaz
x_i >= x_j para todo j. Quando houverem muitos maiores elementos
iguais então o primeiro é escolhido.
- Function: size_t gsl_stats_min_index (const double data[], size_t stride, size_t n)
Essa função retorna os índices do menor valor em data, um
conjunto de dados de comprimento n com salto stride. O menor valor
é definido como o valor do elementos x_i que satisfaz
x_i >= x_j para todo j. Quando houverem muitos menores
elementos iguais então o primeiro é escolhido.
- Function: void gsl_stats_minmax_index (size_t * min_index, size_t * max_index, const double data[], size_t stride, size_t n)
Essa função retorna os índices min_index, max_index dos
menores e maiores valores em data em um passo apenas.
21.9 Medianas e Percentís
As funções de mediana e percentís descritas nessa seção trabalham sobre
dados ordenados. Por conveniência usamos quantís, medidos sobre uma escada
de 0 a 1, ao invés de percentís (que usam uma escala de 0 a 100).
- Function: double gsl_stats_median_from_sorted_data (const double sorted_data[], size_t stride, size_t n)
Essa função retorna o valor da mediana de sorted_data, um conjunto de dados
de comprimento n com salto stride. Os elementos do vetor estático
devem estar em ordem ascendente numérica. Não existe verificação para ver
se os dados estão ordenados, de forma que a função gsl_sort sempre
deve ser usada primeiramente para garantir a ordenação requerida.
Quando conjunto de dados tiver um número ímpar de elementos a mediana é o valor
do elemento (n-1)/2. Quando o conjunto de dados tiver um número ímpar de
elementos a mediana é a média aritmética simples dos dois valores mais próximos da posição na qual deveria estar o valor de mediana,
os elementos (n-1)/2 e n/2. Uma vez que o algoritmo para
o cálculo da mediana envolve interpolação essa função sempre retorna
um número em ponto flutuante, mesmo para dados do tipo inteiro.
- Function: double gsl_stats_quantile_from_sorted_data (const double sorted_data[], size_t stride, size_t n, double f)
Essa função retorna um valor de quantil de sorted_data, um
vetor estático de precisão dupla de comprimento n com salto stride. Os
elementos do vetor estático devem estar em ordem numérica ascendente. O
quantil é determindao pelo f, uma fração entre 0 e 1. Por
exemplo, para calcular o valor do 75-ésimo (septuagésimo quinto) percentil f deve ter
o valor de 0.75.
Não existe verificação para ver se os dados estão ordenados, de forma que a função
gsl_sort deve sempre ser usada primeiramente para garantir a ordenação requerida.
O quantil é encontrado por interpolação, usando a fórmula
quantile = (1 − δ) xi + δxi+1 |
| onde i é floor ((n - 1)f) e \delta is
(n-1)f - i.
Dessa forma o menor valor do evtor estático (data[0*stride] ) é fornecido por
f igual a zero, o maior valor (data[(n-1)*stride] ) é
fornecido por f igual à unidade e o valor da mediana é fornecido por f
igual a 0.5. Uma vez que o algoritmo para o cálculo dos quantís envolve
interpolação essa função sempre retorna um número em ponto flutuante, mesmo
para tipos de dados inteiros.
21.10 Exemplos
Aqui está um exemplo básico de como usar as funções estatísticas:
#include <stdio.h>
#include <gsl/gsl_statistics.h>
int
main(void)
{
double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6};
double mean, variance, largest, smallest;
mean = gsl_stats_mean(data, 1, 5);
variance = gsl_stats_variance(data, 1, 5);
largest = gsl_stats_max(data, 1, 5);
smallest = gsl_stats_min(data, 1, 5);
printf ("The dataset is %g, %g, %g, %g, %g\n",
data[0], data[1], data[2], data[3], data[4]);
printf ("The sample mean is %g\n", mean);
printf ("The estimated variance is %g\n", variance);
printf ("The largest value is %g\n", largest);
printf ("The smallest value is %g\n", smallest);
return 0;
}
O programa deve produzir a seguinte saída,
The dataset is 17.2, 18.1, 16.5, 18.3, 12.6
The sample mean is 16.54
The estimated variance is 5.373
The largest value is 18.3
The smallest value is 12.6
Aqui está um exemplo usando dados ordenados,
#include <stdio.h>
#include <gsl/gsl_sort.h>
#include <gsl/gsl_statistics.h>
int
main(void)
{
double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6};
double median, upperq, lowerq;
printf ("Original dataset: %g, %g, %g, %g, %g\n",
data[0], data[1], data[2], data[3], data[4]);
gsl_sort (data, 1, 5);
printf ("Sorted dataset: %g, %g, %g, %g, %g\n",
data[0], data[1], data[2], data[3], data[4]);
median
= gsl_stats_median_from_sorted_data (data,
1, 5);
upperq
= gsl_stats_quantile_from_sorted_data (data,
1, 5,
0.75);
lowerq
= gsl_stats_quantile_from_sorted_data (data,
1, 5,
0.25);
printf ("The median is %g\n", median);
printf ("The upper quartile is %g\n", upperq);
printf ("The lower quartile is %g\n", lowerq);
return 0;
}
Esse programa deve produzir a seguinte saída,
Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6
Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3
The median is 17.2
The upper quartile is 18.1
The lower quartile is 16.5
21.11 Referências e Leituras Adicionais
A referência padrão para quase qualquer tópico em estatística é o
multi-volume Advanced Theory of Estatísticas de Kendall e Stuart.
-
Maurice Kendall, Alan Stuart, e J. Keith Ord.
The Advanced Theory of Estatísticas (multiplos volumes)
reimpresso como Kendall’s Advanced Theory of Estatísticas.
Wiley, ISBN 047023380X.
Muitos conceitos estatísticos podem ser mais facilmente entendidos por uma aproximação
Bayesiana. O seguinte livro de Gelman, Carlin, Stern e Rubin fornecem uma
abrangência compreensível sobre o assunto.
-
Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin.
Bayesian Data Analysis.
Chapman & Hall, ISBN 0412039915.
Para físicos o Particle Data Group fornece artigos úteis de
Probabilidade e Estatística na seção “Mathematical Tools” de seu
Annual Review of Particle Physics.
-
Review of Particle Properties
R.M. Barnett et al., Physical Review D54, 1 (1996)
O Review of Particle Physics está disponível online no
sítio http://pdg.lbl.gov/.
Esse documento foi gerado em 23 de Julho de 2013 usando texi2html 5.0.
|