详解likelihoodratiotest

发布时间:2023-05-19

likelihood ratio test基本概念

likelihood ratio test是一种基于极大似然估计的假设检验方法,用于比较两个统计模型的解释能力。它通过计算两个模型对数据拟合的好坏程度的差异来评估它们的相对表现。 它的基本原理是:我们可以构建两个统计模型,一个是原始模型(null model),另一个是备选模型(alternative model)。原始模型是一个简单的模型,通常包含较少的参数;而备选模型是一个较为复杂的模型,可能包含更多的参数。likelihood ratio test的核心思想就是比较两个模型对数据的拟合程度,然后判断备选模型是否比原始模型更好地解释了观测数据。

likelihood ratio test的基本步骤

  1. 提出原始假设和备选假设。
  2. 在两个模型下计算似然函数(likelihood)。
void likelihood_old(float* x, int N, float& L)
{
    float mu = mean(x, N);
    L = 1.0;
    for(int i = 0; i < N; i++)
    {
        L *= exp(-mu) * pow(mu, x[i]) / tgamma(x[i] + 1);
    }
}
void likelihood_new(float* x, int N, float& L)
{
    float alpha = 0.0, beta = 0.0;
    moments(x, N, alpha, beta);
    L = 1.0;
    for(int i = 0; i < N; i++)
    {
        L *= exp(beta * x[i] - (alpha + 1) * log(1 + beta * x[i])) / (1 + beta * x[i]);
    }
}
  1. 计算两个模型的似然比(likelihood ratio)。
float likelihood_ratio_test(float* x, int N)
{
    float L_null = 0.0, L_alt = 0.0;
    likelihood_old(x, N, L_null);
    likelihood_new(x, N, L_alt);
    return -2 * log(L_null / L_alt);
}
  1. 计算p值。
float p_value(float chi2, int k)
{
    return 1.0 - boost::math::cdf(boost::math::chi_squared(k), chi2);
}

likelihood ratio test的应用场景

likelihood ratio test主要应用于以下场景:

  1. 模型比较:用于比较两个或多个统计模型对样本数据的拟合程度。
  2. 变量筛选:用于筛选与目标变量相关的特征,删除那些不显著、对模型表现没有改善的变量。
  3. 检验假设:用于检验某些假设是否支持拟合统计模型(如线性回归模型中的假设检验)。

likelihood ratio test的优缺点

优点:

  1. 可以比较不同复杂度的模型的表现。
  2. 不用预设样本数或假定分布。
  3. 可以进行参数化检验。 缺点:
  4. 假设检验结果可能受到检验条件和样本数的影响。
  5. 只能用于比较两个模型的拟合能力,不能评估特定模型的好坏。
  6. 容易出现过拟合现象。