Месяц
Значение
10.01.2024
100
11.01.2024
150
12.01.2024
400
< /div>
теперь имейте в виду, что значения представляют собой средние дневные значения за рассматриваемый месяц.
Конечная цель — DataFrame с дневными значениями за 1 октября. С 2024 года по 31 декабря 2024 года, которые объединили среднемесячные значения в кубическую форму, но вот в чем загвоздка: ТАКИЕ среднедневные значения соответствуют исходному среднемесячному значению.
Я могу использовать метод интерполяции кубическим сплайном для создания ежедневного прогноза на основе этих значений, т.е.
Код: Выделить всё
# data has been pre processed so that monthly values are at the midpoint for each month and other dates are empty
start_date = df.index.min()
end_date = df.index.max()
date_range = pd.date_range(start=start_date, end=end_date, freq='D')
new_df = pd.DataFrame(data=date_range, columns=['Month'])
new_df.set_index('Month', inplace=True)
for col in df.columns:
cs = CubicSpline(df.dropna().index.values, df[col].dropna().values)
new_df[col] = cs(new_df.index.values)
Проблема в том, что я хочу оптимизировать результат, чтобы, когда я беру среднее значение дневных значений, они прийти к исходному месячному значению.
Я понимаю, что это может быть скорее статистический вопрос, чем вопрос кодирования. Я понимаю, ПОЧЕМУ это происходит - это потому, что средние месячные значения по обе стороны от ноября (в этом примере) не равноудалены от средней точки ноября, т. е. подъем к декабрю более крутой, поэтому истинное среднее значение было увеличено.
Есть ли оптимизация, доступная мне в scipy.interpolate или другом пакете, который может это сделать?
Подробнее здесь: https://stackoverflow.com/questions/790 ... timisation