中得到一个噪声样本,它可以近似为某种幂函数,假设是同方差的, 高斯噪声。我们要测试:的增加并不快于与 ( ):的增加快于线性 ( )。进行此类测试的最佳方法是什么?
测试函数是否“上升得比线性更快”
说一个函数“升得比线性快”本质上意味着它的导数增加了,这意味着它的二阶导数是正的。
逼近函数二阶导数的方法是使用抛物线。当您想从函数及其导数的点评估开始逼近函数时,泰勒分解也是如此,但它也适用于最小二乘法。当将一条直线拟合到您的数据时,您正在强加一个具有恒定一阶导数的模型,但这可以通过添加二次项进行修改,然后二阶导数是恒定的,您现在可以允许它改变添加三次项,并且很快。
但是不要担心(二阶)导数如何变化,只需用平均估计值来解决,这是您可以用于测试的最佳方法。
当您考虑空模型时,这就是平均值。当你有一个线性模型时,斜率测量平均增量,当你包括一个二次项时,这是平均二阶导数。简单地测试它是否是积极的。
假设你已经知道正在增加,我们可以进一步假设,如果它的一阶导数在(这也使它成为一个凸函数)。因为我们正在处理一组离散的、可数的观察结果
我们无法观察导数。但是我们可以看看某种形式的离散导数,比如级数的前向差分
为了(在这种情况下,您将不得不放弃最后的观察)。通过回归拟合多项式或特定函数上并且检查系数的重要性不是一个稳健的解决方案,因为导数的函数形式实际上可以采用任何非多项式形状。如果存在显着偏离正态性,回归系数的 p 值也不准确。
这就是为什么我会建议检查诸如排名相关性之类的东西上. 即,Spearman 相关性 是基于秩的非参数相关性,用于评估两个变量之间的单调性。并且它的统计分布在小样本和大样本中都是已知的。
因此,单边测试
如果被拒绝,将证明以下说法的可信度确实是超线性的.
数值示例。在这里,我将生成两个函数和与分别为 0.8 和 1.2。然后我将证明斯皮尔曼相关可以区分哪一个是超线性的。
import numpy as np
from scipy.stats import spearmanr as sp # this is spearman correlation
delta = lambda series: series[1:] - series[:-1] # forward diff operator
n = 100 # size of sample
x = np.linspace(0,100,n) # x series
e = np.random.normal(0,1,n) # noise term
f0 = x**.8 + e # sub-linear function of x
f1 = x**1.2 + e # super-linear function of x
sp(delta(f0),x[:-1])
correlation=-0.034, pvalue=0.735
sp(delta(f1),x[:-1])
correlation=0.309, pvalue=0.002
虽然它不会使该实验的结果无效,但请记住,要获得准确的类型 1 错误率,此 p 值(来自 scipy)用于 2 面测试。就您而言,您正在寻找单面测试。
