Uma biblioteca de estatística para fins acadêmicos do IBMEC.
Project description
Biblioteca IBMEC Stats
Um pacote Python com funções fundamentais para Estatística, Inferência Estatística e Métodos de Previsão, com visualizações prontas usando seaborn.
Este projeto contém implementações de funções estatísticas para uso na disciplina de Inferência Estatística Métodos de Previsão do IBMEC/SP.
Instalação
pip install ibmecstats
Requisitos
Este pacote utiliza:
- numpy, pandas, scipy
- matplotlib, seaborn
- statsmodels (para suavização exponencial e ACF/PACF)
Quickstart
import pandas as pd
import ibmecstats as ibs
ibs.set_theme()
x = [10, 11, 10, 12, 9, 10, 11, 10, 200] # tem outlier :)
# Descritiva
print(ibs.summary_stats(x))
print(ibs.freq_table(["A","A","B","C","A"], normalize=True))
out = ibs.iqr_outliers(x)
print(out[out["is_outlier"]])
# Inferência
print(ibs.ci_mean(x, alpha=0.05, method="t"))
print(ibs.t_test_1samp(x, mu0=10, alternative="two-sided"))
# Gráficos
ibs.plot_distribution(x, kde=True, title="Distribuição de x")
ibs.plot_qq(x, title="Q-Q plot")
API (Referência)
1) Estatística Descritiva (ibmecstats.descritiva)
summary_stats(x, percentiles=(...), ddof=1) -> pd.Series
Resumo de estatísticas:
- n, média, desvio-padrão, min/max
- quantis informados
- assimetria (skew) e curtose
Exemplo
ibs.summary_stats(x, percentiles=(0.25, 0.5, 0.75))
freq_table(x, normalize=False, dropna=False, sort=True) -> pd.DataFrame
Tabela de frequência para variáveis categóricas.
Parâmetros
normalize: adiciona proporçãodropna: inclui/exclui NaNsort: ordena por frequência
Exemplo
ibs.freq_table(["A","A","B"], normalize=True)
iqr_outliers(x, k=1.5) -> pd.DataFrame
Detecta outliers pela regra do IQR.
Parâmetros
k: multiplicador do IQR (1.5 padrão)
Exemplo
ibs.iqr_outliers(x, k=1.5)
correlation_matrix(df, method="pearson") -> pd.DataFrame
Matriz de correlação para colunas numéricas.
method
"pearson","spearman","kendall"
Exemplo
ibs.correlation_matrix(df, method="spearman")
2) Inferência Estatística (ibmecstats.inferencia)
ci_mean(x, alpha=0.05, method="t") -> (lower, upper)
IC para a média.
method="t": t-student (recomendado)method="z": normal
Exemplo
ibs.ci_mean(x, alpha=0.01, method="t")
ci_proportion(k, n, alpha=0.05, method="wilson") -> (lower, upper)
IC para proporção.
method
"wald"(clássico)"wilson"(recomendado)"agresti-coull"
Exemplo
ibs.ci_proportion(k=42, n=100, method="wilson")
Testes t
t_test_1samp(x, mu0, alternative="two-sided") -> dict
Teste t de 1 amostra.
alternative
"two-sided","less","greater"
Exemplo
ibs.t_test_1samp(x, mu0=10, alternative="greater")
t_test_ind(x1, x2, equal_var=False, alternative="two-sided") -> dict
Teste t de 2 amostras independentes.
equal_var=Falseusa Welch (recomendado)
t_test_paired(x1, x2, alternative="two-sided") -> dict
Teste t pareado.
Proporção (teste z)
z_test_proportion(k, n, p0, alternative="two-sided", continuity=True) -> dict
Teste z para proporção.
Qui-quadrado
chi2_gof(observed, expected=None) -> dict
Teste de aderência (GOF).
expected=Noneassume equiprovável.
chi2_independence(table, correction=True) -> dict
Teste de independência em tabela de contingência.
ANOVA
anova_oneway(*groups) -> dict
ANOVA de um fator.
Normalidade
normality_tests(x) -> pd.DataFrame
Retorna tabela com:
- Shapiro-Wilk
- Anderson-Darling (normal)
- KS vs N(mu, sigma) (observação: KS com parâmetros estimados não é Lilliefors)
Bootstrap
bootstrap_ci(x, statfunc=np.mean, alpha=0.05, n_boot=10000, random_state=None) -> dict
IC bootstrap percentil para qualquer estatística.
3) Métodos de Previsão (ibmecstats.previsao)
Todos retornam um ForecastResult com:
yhat: previsão (pd.Series)fitted(quando aplicável)residuals(quando aplicável)info: metadados do modelo
naive_forecast(y, h, seasonal_period=None) -> ForecastResult
- sem sazonalidade: repete último valor
- com sazonalidade: repete o último ciclo sazonal
drift_forecast(y, h) -> ForecastResult
Método drift (tendência linear entre o primeiro e último ponto).
moving_average_forecast(y, h, window=3) -> ForecastResult
Média móvel simples.
ses_forecast(y, h, alpha=None, optimized=True) -> ForecastResult
SES (Simple Exponential Smoothing) via statsmodels.
holt_forecast(y, h, damped_trend=False, optimized=True, smoothing_level=None, smoothing_trend=None) -> ForecastResult
Holt (nível + tendência) via statsmodels.
holt_winters_forecast(y, h, seasonal_periods, trend="add", seasonal="add", damped_trend=False, optimized=True) -> ForecastResult
Holt-Winters (tendência + sazonalidade) via statsmodels.
4) Métricas de Forecast (ibmecstats.metrics)
mae(y_true, y_pred)mse(y_true, y_pred)rmse(y_true, y_pred)mape(y_true, y_pred, eps=1e-9)smape(y_true, y_pred, eps=1e-9)wape(y_true, y_pred, eps=1e-9)mase(y_true, y_pred, y_train, seasonal_period=1, eps=1e-9)forecast_accuracy(y_true, y_pred, y_train=None, seasonal_period=1) -> pd.DataFrame
Exemplo
train, test = ibs.train_test_split_time(y, test_size=0.2)
res = ibs.naive_forecast(train, h=len(test))
ibs.forecast_accuracy(test, res.yhat, y_train=train, seasonal_period=12)
5) Gráficos (ibmecstats.plots) — seaborn
set_theme(style="whitegrid", context="talk", palette="deep", font_scale=1.0, rc=None)plot_distribution(x, bins="auto", kde=True, title=None)plot_boxplot(x, title=None)plot_qq(x, dist="norm", title=None)plot_pp(x, dist="norm", title=None)plot_time_series(y, title=None)plot_acf_pacf(y, lags=40, title=None)(requer statsmodels)plot_forecast(y_train, y_test, y_pred, title=None)plot_residuals(residuals, title=None)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ibmecstats-0.1.4.tar.gz.
File metadata
- Download URL: ibmecstats-0.1.4.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ced6a9e34077ae891a28c166bf30333faf182e6674e2b4b3c71cd1f061f09aa1
|
|
| MD5 |
f7bc539bd170605751b7ea378c78b051
|
|
| BLAKE2b-256 |
c11c2892d61e05011f5df88d23d9553e102a8dea5c7b03ec2ff501e732847731
|
File details
Details for the file ibmecstats-0.1.4-py3-none-any.whl.
File metadata
- Download URL: ibmecstats-0.1.4-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b08a025755209ffe9d24ac813ca542b3c36ce42af4e65196450144c3bf51a68e
|
|
| MD5 |
866826c0e841166103fe367229d79bff
|
|
| BLAKE2b-256 |
346aa2b6d210f8eaf013cdd0dfa26cab8f5897a8fee131f0008d8e79b1b10540
|