Итак, мне интересно, как лучше всего использовать полярные поля в сочетании с другими инструментами для выполнения более сложных операций, таких как регрессия/подбор модели.
Чтобы быть более конкретным, я приведу пример, включающий линейную регрессию.
Предположим, у меня есть полярный фрейм данных со столбцами day, y, x1 и x2, и я хочу сгенерировать ряд, который представляет собой остаток регрессии y по группам x1 и x2 по дням. Я включил следующий пример кода и рассказал, как его можно решить с помощью панд и статистических моделей. Как я могу получить тот же результат с наибольшей эффективностью, используя идиоматические поляры?
Код: Выделить всё
import pandas as pd
import statsmodels.api as sm
def regress_resid(df, yvar, xvars):
result = sm.OLS(df[yvar], sm.add_constant(df[xvars])).fit()
return result.resid
df = pd.DataFrame(
{
"day": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
"y": [1, 6, 3, 2, 8, 4, 5, 2, 7, 3],
"x1": [1, 8, 2, 3, 5, 2, 1, 2, 7, 3],
"x2": [8, 5, 3, 6, 3, 7, 3, 2, 9, 1],
}
)
df.groupby("day").apply(regress_resid, "y", ["x1", "x2"])
# day
# 1 0 0.772431
# 1 -0.689233
# 2 -1.167210
# 3 -0.827896
# 4 1.911909
# 2 5 -0.851691
# 6 1.719451
# 7 -1.167727
# 8 0.354871
# 9 -0.054905
Подробнее здесь: https://stackoverflow.com/questions/748 ... roupby-con