测试函数是否“上升得比线性更快”

机器算法验证 假设检验
2022-04-08 07:14:15

中得到一个噪声样本,它可以近似为某种幂函数,假设是同方差的, 高斯噪声。我们要测试的增加并不快于与 ( )的增加快于线性 ( )。进行此类测试的最佳方法是什么?f(x)f(x)O(xp)+εεH0f(x)xp1H1f(x)p>1

2个回答

说一个函数“升得比线性快”本质上意味着它的导数增加了,这意味着它的二阶导数是正的。

逼近函数二阶导数的方法是使用抛物线。当您想从函数及其导数的点评估开始逼近函数时,泰勒分解也是如此,但它也适用于最小二乘法。当将一条直线拟合到您的数据时,您正在强加一个具有恒定一阶导数的模型,但这可以通过添加二次项进行修改,然后二阶导数是恒定的,您现在可以允许它改变添加三次项,并且很快。

但是不要担心(二阶)导数如何变化,只需用平均估计值来解决,这是您可以用于测试的最佳方法。

当您考虑空模型时,这就是平均值。当你有一个线性模型时,斜率测量平均增量,当你包括一个二次项时,这是平均二阶导数。简单地测试它是否是积极的。y

假设你已经知道f正在增加,我们可以进一步假设,如果它的一阶导数在x(这也使它成为一个凸函数)。因为我们正在处理一组离散的、可数的观察结果

{(x1,f1),(x2,f2),,(xn,fn)}

我们无法观察导数。但是我们可以看看某种形式的离散导数,比如级数的前向差分

Δfi=fi+1fi

为了i{1,,n1}(在这种情况下,您将不得不放弃最后的观察xn)。通过回归拟合多项式或特定函数Δfixi并且检查系数的重要性不是一个稳健的解决方案,因为导数的函数形式实际上可以采用任何非多项式形状。如果存在显着偏离正态性,回归系数的 p 值也不准确。

这就是为什么我会建议检查诸如排名相关性之类的东西Δfx. 即,Spearman 相关性 ρ是基于秩的非参数相关性,用于评估两个变量之间的单调性。并且它的统计分布在小样本和大样本中都是已知的。

因此,单边测试

H0:ρ(Δf,x)=0
HA:ρ(Δf,x)>0

如果被拒绝,将证明以下说法的可信度f确实是超线性的x.

数值示例。在这里,我将生成两个函数f0f1p分别为 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

函数 f0 和 f1 的图

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 面测试。就您而言,您正在寻找单面测试。