多元线性回归实战:SPSS检验与后退法变量筛选全解析

发布时间:2026/9/19 4:34:13
多元线性回归实战:SPSS检验与后退法变量筛选全解析 简介这是统计学专业本科毕业论文的完整参考文档围绕多元线性回归模型及其应用展开。全文系统介绍了回归模型的一般形式、基本假定如线性关系、独立同分布、同方差、无多重共线性、普通最小二乘参数估计方法以及拟合检验、F检验、t检验等核心检验环节当初始模型无法通过t检验时采用后退法逐步剔除不显著变量重新拟合回归方程并基于2005年我国31个省、市、自治区的财政支出与生产总值数据借助SPSS和Matlab完成建模计算预测2006年各地生产总值将预测值与实际值进行对比分析验证模型的有效性。文档中还附有英文摘要、关键词、参考文献目录以及导师的修改意见明确提到参考文献不少于10个、重复率不高于30%才能答辩等要求。资源为单个doc文档大小589KB正文结构完整能够为统计学及相关专业学生提供从理论推导、实证建模到规范写作的全流程参考。目前已有1186人学习浏览适合正在准备毕业论文或需要掌握多元回归分析实践方法的读者。1. 论文里的多元线性回归建模一小时检验一下午本科统计学毕业论文只要用到回归分析十有八九会在模型检验环节卡住。看了不少初稿问题不是不会跑回归而是不知道SPSS表格里的Sig.、F值、t值分别说明什么模型一旦有变量不显著就直接把整个回归扔掉重做。实际上多元线性回归的完整路径很清楚先建立带全部候选变量的初始模型再通过拟合优度、F检验、t检验逐层确认模型的可靠性t检验不过就采用后退法Backward Elimination逐个剔除不显著变量最后用保留变量重建模型并做预测。这篇文章以一个实际毕业论文案例为线索——31个省、市、自治区的财政支出数据预测地区生产总值把参数估计、三大检验、后退法筛选、预测区间计算这些环节完整拆开每一步给出可复现的SPSS操作和Matlab代码。适合统计学、经济学、管理学专业做毕业论文设计的同学也对需要用回归模型做指标预测的从业者有参考价值。2. 参数估计的数学骨架从一般形式到矩阵最小二乘2.1 模型的矩阵表达与基本假定多元线性回归模型的一般形式为$$y \beta_0 \beta_1 x_1 \beta_2 x_2 \cdots \beta_p x_p \varepsilon$$其中 $y$ 是被解释变量$x_1, x_2, \dots, x_p$ 是解释变量$\beta_j$ 是回归系数$\varepsilon$ 是随机误差项。写成矩阵形式是$$Y X\beta \varepsilon$$$X$ 是 $n \times (p1)$ 的回归设计矩阵第一列全为1对应常数项。对于31个省市的财政支出数据$n31$初始模型有13个自变量所以 $X$ 是 $31 \times 14$ 的矩阵。论文里强调的“基本假定”不是形式主义它直接决定后面的检验是否成立回归模型设定正确解释变量非随机且不存在完全多重共线性随机误差项零均值、同方差、不序列相关随机误差项服从正态分布。其中多重共线性在实际财政数据里几乎必然存在这正是初始模型t检验大量不显著的根本原因。2.2 最小二乘估计与最大似然估计的等价性最小二乘的思想是寻找 $\hat{\beta}$ 使得残差平方和最小$$\hat{\beta} \arg\min_\beta (Y - X\beta)^T(Y - X\beta)$$对 $\beta$ 求偏导并令其为零得到正规方程组$$X^T X \hat{\beta} X^T Y$$当 $X^T X$ 可逆时$$\hat{\beta} (X^T X)^{-1} X^T Y$$最大似然估计在正态误差假设下对数似然函数对 $\beta$ 求极值等价于最小化残差平方和因此两种方法得到的参数估计完全相同。这也是许多人直接用最小二乘而不再单独做最大似然的原因。用Matlab做矩阵运算非常直观代码只有几行% 读取数据X为n*(p1)矩阵第一列为1Y为n*1列向量 % 这里以论文中的13个自变量为例 X [ones(n,1), x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13]; Y gdp; % 地区生产总值 % 最小二乘估计 beta_hat (X * X) \ (X * Y); % 预测值和残差 y_hat X * beta_hat; resid Y - y_hat; % 残差方差估计sigma^2 sigma2 sum(resid.^2) / (n - size(X,2));这里用\运算符而不是显式求逆数值上更稳定。n - size(X,2)是残差自由度本例中 $31-1417$。如果 $X^T X$ 接近奇异\会给出警告此时就要怀疑是否存在严重多重共线性。2.3 参数估计的统计性质在基本假定满足时OLS估计量 $\hat{\beta}$ 是线性无偏估计中方差最小的BLUE且$$\text{Var}(\hat{\beta}) \sigma^2 (X^T X)^{-1}$$这个协方差矩阵是后续t检验的基础。SPSS回归系数表中“标准误差”列就是 $\text{Var}(\hat{\beta}_{jj})$ 的开方t统计量等于非标准化系数除以标准误差。理解了这一行就能明白为什么变量之间相关性越强标准误差越大t值越小变量越容易被判定为不显著。3. 三大检验的判别顺序先看整体再看单个系数3.1 拟合优度与调整可决系数拟合优度用 $R^2$ 衡量$$R^2 \frac{SSR}{SST} 1 - \frac{SSE}{SST}$$其中 $SST$ 是总离差平方和$SSR$ 是回归平方和$SSE$ 是残差平方和。$R^2$ 越接近1说明回归线对样本观测值的拟合越好。但 $R^2$ 有一个缺陷只要增加解释变量$SSE$ 通常不会增加甚至还会减少所以 $R^2$ 可能虚高。调整可决系数修正了自由度$$\bar{R}^2 1 - \frac{SSE/(n-p-1)}{SST/(n-1)}$$论文实例里初始模型表3.2显示 $R^20.985$调整 $R^20.973$看起来拟合很好。但注意拟合好不代表所有自变量都有用看表3.113个自变量里只有少数几个t检验显著说明模型需要精简。3.2 F检验回归方程整体是否显著F检验的原假设是所有回归系数同时为零$$H_0: \beta_1 \beta_2 \cdots \beta_p 0$$统计量为$$F \frac{SSR/p}{SSE/(n-p-1)} \sim F(p, n-p-1)$$SPSS方差分析表里“回归”行对应 $SSR$“残差”行对应 $SSE$均方是各自平方和除以自由度F值是回归均方除以残差均方。Sig.即P值。论文表3.3中 $F84.634$$P0.000$意味着在0.05显著性水平下拒绝原假设回归方程整体显著。这里有一个常见的误读F检验显著只能说明所有自变量中至少有一个对因变量有显著影响并不能说明每一个自变量都显著。这就是为什么还需要做t检验。3.3 t检验单个回归系数是否显著t检验的原假设是 $\beta_j0$$$t_j \frac{\hat{\beta}_j}{\text{se}(\hat{\beta}_j)} \sim t(n-p-1)$$SPSS回归系数表中的“t”和“Sig.”正是这个检验的输出。以论文表3.1为例$x_1$基本建设支出的 $t-2.569$$P0.020$在0.05水平下显著但 $x_3$科技三项费用的 $t-0.098$$P0.923$非常不显著。判读t检验的结果不能只看绝对值还要结合自由度。样本量 $n31$初始模型 $p13$自由度 $31-13-117$查t分布临界值 $t_{0.025}(17)\approx2.11$。$t$ 绝对值小于2.11的变量均可视为不显著。3.4 SPSS输出与手工计算的对照为了验证SPSS结果可以手工计算关键统计量n 31; p 13; SSE sum(resid.^2); SST sum((Y - mean(Y)).^2); SSR SST - SSE; R2 SSR / SST; adjR2 1 - (SSE/(n-p-1)) / (SST/(n-1)); F_stat (SSR/p) / (SSE/(n-p-1)); p_F 1 - fcdf(F_stat, p, n-p-1); % 各回归系数的t统计量 se_beta sqrt(diag(sigma2 * inv(X*X))); t_stat beta_hat ./ se_beta; p_t 2 * (1 - tcdf(abs(t_stat), n-p-1));fcdf和tcdf是Matlab的F分布和t分布累积分布函数。算出来的 $R^2$、$F$、$t$ 应与SPSS一致。我在实际处理中会先用这段代码复核一遍确认数据读入没有错位。特别注意原始数据单位论文中财政支出是万元GDP是万元预测时注意单位换算。4. 后退法变量筛选13个支出项如何精简到8个4.1 为什么不能一次性剔除所有不显著变量初始模型有13个解释变量t检验显示多个变量不显著。此时很多人会直接把所有P值大于0.05的变量一次删掉再跑回归。这种做法是错的。因为自变量之间存在相关性一个变量的显著性会受到其他变量的影响。删掉一个变量后剩余变量的标准误差和回归系数都会变化原来不显著的变量可能变得显著原来显著的也可能变得不显著。论文里明确说“由于变量间的交互作用不能一次性剔除所有不显著的变量所以进行依次剔除首先剔除P值最大的一个变量然后再进行回归系数的显著性检验”。这就是后退法的标准流程用全部自变量拟合模型检查各变量t检验的P值找出P值最大最不显著的变量剔除该变量用剩余变量重新拟合重复2-4直到所有保留变量的P值都小于显著性水平如0.05。4.2 后退法在SPSS中的操作SPSS操作路径菜单栏选择“分析”→“回归”→“线性”因变量选“地区生产总值”自变量选13个财政支出项方法下拉框选择“后退法”在“选项”中设置进入和删除标准默认进入概率0.05删除概率0.10点击“确定”输出会显示每一步剔除的变量。需要特别说明的是SPSS的“后退法”默认删除标准是P值大于0.10而不是0.05。如果论文要求0.05水平可以在“选项”里把删除概率改为0.05。但有时0.05太严会导致最终模型自变量过少我一般会先看0.10的结果再结合专业判断决定保留哪些变量。论文实例中的剔除顺序根据表3.1到表3.4可以还原先剔除P值最大的 $x_3$科技三项费用P0.923然后重新检验再剔除当前P值最大的变量如此往复。最终保留了8个变量$x_1$ 基本建设支出、$x_2$ 企业挖潜改造资金、$x_4$ 农业支出、$x_8$ 教育事业费、$x_{10}$ 卫生经费、$x_{11}$ 行政管理费、$x_{12}$ 公检法司支出、$x_{13}$ 城市维护费。4.3 Matlab实现后退法的核心代码SPSS能点击完成的事情Matlab写循环也能做而且方便记录每一步的剔除原因% X_all: n x (p1) 矩阵包含常数项列但常数项不参与剔除 X_all [ones(n,1), x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13]; Y gdp; current_p size(X_all, 2) - 1; % 当前自变量个数 alpha_remove 0.10; % 删除阈值可设0.05 while true % 拟合当前模型 beta (X_all * X_all) \ (X_all * Y); resid Y - X_all * beta; n length(Y); df_resid n - size(X_all, 2); sigma2 sum(resid.^2) / df_resid; se sqrt(diag(sigma2 * inv(X_all * X_all))); t_stat beta ./ se; % 常数项的P值不参与剔除 p_values 2 * (1 - tcdf(abs(t_stat(2:end)), df_resid)); [max_p, idx] max(p_values); if max_p alpha_remove break; end % 剔除第idx个自变量注意idx对应X_all第2列开始 X_all(:, idx1) []; fprintf(剔除变量 %dP%.4f\n, idx, max_p); end这段代码的关键点df_resid会随着变量减少而变化这是正确的因为残差自由度随自变量个数增加而减少删除变量时要同步更新X_all下一轮循环用新的矩阵重新估计停止条件是最大P值小于alpha_remove此时所有变量的t检验都显著常数项不参与剔除但它的P值也在输出里便于检查。论文中最终模型3.2的回归方程为$$\hat{y} -3731367.97 - 26.897 x_1 28.266 x_2 - 101.286 x_4 49.465 x_8 - 73.625 x_{10} 49.575 x_{11} 32.637 x_{12} 45.499 x_{13}$$注意 $x_1$ 的系数是负的这并不奇怪。基本建设支出多的省份可能是西部大开发地区GDP基数较低而变量之间的多重共线性也会让个别系数符号偏离经济直觉。所以在解释系数时不要急于下因果结论回归结果只能说明统计相关。4.4 后退法的边界与适用场景后退法不是万能的。当自变量个数接近样本量时模型拟合会变得不稳定。本例 $n31$初始 $p13$勉强满足经验规则“样本量至少是自变量个数的10~15倍”。如果样本量只有2013个自变量就非常危险此时应优先考虑主成分回归或LASSO。后退法与逐步回归的区别在于后退法只做剔除不回头添加变量逐步回归每次剔除后还会检查是否可以重新引入。当变量间相关性很强时后退法可能会漏掉一些组合但因为后退法每一步都在全模型框架下比较通常比向前选择更稳健。论文选择后退法是合理的。5. 预测区间计算与论文复现中的四个高频坑5.1 预测值与预测区间的计算最终模型确定后给定一组新的解释变量取值 $x_0 (1, x_{01}, x_{02}, \dots, x_{0p})$点预测为$$\hat{y}_0 x_0 \hat{\beta}$$预测区间需要同时考虑参数估计的不确定性和随机误差的波动$$\hat{y}0 \pm t{1-\alpha/2}(n-p-1) \cdot \hat{\sigma} \sqrt{1 x_0 (X^T X)^{-1} x_0^T}$$式中 $x_0$ 是行向量$X$ 是建模时使用的样本设计矩阵。用Matlab计算2006年各省份的生产总值预测区间% beta_final为最终模型回归系数X_final为保留变量设计矩阵 % X0为2006年对应8个变量的观测值矩阵n0为待预测样本数 n size(X_final, 1); p size(X_final, 2) - 1; df n - p - 1; sigma sqrt(sum((Y - X_final*beta_final).^2) / df); t_crit tinv(0.975, df); X0 [ones(n0,1), x0_vars]; % 第一列为1 y0_pred X0 * beta_final; for i 1:n0 h X0(i,:) * inv(X_final*X_final) * X0(i,:); se_pred sigma * sqrt(1 h); lower(i) y0_pred(i) - t_crit * se_pred; upper(i) y0_pred(i) t_crit * se_pred; end把2006年实际GDP与区间比较论文表3.7里31个省市的预测区间都包含了实际值。这说明模型在样本外预测上是可用的。实际项目中我不会只用一年数据验证至少会逐年回测观察实际值落在区间内的比例是否接近95%如果比例明显偏低大概率是模型结构有偏误或者新样本的变量分布与建模样本差异太大。5.2 坑一单位不统一导致系数量级失控论文附录中财政支出单位为万元GDP也是万元但附录三的2006年GDP是亿元。预测时如果不统一单位结果会差一万倍。我的做法是全部转换为“亿元”或“万辆”这样的统一单位后再建模并在论文里明确标注。5.3 坑二只报告R²不报告调整R²很多初稿只贴R²0.985而不报告调整R²。对于13个自变量的模型R²虚高风险很高。论文里两个都列出这是正确做法。期刊审稿人通常更关注调整R²因为它在自变量个数不同时有可比性。5.4 坑三引用文献与正文脱节毕业论文要求参考文献不少于10个且文献必须在正文中标注引用。退回意见里明确指出“引用的文献要在正文中提到”。常见错误是参考文献列表一大串但正文的引用标记只有[1]、[2]后面的文献根本没出现。我的建议是模型定义处引教材检验方法处引统计软件手册后退法引回归分析专著案例数据引统计年鉴。每篇文献都对应到具体公式或方法描述不要只堆在结论处。5.5 坑四重复率超标时的科学引用方式改重不是把句子颠倒语序而是把公式和文字描述整理成自己的语言。数学公式不算重复但“多元线性回归模型的一般形式为”这类衔接句容易与其他论文重复。有效做法是给出公式后用一段话解释每个符号的含义补充说明矩阵形式与样本量的关系再结合自己数据描述。这样写出来的内容重复率自然就下来了而且质量更高。论文要求重复率不高于30%只要按这个思路写不需要用任何工具编辑原始数据和运行结果还能成为答辩时的加分项。本文还有配套的精品资源点击获取