Statistics 线性趋势概率

Statistics 线性趋势概率,statistics,linear-regression,bayesian,Statistics,Linear Regression,Bayesian,我得到了少量的样本([1016111616271616151514141212141416 17 18 16 14 16 23 24 12 13 13 15 16 15 14 14 16 20 17 17 15 23 18 12 19 12 11 19 17 14 18 15 23 30 24 16 14 22 17 17 17 17 20 19 27 17 36] ): 有两种模式: 模型A–没有线性趋势,因此噪声的中心 直方图是数据的平均值 模型B–存在线性趋势, 因此,噪声直方图的中心是

我得到了少量的样本([1016111616271616151514141212141416 17 18 16 14 16 23 24 12 13 13 15 16 15 14 14 16 20 17 17 15 23 18 12 19 12 11 19 17 14 18 15 23 30 24 16 14 22 17 17 17 17 20 19 27 17 36] ):

有两种模式:

  • 模型A–没有线性趋势,因此噪声的中心 直方图是数据的平均值
  • 模型B–存在线性趋势, 因此,噪声直方图的中心是与拟合图像的距离 线性趋势线
显然,我可以选择sigma^2较小的模型来选择更好的模型。这显然是(B)。然而,我不相信数据中真的有趋势,不仅仅是像这样随机发生的噪音。因此,我对这两种模型都进行了Dickey Fuller测试,并且都在1%的限值下('1%:-3.529,a:-5.282,B:-6.149)。这告诉我,(A)可能是正确的模型

所以我提出了一个问题:(A)更好的模型的概率是多少

我试图解决这个问题,比如: 我假设噪声是正态分布的,所以我分别在(A)和(B)上拟合了σ的最佳正态分布。所以,我得到了两个噪音模型。 在这之后,我从这两个模型中取了n(原始样本长度)样本,并比较了它们。如果(A)模型sigma^2更小,我增加了模型(A)更好的可能性,如果不是减少的话。我在合理的时间内重复了这个测试

在Python代码中,可能更清楚:

model_b_mu, model_b_sigma = stats.norm.fit(model_b['residual'])
model_a_mu, model_a_sigma = stats.norm.fit(model_a['residual'])

def compare_models(modela_mu, modela_sigma,  modelb_mu, modelb_sigma, length):
    repate = 20000

    modela_better = 0
    for i in range(repate):
        modela = np.random.normal(modela_mu, modela_sigma, size = length )
        modelb = np.random.normal(modelb_mu, modelb_sigma, size = length )

        # test which sigma^2 is smaller
        sigma_a = np.sum(np.sqrt(np.power(modela, 2)))
        sigma_b = np.sum(np.sqrt(np.power(modelb, 2)))
        if sigma_a < sigma_b:
            modela_better += 1

    return modela_better/repate

model_a_better = compare_models(model_a_mu, model_a_sigma, model_b_mu, model_b_sigma, len(model_a))
print(model_a_better)
model_b_mu,model_b_sigma=stats.norm.fit(model_b[‘残余’])
model_a_mu,model_a_sigma=stats.norm.fit(model_a[‘残差’])
def比较模型(模型A\u-mu、模型A\u-sigma、模型B\u-mu、模型B\u-sigma、长度):
返程费=20000
modela_=0
对于范围内的i(重新绘制):
modela=np.random.normal(modela\u mu,modela\u sigma,size=length)
modelbu=np.random.normal(modelbu-mu,modelbu-sigma,size=length)
#测试哪个sigma^2更小
sigma_a=np.sum(np.sqrt(np.power(modela,2)))
sigma_b=np.sum(np.sqrt(np.power(modelb2)))
如果σa<σb:
模型A_更好+=1
返回模型A\u更好/重新制作
模型a\u更好=比较模型(模型a\u mu、模型a\u sigma、模型b\u mu、模型b\u sigma、len(模型a))
打印(a型更好)
这给了我:0.3152。我解释了这个结果:如果噪声是正态分布的,模型(A)更好的概率为31.52%

我的问题是:我的想法正确吗?若否,原因为何?我该如何解决这个问题呢


Ps:我不是统计学家,更像是程序员,所以上述解决方案很可能是错误的。因此,我要求一些确认

这就是所谓的模型选择问题。没有一个单一的正确答案,尽管最接近正确的方法是通过贝叶斯推理。也就是说,计算所考虑的每个模型(两个或更多)的后验概率p(模型|数据)。注意,贝叶斯推理的结果是模型的概率分布,而不是单一的“此模型是正确的”选择;依赖于模型的任何后续结果均应在模型分布上取平均值。还要注意的是,贝叶斯推理需要模型的先验知识,也就是说,在没有数据的情况下,需要事先为每个模型指定一个概率。这是一个特性,不是bug


回顾前面提到的问题,可能很容易计算出你提到的两个模型的后验概率,但首先你需要对概念框架有所了解。对于贝叶斯模型推断的web搜索应该会打开很多资源。另外,这个问题更适合stats.stackexchange.com。

我已经将同样的问题发布到stats.stackexchange.com:[链接]()