Регрессия внутри каждой группы

Я пытаюсь запустить регрессию в каждой группе и году. Вот что я сделал:

Работает просто отлично. Однако мой реальный набор данных огромен. Есть ли способ запустить это более эффективно? Например, с помощью матрицы? Потому что я постоянно получаю следующую ошибку, и это довольно медленно.

data = pd.DataFrame({
    "Year": [2000, 2000, 2000, 2000, 2001, 2001, 2001, 2001],
    "Group": ["A", "A", "B", "B", "A", "A", "B", "B"],
    "ID": [1, 2, 3, 5, 2, 1, 2, 3],
    "Value 1": [40, 20, 30, 45, 22, 34, 11, 88],
    "Value 2": [3, 22, 11, 55, 5, 9, 4, 15],
})

def func(row, var):
    X = row[var]  # independent variable
    y = row["Value 2"]  # dependent variable
    X = sm.add_constant(X)
    row["Residual"] = sm.OLS(y, X, missing="drop").fit().resid
    return row

data.groupby(["Year", "Group"], group_keys=False).apply(func, var="Value 1")
Самуил
Вопрос задан10 июня 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.