# anova


线性回归模型的方差分析

函数库: TyMachineLearning

# 语法

tbl = anova(model,anovatype)

# 说明

tbl = anova(model, anovatype)返回一个包含分量方差分析统计的表。

# 示例

对线性回归模型进行方差分析
读取数据集。
using TyMachineLearning
using DataFrames
using DataFrames
data = DataFrame(;
    g1=[1, 2, 1, 2, 1, 2, 1, 2],
    g2=["hi", "hi", "lo", "lo", "hi", "hi", "lo", "lo"],
    g3=["may", "may", "may", "may", "june", "june", "june", "june"],
    y=[52.7, 57.5, 45.9, 44.5, 53.0, 57.0, 45.9, 44.0],
)
rename!(data, [:y => :Y, :g1 => :x1, :g2 => :x2, :g3 => :x3])

对模型进行方差分析。

modelspec = "Y~C(x1) + C(x2) + C(x3)"
model, _, _ = fitlm(data, modelspec)
anovatype = "component"
tbl = anova(model, anovatype)
PyObject            df     sum_sq    mean_sq          F    PR(>F)
C(x1)     1.0    3.78125    3.78125   0.816024  0.417428
C(x2)     1.0  199.00125  199.00125  42.946048  0.002804
C(x3)     1.0    0.06125    0.06125   0.013218  0.914009
Residual  4.0   18.53500    4.63375        NaN       NaN

该表显示除常数(截距)项外的每个项的以下列:

  • df - 自由度,在本例中模型每个项的df为1,误差项为n–p,其中n是观测值的数量,p是模型中系数的数量。例如,该模型中误差项的df为100–4=96。如果模型中的任何变量是分类变量,则该变量的df为创建的指标变量数(类别数–1)。
  • sum_sq - 平方和
  • mean_sq - 均方,mean_sq=sum_sq/df。
  • F - F统计值,用于测试相应系数为零的零假设,通过F=mean_sq/MSE计算,其中MSE为均方误差。当零假设为真时,F统计量遵循F分布。分子自由度是相应项的df值,分母自由度是n–p。
  • PR(>F) - F统计值的p值。
anovatype = "summary"
tbl2 = anova(model, anovatype)
PyObject <class 'statsmodels.iolib.summary.Summary'>
"""
                            OLS Regression Results
==============================================================================
Dep. Variable:                      Y   R-squared:                       0.916
Model:                            OLS   Adj. R-squared:                  0.853
Method:                 Least Squares   F-statistic:                     14.59
Date:                Tue, 31 Jan 2023   Prob (F-statistic):             0.0128
Time:                        18:06:55   Log-Likelihood:                -14.712
No. Observations:                   8   AIC:                             37.42
Df Residuals:                       4   BIC:                             37.74
Df Model:                           3
Covariance Type:            nonrobust
================================================================================
                   coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------
Intercept       54.2750      1.522     35.657      0.000      50.049      58.501
C(x1)[T.2]       1.3750      1.522      0.903      0.417      -2.851       5.601
C(x2)[T.lo]     -9.9750      1.522     -6.553      0.003     -14.201      -5.749
C(x3)[T.may]     0.1750      1.522      0.115      0.914      -4.051       4.401
==============================================================================
Omnibus:                        7.599   Durbin-Watson:                   2.006
Prob(Omnibus):                  0.022   Jarque-Bera (JB):                1.268
Skew:                          -0.016   Prob(JB):                        0.530
Kurtosis:                       1.050   Cond. No.                         3.73
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
"""
  • Intercept - 表示截距信息。

  • coef - 表示自变量前的系数。

  • std err - 系数的标准误差。

  • t - 每个系数的 t 统计量,用于基于对应系数不为零的备择假设来检验对应系数为零的原假设。

  • P>|t| - 判断回归效果是否显著,值越小则结果越显著。

  • R-squared和Adj. R-squared - 分别为决定系数和调整决定系数。例如,R-squared值表明,该模型解释了响应变量中大约 92% 的变异。

  • F-statistic - 对回归模型进行 F 检验的检验统计量,用于检验该模型的拟合是否显著优于仅包含常数项的退化模型。

# 输入参数

model - 训练出的线性模型
模型
线性回归模型对象。

数据类型: 模型对象

anovatype - 指定输出形式
1
1.(默认)'component'—anova 返回tbl包含模型中除常数项之外的每个变量的 ANOVA 统计信息的表。

2.'summary'—anova 返回tbl包含分组变量和整个模型的汇总 anova 统计数据的表

# 输出参数

tbl - 训练出的线性模型
列表
返回一个包含分量方差分析统计的表。

数据类型: 表格

# 另请参阅

coefCI | coeftest