Skip to main content

Uma biblioteca de estatística para fins acadêmicos do IBMEC.

Project description

IbmecStats

PyPI Python CI License

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ção
  • dropna: inclui/exclui NaN
  • sort: 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=False usa 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=None assume 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

ibmecstats-0.1.4.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ibmecstats-0.1.4-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

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

Hashes for ibmecstats-0.1.4.tar.gz
Algorithm Hash digest
SHA256 ced6a9e34077ae891a28c166bf30333faf182e6674e2b4b3c71cd1f061f09aa1
MD5 f7bc539bd170605751b7ea378c78b051
BLAKE2b-256 c11c2892d61e05011f5df88d23d9553e102a8dea5c7b03ec2ff501e732847731

See more details on using hashes here.

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

Hashes for ibmecstats-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b08a025755209ffe9d24ac813ca542b3c36ce42af4e65196450144c3bf51a68e
MD5 866826c0e841166103fe367229d79bff
BLAKE2b-256 346aa2b6d210f8eaf013cdd0dfa26cab8f5897a8fee131f0008d8e79b1b10540

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page