Рассчитать и вывести отклонение точек от модели
Есть данные по ежегодным измерениям в фиксированных точках таблица.
Период с 1980х по н.в. с пропусками некоторых лет, точек измерений 925, но в некоторые годы есть точки без измерений.
Создал корреляционную матрицу по годам и оставил ячейки с R > 0,7.
acc = pd.read_excel('111.xlsx').round()
acc = acc.set_index('point')
acc = acc.corr().round(2)
acc = acc[(acc < -0.7 ) | (acc > 0.7) & (acc != 1)]
matrix = np.triu(acc)
plt.figure(figsize = (21,12), dpi = 100)
sns.heatmap(acc, center = 0.55, cmap = 'Blues',
annot = True, cbar= False, linewidth=.5, linecolor = 'black', mask=(matrix))
plt.show()
Вывод координат ячеек и значений R из матрицы:
acc = acc.abs().unstack().dropna(axis = 0).sort_values(ascending=False)
Выводятся 268 ячеек, хотя из-за mask в sns.heatmap в матрице их показана половина - 134.
Как для каждой заданной пары лет с R > 0,7 вывести уравнение регрессии и отклонение от модели для каждой точки измерений?
Под моделью имею в виду линейную регрессию. Пример графика для 1998 и 2001 годов.
def regr(x, y):
x = acc[x]
y = acc[y]
sns.regplot(x, y)
Попытка найти отклонение через OLS c таким кодом и подстановкой лет без пропусков в данных (2020 - 2023 годы) проходит.
def regr(x, y):
x = acc[x]
y = acc[y]
x = sm.add_constant (x)
model = sm. OLS (y, x). fit ()
print(model. summary ())
res = model. resid
print(res)
regr(2022,2023)
Если в regr() подставить годы с пропусками, то появляется ошибка "MissingDataError: exog contains inf or nans". Как в этом случае выкинуть из расчетов точку с пропусками?