创建一个分段光滑函数,它保留d的局部积分

2024-05-23 18:05:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我是社会学博士生,正在写论文。在一些数据分析的过程中,我遇到了以下问题。在

我有一张一系列年来某些变量的测量值表。这些值很重要,“在给定的一年里有多少特定类型的事件”?下面是一个示例:

year    var
1983    22
1984    55
1985    34
1986    29
1987    15
1988    20
1989    41

例如,1984年全年共发生55起此类事件。在

在[1983,1990]中,在实数域上表示这些数据的一种方法是使用分段函数f

^{pr2}$

此函数用于绘制一系列宽度为1的水平线,映射变量的条形图。每一行下面的面积等于当年变量的值。但是,对于这个变量,我知道在每年,这个比率并不是全年不变的。换言之,12月31日,事件不会突然从一个年利率跳到另一个利率,因为(不连续)函数f似乎存在。我不知道利率到底是怎么变化的,但我想假设一年一年平稳过渡。在

所以,我想要的是一个函数g,它在域[1983,1990]上既连续又光滑(连续可微),,它还保留了年度总数。也就是说,从1984年到1985年,g的定积分必须仍然等于55,其他年份也一样。(所以,例如,一个n次多项式,它击中了所有的条的中点是行不通的。)另外,我希望g是一个分段函数,所有的部分都相对简单——二次函数最好,或者是正弦波。在

总而言之:我希望g是一系列在每年定义的抛物线,它们从一个平滑地过渡到另一个抛物线(在年边界上g'(x)的左右极限应该相等),并且每个抛物线下的面积等于我上面数据给出的总和。在

I've drawn a crude version of what I want here.漫画使用的数据与上述相同,黑色曲线表示我希望的函数g。在右翼,情况变得特别糟糕,尤其是1988年和1989年。但它只是想展示一张我想结束的照片。在

谢谢你的帮助,或者你认为对我有帮助的其他资源!在

PS我已经看了this paper,它是连接在this question.内部的,我同意作者的观点(见第4节),如果我可以用矩阵A来代替我的数据,我可以很简单地生成某种光滑函数,那将是很好的,但他们没有说明如何获得A。只是想一想。再次感谢!在

PPS我需要的是一个可靠的生成g的方法,给定上面的任何数据表。实际上我有成百上千种这样的年度统计数据,所以我需要一个通用的解决方案。在


Tags: 数据方法函数示例类型过程事件this
2条回答

你需要曲线的积分来通过一组特定的点,由累计总数定义,所以。。。在

在累计总数之间插值得到一条积分曲线,然后 取它的导数,得到你要找的函数。在

因为你希望你的函数是“连续和光滑的”,即C1连续,你插值的积分曲线必须是C2连续的,也就是说,它必须有连续的一阶和二阶导数。您可以使用多项式插值、sinc插值、充分次数的样条曲线等

使用“自然”三次样条插值积分将给你一个分段二次导数,似乎满足你的所有要求。在

这里有一个关于自然三次样条函数的很好的描述:http://mathworld.wolfram.com/CubicSpline.html

如果您的目标是将离散数据转换为连续表示,我建议您查找Kernel Density Estimation。KDE分布基本上是连续分布(高斯分布)和平均分布(通常是连续分布)的结果。This blog使用SciPy模块对KDE进行了非常彻底的处理。在

KDE的一个缺点是它没有提供一个分析解决方案。{我建议你的目标是向上看。在

相关问题 更多 >