我想测量指数衰减曲线的拟合优度。我正在使用lsqcurvefit
MATLAB函数。有人建议我做chi-square test。
我想使用MATLAB函数chi2gof
,但我不确定如何判断数据是否符合指数曲线
答案 0 :(得分:2)
chi2gof
函数测试零假设,即一组数据,例如X
,是从某个指定分布(例如指数分布)中抽取的随机样本。
根据您在问题中的描述,您可能希望了解数据X
与指数衰减函数的拟合程度。我真的必须强调,这与完全不同来测试X
是否是从指数分布中抽取的随机样本。如果您将chi2gof
用于所述目的,则会得到毫无意义的结果。
测试某些数据X
对某些函数f
的拟合优度的常用方法是least squares,或者是最小二乘法的某些变体。此外,最小二乘法可用于生成测试goodness-of-fit的测试统计,其中许多是根据卡方分布分布的。我相信这可能是你朋友所指的。
编辑:我有几分钟的时间,所以这里有一些让你入门的东西。免责声明:我从来没有专门针对这个问题,所以接下来可能不是正确的。我假设你有一组数据x_n,n = 1,...,N,以及数据的相应时间戳,t_n,n = 1,...,N。现在,指数衰减函数是y_n = y_0 * e ^ { - b * t_n}。注意,通过取两边的自然对数,我们得到:ln(y_n)= ln(y_0) - b * t_n。好的,所以这表明使用OLS来估计线性模型ln(x_n)= ln(x_0)-b * t_n + e_n。太好了!因为现在我们可以使用标准R ^ 2度量来测试拟合度,如果使用stats
函数执行OLS,matlab将在regress
结构中返回。希望这可以帮助。我再次强调,我在几分钟内想出了这个问题,所以可能有充分的理由说明为什么我的建议是个坏主意。此外,如果您知道进程的初始值(即x_0),那么您可能需要查看将参数ln(x_0)绑定到其已知值的约束最小二乘。