You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

赤池信息准则(AIC)计算及两种非线性拟合结果的优劣判断咨询

两种拟合方案的AIC计算实现方法(Excel/R)

计算前提说明

  • 观测样本量n:本次提供的实验数据共58组
  • Fit1可调参数数量k1=4,Fit2可调参数数量k2=4(5个参数中1个固定为0,固定参数无需估计,不计入AIC的参数k统计;若你需要将固定参数也计入,把k2改为5即可)
  • 残差服从正态分布假设下,最小二乘拟合的AIC计算公式为:

AIC = 2k + n × ln(SSE/n)
其中SSE为残差平方和,等于所有观测点的(实验y值 - 拟合y值)的平方和

  • 若n/k < 40,建议使用校正版AICc避免小样本偏差:

AICc = AIC + 2k(k+1)/(n-k-1)

  • 判断规则:AIC/AICc值越小的模型,拟合的综合表现越好;两个模型差值小于2则没有显著优劣差异。

Excel实现步骤

  1. 将所有数据粘贴到Excel中,调整列对应关系:A列=x_expt,B列=y_expt,D列=y_fit1,F列=y_fit2
  2. 计算Fit1的残差平方和SSE1:在空白单元格输入公式 =SUMSQ(B2:B59-D2:D59),Office 365直接回车即可,老版本按Ctrl+Shift+Enter执行数组公式
  3. 计算Fit1的AIC:输入公式 =2*4 + 58*LN(SSE1单元格位置/58),替换SSE1单元格位置为上一步的结果单元格
  4. 同理计算Fit2的残差平方和SSE2:=SUMSQ(B2:B59-F2:F59)
  5. 计算Fit2的AIC:=2*4 + 58*LN(SSE2单元格位置/58)
  6. 如需计算AICc,Fit1对应公式为 =AIC1单元格位置 + 2*4*5/(58-4-1),Fit2替换对应参数即可。

R实现步骤

直接运行如下代码即可自动计算并输出两个模型的对比结果:

# 1. 读取数据:先全选复制所有数据(包括表头两行)
# Windows系统用这行读取剪切板数据
dat <- read.table("clipboard", header = T, skip = 1)
# Mac系统替换为下面这行
# dat <- read.table(pipe("pbpaste"), header = T, skip = 1)

# 重命名列方便调用
colnames(dat) <- c("x_expt", "y_expt", "x_fit1", "y_fit1", "x_fit2", "y_fit2")

# 2. 自定义AIC计算函数
calc_aic <- function(y_obs, y_fit, k, n = length(y_obs)){
  sse <- sum((y_obs - y_fit)^2)
  aic <- 2*k + n * log(sse / n)
  aicc <- aic + 2*k*(k+1)/(n - k -1)
  return(list(SSE = sse, AIC = aic, AICc = aicc))
}

# 3. 分别计算两个模型的结果
fit1 <- calc_aic(dat$y_expt, dat$y_fit1, k = 4)
fit2 <- calc_aic(dat$y_expt, dat$y_fit2, k = 4)

# 4. 输出对比表格
res <- data.frame(
  模型 = c("Fit1(4个可调参数)", "Fit2(1个参数固定)"),
  SSE = round(c(fit1$SSE, fit2$SSE),4),
  AIC = round(c(fit1$AIC, fit2$AIC),2),
  AICc = round(c(fit1$AICc, fit2$AICc),2)
)
print(res, row.names = F)

运行后即可直接看到两个模型的SSE、AIC、AICc数值,直接对比大小即可判断拟合方案优劣。


内容的提问来源于stack exchange,提问作者Suddhasattwa Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:15:01