# 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 - 训练出的线性模型
列表
返回一个包含分量方差分析统计的表。
数据类型: 表格