Я пытаюсь запустить регрессию в каждой группе и году. Вот что я сделал:
Работает просто отлично. Однако мой реальный набор данных огромен. Есть ли способ запустить это более эффективно? Например, с помощью матрицы? Потому что я постоянно получаю следующую ошибку, и это довольно медленно.
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 г.