#python #pandas #numpy
#python #pandas #numpy
Вопрос:
У меня есть фрейм данных со столбцом зрелости и столбцом доходности (оба с плавающей точкой), и я пытаюсь вычислить кривую Нельсона Сигела Свенссона (NSS).
Я использую:
from nelson_siegel_svensson import NelsonSiegelSvenssonCurve
from nelson_siegel_svensson.calibrate import calibrate_nss_ols
y = df['yield']
t = df['maturity']
curve, status = calibrate_nss_ols(t, y)
assert status.success
print(curve)
И я получаю:
повысить значение ошибки значения (‘все входные массивы должны иметь одинаковую форму’)
Что, по-видимому, происходит, когда nelson_siegel_svensson пытается ссылаться на numpy с помощью:
return np.stack([constant, factor1, factor2, factor3]).transpose()
Я дважды проверил, и мои массивы y и t имеют одинаковые размеры.
Я прочитал кое-что в Интернете о попытке np.column_stack , но поскольку NSS — это не мой код, я не уверен, куда я должен его добавить или зачем он мне нужен.
Комментарии:
1.
stack
требуется, чтобы все эти 4 массива имели одинаковую форму. Но без полной обратной трассировки (и, возможно, просмотраnelson...
исходного кода) мы не сможем отследить эти массивы до ваших аргументов.2. Что
nelson...
говорится в документах об аргументахt
andy
? Чего он ожидает? массивы numpy с определенными размерами? Все ли в порядке с PandasSeries
(который является вашимy
иt
)? На самом деле это может быть использованиеt.values
etc. Имейте в виду, что немногие, если вообще кто-либо из нас, использовалиnelson_siegel_svensson
. Я даже не знаю его источника. (и нет соответствующегоtag
).3. ожидается, что t и y будут массивами numpy, в примере на pypi они имеют одинаковую длину, чего я и ожидал бы от кривой доходности. Вывод должен выглядеть следующим образом, т.Е. Только Одно значение для каждого из constant, factor1, factor2, factor3 NelsonSiegelCurve(constant= 0.04201739383636799, factor1 = -0.031829031569430594, factor2 = -0.026797319779108236, factor3 = 1.7170972656534174)
4. Пожалуйста, скопируйте / вставьте полную трассировку ошибок (а не только окончательную ошибку), чтобы люди, которые хотят помочь, могли это сделать.
5. Спасибо. Все отсортировано. Мне просто нужно: