我有一个非线性模型拟合,如下所示:
深色实线为模型拟合,灰色部分为原始数据。
问题的简短版本:我如何得到这个模型拟合的可能性,以便我可以执行对数似然比测试?假设残差是正态分布的。
我对统计学比较陌生,我现在的想法是:
从曲线拟合中得到残差,并计算残差的方差;
使用这个公式
并将残差的方差代入sigma平方,x_i作为实验,mu作为模型拟合;
计算对数似然比。
有谁能帮我解答这两个完整版本的问题吗?
我的方法正确吗?(我想是的,但是确定一下会非常好!)
python/scipy/statsmodels中是否有现成的函数可以为我执行此操作?
Tags:
你的公式在我看来是正确的。它应该提供与
scipy.stats.norm.logpdf(x, loc=mu, scale=sigma)
相同的结果既然你已经有了mu和sigma的估计值,我认为没有一个函数可以用于似然比测试,你可以将结果插入其中。
如果您有两个模型的估计值,其中一个嵌套在另一个模型中,那么您可以自己轻松地计算它。
http://en.wikipedia.org/wiki/Likelihood-ratio_test
下面是statsmodels中计算LR检验的方法的一部分,用于比较两个嵌套的线性模型 https://github.com/statsmodels/statsmodels/blob/master/statsmodels/regression/linear_model.py#L1531
你的似然函数
它是高斯分布概率密度函数对数的和。
是用mu和sigma拟合残差的可能性,而不是用数据拟合模型的可能性。一句话,你的方法是错误的。
当你在做非线性最小二乘时,按照@usedtheeathstar前面提到的方法,你应该直接进入
F-test
。考虑下面的例子,从http://www.walkingrandomly.com/?p=5254修改,我们使用R
执行F-test
。最后我们将讨论如何将其转化为python
。这里我们有两个模型,
fit1
有两个参数,因此余数有8个自由度;fit2
有一个附加参数,余数有7个自由度。模型2明显更好吗?不,F值是0.9194,在(1,7)
自由度上,它不显著。得到方差分析表:残留DF很容易。剩余平方和:
0.08202*0.08202*8=0.05381
和0.08243*0.08243*7=0.04756293
(注意:'剩余标准误差:7自由度为0.08243',等等)。在python
中,可以通过(y_observed-y_fitted)**2
获得它,因为scipy.optimize.curve_fit()
不返回残基。F-ratio
是0.0062473/0.047565*7
,并得到p值:1-scipy.stats.f.cdf(0.9194, 1, 7)
。把它们放在一起,我们得到了
python
等价物:正如@usethedeathstar所指出的:当余数是正态分布时,非线性最小二乘是的最大似然。因此F检验和似然比检验是等价的。因为,F-比是似然比λ的单调变换。
或者以描述性的方式,请参见:http://www.stata.com/support/faqs/statistics/chi-squared-and-f-distributions/
相关问题 更多 >
编程相关推荐