Рассчитать и вывести отклонение точек от модели

Есть данные по ежегодным измерениям в фиксированных точках таблица.

Период с 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". Как в этом случае выкинуть из расчетов точку с пропусками?


Ответы (0 шт):