- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究一个简单的函数来拟合 yield 曲线。我正在使用 Scipy.interpolate.UnivariateSpline 来完成任务。该函数应返回特定时间间隔(到期日)的 yield 值。
这是我编写的简单函数:
def curve_fit(spot_yields_df, a):
x = spot_yields_df['INTERVAL']
y = spot_yields_df['SPOT']
s1 = inter.UnivariateSpline(x, y, s=0.5)
plt.plot(x, y, marker="o", markerfacecolor='None', markersize=5, linestyle='None')
plt.plot(x, s1(x))
plt.show()
return s1(a)
在下面的示例中作为输入提供的 datafrme 如下所示:
spot_yields_df
Out[53]:
CURVE_ID ISIN REL_DATE SPOT INTERVAL
0 crv_sagb AU316223 2019-05-31 6.84543548187739 0.263014
1 crv_sagb ED957814 2019-05-31 7.41912841796875 0.627397
2 crv_sagb EF656651 2019-05-31 7.01629638671875 1.835616
3 crv_sagb EJ235944 2019-05-31 7.58026123046875 3.750685
4 crv_sagb CP507394 2019-05-31 9.12445068359375 7.564384
5 crv_sagb EJ750004 2019-05-31 9.56756591796875 10.679452
6 crv_sagb EI258596 2019-05-31 9.56085205078125 11.756164
7 crv_sagb EJ750009 2019-05-31 10.1046752929688 12.843836
8 crv_sagb EK773288 2019-05-31 10.2053833007813 15.758904
9 crv_sagb EF556585 2019-05-31 10.2926635742188 16.846575
10 crv_sagb EJ750019 2019-05-31 10.7022094726562 17.684932
11 crv_sagb EK773306 2019-05-31 10.8700561523437 20.684932
12 crv_sagb EI258592 2019-05-31 10.2859497070313 21.764384
13 crv_sagb EJ749864 2019-05-31 10.8834838867188 24.687671
14 crv_sagb EJ235914 2019-05-31 10.0711059570313 28.767123
这是绘图,表明该功能运行良好。
例如,根据图表,s1(30) 和 curve_fit(spot_yields_df, 30) 分别应返回 10 左右的值。而它返回 6 左右的值:
curve_fit(spot_yields_df, 30)
Out[52]: array(6.84325277)
如何返回与图表显示的内容相对应的值。非常感谢任何帮助。
最佳答案
看起来问题不在于程序,而在于插值方法本身(这也意味着问题更适合 cross-validated ,但有时你无法提前知道)。
如果您使用平滑因子(在您的情况下,s=0.5
是平滑因子,请参阅 the docs ),曲线不会完全触及数据集中的每个点。
如果您希望它命中每个点,请尝试设置 s=0
- 在这种情况下,外推到 30 将是从两个最高点的线性外推(您可以验证这一点) 。
或者,您可以设置 s=None
(或者只是不为其填充值,这是默认值),在这种情况下,该函数将为 s
选择一个合理的值> - 从我这边运行代码来看,这看起来确实合理(并且产生的值为 9.87195):
关于python - 访问 UnivariateSpline 曲线上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56932173/
我正在研究一个简单的函数来拟合 yield 曲线。我正在使用 Scipy.interpolate.UnivariateSpline 来完成任务。该函数应返回特定时间间隔(到期日)的 yield 值。
我有一堆代表 sigmoidal 函数的 x, y 点: x=[ 1.00094909 1.08787635 1.17481363 1.2617564 1.34867881 1.43562
我正在使用 UnivariateSpline 为我拥有的一些数据构造分段多项式。然后我想在其他程序(C 或 FORTRAN 中)中使用这些样条,因此我想了解生成的样条背后的方程式。 这是我的代码: i
我正在尝试将一些 MatLab 代码移植到 Scipy,并且我尝试了 scipy.interpolate 中的两个不同函数,interp1d和 UnivariateSpline . interp1d
我尝试使用 SciPy 的平滑单变量样条 from scipy.interpolate import UnivariateSpline spl = UnivariateSpline(x, y) 我收到
我在尝试使用 UnivariateSpline 函数插入数据时遇到了一个奇怪的问题。通过所有点进行插值 (s=0) 和样条函数不会给出整个数据集的结果。 s>=1 的结果也很奇怪。因为我认为它与我正在
scipy UnivariateSpline 不允许多值 X。我读到这已更改,但似乎对我不起作用。我用的是最新版本,刚刚用pip尝试下载,说我有最新版本。 我曾尝试将 s(平滑)从 0 和 None(
我正在尝试使用 UnivariateSpline 函数为某些数据(原始布拉格峰)生成拟合。这是我的代码: import matplotlib.pyplot as plt from scipy impo
我正在尝试使用 SciPy 的 UnivariateSpline 来定位曲线上的一个点。不幸的是,我的结果是 nan。 这是一个最小的例子: from scipy.interpolate import
我无法让 scipy.interpolate.UnivariateSpline 在插值时使用任何平滑。基于function's page以及一些previous posts ,我相信它应该使用 s 参
我正在将用 R 编写的脚本移植到 Python。在 R 中,我使用 smooth.spline,在 Python 中,我使用 SciPy UnivariateSpline。它们不会产生相同的结果(即使
我有一个实验数据,我正在尝试使用 scipy 中的 UnivariateSpline 函数拟合曲线。数据如下: x y 13 2.404070 12 1.588134 1
当 spline = UnivariateSpline(x, y, bbox=[0,1], k=3.0,s=0.0) 对比 spline = UnivariateSpline(x, y, k=3.0,
scipy.interpolate.splrep(x, y, w=None, xb=None, xe=None, k=3, task=0, s=None, t=None, full_output=0,
我正在使用 scipy.interpolate.UnivariateSpline平滑地插入大量数据。效果很好。我得到一个像函数一样运行的对象。 现在我想保存样条点以备后用,并在不需要原始数据的情况下在
我是一名优秀的程序员,十分优秀!