Scipy Cubicspline против реальной статистики с использованием Excel Spline

В настоящее время я использую некоторые интерполяции (интерполяции кубических сплайнов) на python и excel. Учитывая ограничения на то, как некоторые данные должны быть отображены и получены, мне нужно запустить кубическую сплайн-интерполяцию на python для некоторых данных и использовать надстройку из «Реальная статистика с использованием Excel» для некоторых других.

Однако в качестве теста я попытался выполнить интерполяцию кубическим сплайном, используя одни и те же данные для обоих, и в итоге получил разные результаты.

new_df_expanded.interpolate(method='CubicSpline')

так я извлекаю метод CubicSpline из pandas, который, насколько я понимаю, использует библиотеку Scipy для выполнения CubicSpline.

https://www.real-statistics.com/other-mathematical-topics/spline-fitting-interpolation/

имеет функцию под названием Spline(), где мне просто нужно ввести массивы с точками данных, и она автоматически запустит интерполяцию.

Есть ли какая-то логическая разница между тем, как они оба запускают сплайновые интерполяции?


person joel.tan    schedule 17.03.2021    source источник
comment
Можете ли вы обновить свой вопрос, чтобы показать (а) ваши тестовые данные для Excel, (б) формулы Excel, которые вы используете для тестовых данных, (в) ваши тестовые данные для Python, (г) код Python, который вы используете на тестовых данных и (e) результаты, которые показывают разницу между Excel и Python.   -  person xidgel    schedule 17.03.2021
comment
@xidgel Мне действительно удалось решить проблему. Метод интерполяции pandas фактически использует метод интерполяции из scipy, который по умолчанию устанавливает граничное условие «не узел». Это делает так, что первый и второй сегменты на конце кривой являются одним и тем же полиномом. Чтобы сделать его совместимым с логикой надстройки Excel, вам нужно изменить «bc_type» на «натуральный», чтобы вторая производная на концах кривой была равна нулю.   -  person joel.tan    schedule 19.03.2021


Ответы (1)


Я действительно смог решить проблему. Метод интерполяции pandas фактически использует метод интерполяции из scipy, который по умолчанию устанавливает граничное условие «не узел». Это делает так, что первый и второй сегменты на конце кривой являются одним и тем же полиномом. Чтобы сделать его совместимым с логикой надстройки Excel, вам нужно изменить «bc_type» на «натуральный», чтобы вторая производная на концах кривой была равна нулю.

person joel.tan    schedule 16.04.2021