Stata实战:用内置auto数据集5分钟搞定回归、画图与异质性检验
Stata实战用内置auto数据集5分钟搞定回归、画图与异质性检验当我们需要快速掌握Stata的基础分析流程时内置的auto数据集就像一位随时待命的助手。这个经典的汽车数据集包含了价格、油耗等关键变量让我们无需准备数据就能立即开始实战。本文将带你用最短时间走完从数据探索到异质性分析的完整流程每个步骤都配有即用型代码和白话解读特别适合赶作业的学生或需要快速验证思路的研究者。1. 环境准备与数据初探打开Stata后第一件事就是加载这个内置数据集。输入以下命令sysuse auto, clear这个命令做了两件事sysuse调用了Stata系统自带的数据集clear确保清空了当前工作区。接着我们可以用describe快速查看数据结构describe你会看到类似这样的输出部分截取变量名类型说明makestr18汽车品牌priceint价格美元mpgint每加仑行驶英里数foreignbyte国产(0)/进口(1)提示foreign是二分类变量这在后续异质性分析中会非常有用。用summarize获取关键变量的描述统计sum price mpg foreign输出示例Variable | Obs Mean Std. Dev. Min Max ------------------------------------------------- price | 74 6165.3 2949.5 3291 15906 mpg | 74 21.297 5.786 12 41 foreign | 74 0.297 0.460 0 1这些数字告诉我们样本共74辆汽车平均价格约6165美元最便宜的车3291美元最贵的近1.6万美元。油耗(mpg)均值为21.3最省油的车能跑41英里/加仑。2. 基础回归分析与解读现在我们来研究价格(price)和油耗(mpg)的关系。直觉上更省油的车可能更贵因为技术更先进但事实真的如此吗运行OLS回归reg price mpg输出结果包含几个关键部分Source | SS df MS Number of obs 74 ---------------------------------- F(1, 72) 20.26 Model | 139449474 1 139449474 Prob F 0.0000 Residual | 495615923 72 6883554.48 R-squared 0.2196 ---------------------------------- Adj R-squared 0.2087 Total | 635065396 73 8699525.97 Root MSE 2623.7 ------------------------------------------------------------------------ price | Coef. Std. Err. t P|t| [95% Conf. Interval] ---------------------------------------------------------------------- mpg | -238.894 53.0767 -4.50 0.000 -344.700 -133.089 _cons | 11253.06 1170.81 9.61 0.000 8919.088 13587.04如何解读这些天书般的数字系数(coef)mpg的系数为-238.9意味着每增加1个mpg单位价格平均下降238.9美元。这与我们的直觉相反可能因为经济型车往往更省油但价格更低。P值mpg的P值0.000远小于0.05说明这个负相关关系统计显著。R方0.2196意味着mpg能解释价格变异的21.96%还有近80%由其他因素决定。生成残差检查模型假设predict resid, residuals3. 可视化让数据自己说话数字太抽象让我们用图形直观展示关系。首先绘制价格与油耗的散点图拟合线twoway (scatter price mpg) (lfit price mpg), /// title(价格与油耗关系) ytitle(价格(美元)) xtitle(油耗(mpg))这张图清晰显示大部分点都沿着向下倾斜的拟合线分布印证了回归结果。但右上角有几个离群点——这些是油耗高却价格不菲的车型值得进一步研究。检查残差是否满足同方差假设twoway (scatter resid mpg) (lfit resid mpg), /// title(残差分析) ytitle(残差) xtitle(油耗(mpg))如果残差随机分布在0附近说明模型假设成立。但本例中残差呈现漏斗形——油耗越高残差波动越大这提示可能存在异方差问题。4. 异质性分析国内外汽车差异foreign变量让我们可以轻松比较国产车与进口车的差异。先看描述统计对比bysort foreign: sum price mpg输出示例- foreign 国产 Variable | Obs Mean Std. Dev. Min Max ------------------------------------------------- price | 52 6072.4 3097.1 3291 15906 mpg | 52 19.827 4.743 12 34 - foreign 进口 Variable | Obs Mean Std. Dev. Min Max ------------------------------------------------- price | 22 6384.7 2621.9 3748 12990 mpg | 22 24.773 6.611 14 41进口车平均油耗更高(24.8 vs 19.8)但价格差异不大(6385 vs 6072美元)。接下来分别回归国产车模型reg price mpg if foreign0结果price | Coef. Std. Err. t P|t| ------------------------------------------ mpg | -329.255 82.118 -4.01 0.000 _cons | 12600.54 1627.8 7.74 0.000进口车模型reg price mpg if foreign1结果price | Coef. Std. Err. t P|t| ------------------------------------------ mpg | -104.606 97.581 -1.07 0.296 _cons | 8992.94 2469.1 3.64 0.002关键发现国产车油耗每增加1单位价格显著下降329美元进口车油耗系数(-104.6)不显著(P0.296)说明油耗对价格影响不大用组合图表展示异质性twoway (scatter price mpg) (lfit price mpg if foreign0) /// (lfit price mpg if foreign1), by(foreign) /// legend(label(1 观测值) label(2 国产车拟合线) label(3 进口车拟合线))这个分析揭示了有趣的商业模式差异国产车市场更注重燃油经济性对价格的影响而进口车价格受其他因素如品牌溢价、豪华配置影响更大。5. 完整代码清单与使用建议以下是本文所有分析的整合代码复制粘贴即可复现全部结果/* 数据加载与描述统计 */ sysuse auto, clear describe sum price mpg foreign /* 基础回归分析 */ reg price mpg predict resid, residuals /* 可视化 */ twoway (scatter price mpg) (lfit price mpg), /// title(价格与油耗关系) ytitle(价格) xtitle(油耗) twoway (scatter resid mpg) (lfit resid mpg), /// title(残差分析) ytitle(残差) xtitle(油耗) /* 异质性分析 */ bysort foreign: sum price mpg reg price mpg if foreign0 reg price mpg if foreign1 twoway (scatter price mpg) (lfit price mpg if foreign0) /// (lfit price mpg if foreign1), by(foreign)迁移到自己的数据时注意将price和mpg替换为你的因变量和自变量分类变量替代foreign进行异质性分析遇到错误时先用help 命令名查看官方文档