我是社会学博士生,正在写论文。在一些数据分析的过程中,我遇到了以下问题。在
我有一张一系列年来某些变量的测量值表。这些值很重要,“在给定的一年里有多少特定类型的事件”?下面是一个示例:
year var
1983 22
1984 55
1985 34
1986 29
1987 15
1988 20
1989 41
例如,1984年全年共发生55起此类事件。在
在[1983,1990]中,在实数域上表示这些数据的一种方法是使用分段函数f
:
此函数用于绘制一系列宽度为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的方法,给定上面的任何数据表。实际上我有成百上千种这样的年度统计数据,所以我需要一个通用的解决方案。在
你需要曲线的积分来通过一组特定的点,由累计总数定义,所以。。。在
在累计总数之间插值得到一条积分曲线,然后 取它的导数,得到你要找的函数。在
因为你希望你的函数是“连续和光滑的”,即C1连续,你插值的积分曲线必须是C2连续的,也就是说,它必须有连续的一阶和二阶导数。您可以使用多项式插值、sinc插值、充分次数的样条曲线等
使用“自然”三次样条插值积分将给你一个分段二次导数,似乎满足你的所有要求。在
这里有一个关于自然三次样条函数的很好的描述:http://mathworld.wolfram.com/CubicSpline.html
如果您的目标是将离散数据转换为连续表示,我建议您查找Kernel Density Estimation。KDE分布基本上是连续分布(高斯分布)和平均分布(通常是连续分布)的结果。This blog使用SciPy模块对KDE进行了非常彻底的处理。在
KDE的一个缺点是它没有提供一个分析解决方案。{我建议你的目标是向上看。在
相关问题 更多 >
编程相关推荐