import numpy as np
import pandas as pd
from smm_funcs import test_3_ols_metrics
# Предполагаем, что у вас уже есть:
# - df с данными
# - features – список признаков
# - train_end – дата конца обучения
# - F – функция распределения KDE
# - transform_to_R – функция преобразования y -> z
# Подготовка данных
train_df = df[df['end_month_plan'] < pd.Timestamp('2025-01-01')].copy()
X = train_df[features]
X_const = sm.add_constant(X) # добавляем константу
y = train_df['renewed_fact_rate'].values
weights = train_df['portfolio_share'].values
# Преобразование y -> z через KDE (используем F и transform_to_R)
z = transform_to_R(F, y)
# Преобразуем в pd.Series для совместимости с функцией
z_series = pd.Series(z, index=train_df.index)
X_df = pd.DataFrame(X_const, columns=['const'] + features, index=train_df.index)
weight_series = pd.Series(weights, index=train_df.index)
# Вызов функции из библиотеки
model_results = test_3_ols_metrics(
dfx=X_df,
dfy=z_series,
weight=weight_series,
pp=True # выводит таблицу с p-values и t-статистиками
)
# Доступ к результатам:
print("\nКоэффициенты модели:")
print(model_results.params.round(4))
print("\np-values:")
print(model_results.pvalues.round(4))
print("\nДоверительные интервалы (95%):")
print(model_results.conf_int().round(4))