MATLAB:如何计算fitlm构建的线性回归模型的AIC值
计算MATLAB线性回归模型的AIC值
当你用fitlm(X,y)构建线性回归模型后,确实MATLAB没有为LinearModel类提供直接的aic()函数,但我们可以通过模型自带的属性,结合AIC的定义公式轻松计算出来,下面是两种实用方法:
方法1:直接用模型属性计算标准AIC
AIC的核心公式是:
AIC = 2k - 2ln(L)
其中:
- k 是模型中估计的参数数量(包含截距项)
- ln(L) 是模型的对数似然值
fitlm返回的LinearModel对象已经包含了这两个关键属性,直接调用计算即可:
% 假设你的线性模型对象是modl k = modl.NumCoefficients; % 获取参数总数(含截距) log_likelihood = modl.LogLikelihood; % 获取对数似然值 aic = 2*k - 2*log_likelihood;
方法2:计算校正版AIC(AICc)
当样本量较小的时候,标准AIC可能会有偏差,这时候可以计算校正后的AICc,公式为:
AICc = AIC + 2k(k+1)/(n - k - 1)
其中n是样本数量,同样可以从模型属性中获取:
n = modl.NumObservations; % 获取样本总数 aic_c = aic + 2*k*(k+1)/(n - k - 1);
注意事项
- 确保你的MATLAB版本支持
LinearModel的这些属性(R2016a及以后版本都没问题) - 如果是正则化的线性模型(比如用
fitlm添加正则项),参数数量k的计算需要调整,不过常规的普通最小二乘回归直接用NumCoefficients就可以。
内容的提问来源于stack exchange,提问作者Prasannjeet Singh
相关产品推荐
相关产品推荐

