> (线性)回归:社会科学实证研究的主力方法 下文讨论的所有示例文件均可从 “数据> 管理” 页面加载。点击`examples`单选按钮并按 “加载(Load)”。 ### 功能说明 首先选择响应变量和一个或多个解释变量。如果模型中包含两个或多个解释变量,我们可能需要研究是否存在交互效应。当一个解释变量对响应变量的影响至少部分由另一个解释变量的水平决定时,交互效应就存在。例如,1 克拉与 2 克拉钻石的价格涨幅可能取决于钻石的净度等级。 在 “摘要(Summary)” 标签页中,我们可以通过在 “待检验变量(Variables to test)” 下拉菜单中选择变量,检验两个或多个变量是否共同对模型拟合有显著贡献。此功能对于检验因子(factor)类型变量的整体影响是否显著非常有用。 需要重新估计的额外输出: * 标准化(Standardize):如果解释变量的测量尺度不同,系数可能难以比较。通过在估计前对响应变量和解释变量进行标准化,我们可以看出哪些变量的影响更大。Radiant 中对数据的标准化方法是将响应变量Y替换为(Y−mean(Y))/(2×sd(Y)),并将所有解释变量X替换为(X−mean(X))/(2×sd(X))。详见Gelman 2008的讨论。 * 中心化(Center):将响应变量Y替换为Y−mean(Y),并将所有解释变量X替换为X−mean(X)。这在解释交互效应时可能有用。 * 逐步回归(Stepwise):一种数据挖掘方法,用于选择拟合效果最佳的模型。使用时需谨慎! * 稳健标准误(Robust standard errors):选择 “稳健(robust)” 后,系数估计值与普通最小二乘(OLS)相同,但标准误会进行调整,以解决(轻微的)异方差性和非正态性问题。 无需重新估计的额外输出: * RMSE:均方根误差(Root Mean Squared Error)和残差标准差(Residual Standard Deviation) * 平方和(Sum of Squares):响应变量的总方差分解为回归解释的方差和未解释的方差(即误差) * VIF:方差膨胀因子(Variance Inflation Factors)和 R 平方(Rsq),这些是解释变量间多重共线性的度量指标 * 置信区间(Confidence intervals):系数的置信区间 “预测(Predict)” 标签页允许计算回归模型的预测值。你可以选择基于数据集预测响应(即从 “预测输入(Prediction input)” 下拉菜单中选择`Data`)、基于命令预测(即从 “预测输入” 下拉菜单中选择`Command`),或结合两者(即从 “预测输入” 下拉菜单中选择`Data & Command`)。 如果选择`Command`,必须至少指定一个变量和值才能获得预测结果。如果未为模型中的每个变量指定值,则会使用均值或最频繁的水平。只能基于模型中的变量预测结果(例如,要预测 2 克拉钻石的`price`,`carat`必须是所选解释变量之一)。 * 要预测 1 克拉钻石的价格,输入`carat = 1`并按回车 * 要预测从 0.5 到 1 克拉、步长为 0.05 的钻石价格,输入`carat = seq(.5, 1, .05)`并按回车 * 要预测 1、2 或 3 克拉理想切工钻石的价格,输入`carat = 1:3, cut = "Ideal"`并按回车 生成所需预测后,可通过点击屏幕右上角的下载图标将其保存为 CSV 文件。要将预测结果添加到用于估计的数据集,点击 “存储(Store)” 按钮。 “绘图(Plot)” 标签页用于提供数据的基本可视化以及验证回归模型的诊断图。 ### 示例 1:目录销售数据 我们获取了一家通过邮购目录销售男女服装的公司的数据(数据集`catalog`)。该公司维护着关于过往和当前客户价值及特征的数据库。客户价值定义为过去一年对客户的总销售额(美元)。数据是从公司数据库中随机抽取的 200 名客户,包含以下 4 个变量: - `Sales` = 家庭过去一年的总销售额(美元) - `Income` = 家庭收入(千美元) - `HH.size` = 家庭规模(人数) - `Age` = 家庭户主年龄 该目录公司有意重新设计其客户关系管理(CRM)策略。我们将分步骤进行: 1. 使用去年的销售总额估计回归模型。响应变量:200 个家庭的销售总额;解释变量:家庭收入(以千美元计)、家庭规模和家庭户主年龄。要获取该数据集,前往 “数据> 管理”,从 “加载数据类型(Load data of type)” 下拉菜单中选择`examples`,按 “加载” 按钮,然后选择`catalog`数据集。 2. 解释每个估计系数。同时对模型整体进行统计评估。 3. 哪些解释变量是客户价值的显著预测因子(使用 95% 置信水平)? **答案:** 选择上述相关变量,按 “估计模型(Estimate model)” 按钮或按`CTRL-enter`(Mac 上为`CMD-enter`)。“模型> 线性回归(OLS)” 的输出如下:

注意,在本示例中,“模型 1(model 1)” 是不含解释变量的回归。正如预期,模型 1 的解释方差为 0。F 检验比较模型 1 和模型 2 的拟合优度,并根据两个模型估计系数数量的差异进行调整。使用的检验统计量如下。R22是模型 2 的解释方差,R12是模型 1 的解释方差。n等于数据中的行数,k2(k1)是模型 2(模型 1)中估计的系数数量。
$$
\begin{eqnarray}
F & = & \frac{(R^2_2 - R^2_1)/(k_2 - k_1)}{(1 - R^2_2)/(n - k_2 - 1)} \\\\
& = & \frac{(0.331 - 0)/(3 - 0)}{(1 - 0.331)/(200 - 3 - 1)} \\\\
& = & 32.325
\end{eqnarray}
$$
我们可以使用与 F 统计量 32.325 相关的 p 值评估原假设。也可以使用概率计算器计算临界 F 统计量。从下方输出可知,该值为 2.651。由于相关 p 值 <0.001,且计算的 F 统计量大于临界值(32.325> 2.651),我们拒绝所有系数均等于 0 的原假设。




















usethis::use_course("https://www.dropbox.com/sh/s70cb6i0fin7qq4/AACje2BAivEKDx7WrLrPr5m9a?dl=1")
回归的数据探索与前置检查(一)
- 本视频展示如何使用 Radiant 在运行线性回归前探索和可视化数据
- 主题列表:
- 查看数据
- 可视化数据
回归结果解读与预测(二)
- 本视频解释如何解读回归结果并从线性回归模型计算预测值
- 主题列表:
- 解释系数(数值变量和分类变量)
- 解释 R 平方和调整后 R 平方
- 解释 F 检验结果
- 从回归模型进行预测
处理分类变量(三)
- 本视频展示如何在线性回归模型中处理分类变量
- 主题列表:
- 在 Radiant 中查看基准类别
- 更改基准类别
向回归模型添加新变量(四)
- 本视频演示如何检验添加新变量是否能得到解释力显著提高的更优模型
- 主题列表:
- 在 Radiant 中设置添加新变量的假设检验
- 解释 F 检验结果
- 将此 F 检验与回归摘要中的默认 F 检验进行比较
线性回归验证(五)
- 本视频演示如何验证线性回归模型
- 主题列表:
- 线性性(散点图,与前置检查中的相同)
- 正态性检验(正态 Q-Q 图)
- 多重共线性(VIF)
- 异方差性
对数 - 对数回归(六)
- 本视频演示何时及如何运行对数 - 对数回归
- 主题列表:
- 使用自然对数函数转换偏态分布数据
- 解释对数 - 对数回归中的系数
### 技术说明
#### 线性模型的系数解释
为说明回归模型中系数的解释,我们从以下方程开始:
$$
S_t = a + b P_t + c D_t + \epsilon_t
$$
其中St是t时刻的单位销售量,Pt是t时刻的价格(美元),Dt是指示产品在某周是否有陈列的虚拟变量,ϵt是误差项。
对于价格等连续变量,在保持模型中其他变量不变的情况下,我们可通过对销售方程求关于P的偏导数,确定 1 美元变化的影响。
$$
\frac{ \partial S_t }{ \partial P_t } = b
$$
因此,b是价格每变化 1 美元对销售量的边际效应。由于D等虚拟变量不是连续的,我们不能使用微分,确定边际效应的方法略有不同。比较D=1和D=0时的销售水平,我们得到:
$$
a + b P_t + c \times 1 - a + b P_t + c \times 0 = c
$$
对于线性模型,c是产品有陈列时对销售量的边际效应。
#### 半对数模型的系数解释
为说明半对数回归模型中系数的解释,我们从以下方程开始:
$$
ln S_t = a + b P_t + c D_t + \epsilon_t
$$
其中ln S_t是t时刻销售量的(自然)对数。对于价格等连续变量,在保持模型中其他变量不变的情况下,我们可通过对销售方程求关于P的偏导数,确定小幅度变化(如 100 美元产品变化 1 美元)的影响。对于方程左侧,我们可使用链式法则:
$$
\frac {\partial ln S_t}{\partial P_t} = \frac{1}{S_t} \frac{\partial S_t}{\partial P_t}
$$
通俗地说,变量自然对数的导数是该变量的倒数乘以该变量的导数。从上述线性模型的讨论中,我们知道:
$$
\frac{ \partial a + b P_t + c D_t}{ \partial P_t } = b
$$
结合这两个方程:
$$
\frac {1}{S_t} \frac{\partial S_t}{\partial P_t} = b \; \text{or} \; \frac {\Delta S_t}{S_t} \approx b
$$
因此,价格每变化 1 美元会导致销售量变化100×b%。注意,此近似仅适用于解释变量的小幅变化,且可能受使用的尺度影响(如价格以美分、美元或千美元计)。下文针对虚拟变量的方法更通用,也可应用于连续变量。
由于D等虚拟变量不是连续的,我们不能使用微分,再次比较D=1和D=0时的销售水平,得到StΔSt。为使左侧为St而非lnSt,我们对两边取指数,得到St=ea+bPt+cDt。当Dt从 0 变为 1 时,St的百分比变化为:
$$
\begin{aligned}
\frac {\Delta S_t}{S_t} &\approx \frac{ e^{a + b P_t + c\times 1} - e^{a + b P_t + c \times 0} } {e^{a + b P_t + c \times 0} }\\
&= \frac{ e^{a + b P_t} e^c - e^{a + b P_t} }{ e^{a + b P_t} }\\
&= e^c - 1
\end{aligned}
$$
对于半对数模型,100×(exp(c)−1)是产品有陈列时销售量的百分比变化。类似地,价格每增加 10 美元,在保持其他变量不变的情况下,我们预期销售量变化100×(exp(b×10)−1)。
#### 对数 - 对数模型的系数解释
为说明对数 - 对数回归模型中系数的解释,我们从以下方程开始:
$$
ln S_t = a + b ln P_t + \epsilon_t
$$
其中lnPt是t时刻价格的(自然)对数。为简化,忽略误差项,我们可通过对两边取指数,将模型改写为乘法形式:
$$
\begin{aligned}
S_t &= e^a + e^{b ln P_t}\\
S_t &= a^* P^b_t
\end{aligned}
$$
其中a∗=ea。对于价格等连续变量,我们可通过对销售方程求关于Pt的偏导数,得到边际效应:
$$
\begin{aligned}
\frac{\partial S_t}{\partial P_t} &= b a^* P^{b-1}_t\\
&= b S_t P^{-1}_t\\
&= b \frac{S_t}{P_t}
\end{aligned}
$$
弹性的一般公式是∂St/∂Pt*Pt/St。将此信息添加到上述方程中,我们看到对数 - 对数回归估计的系数b可直接解释为弹性:
$$
\frac{\partial S_t}{\partial P_t} \frac{P_t}{S_t} = b \frac{S_t}{P_t} \frac{P_t}{S_t} = b
$$
因此,价格每变化 1% 会导致销售量变化b%。
### R 函数
有关 Radiant 中用于估计线性回归模型的相关 R 函数概述,请参见*模型 > 线性回归(普通最小二乘法)*。
`regress`工具中使用的核心函数包括`stats`包中的`lm`,以及`car`包中的`vif`和`linearHypothesis`。