1. 数据导入与清洗回归分析的基石当你拿到一份新鲜出炉的数据集时千万别急着跑回归模型。我见过太多人一上来就输入regress y x1 x2结果被各种缺失值和异常值坑得怀疑人生。正确的打开方式应该是这样的首先用import excel命令导入数据记得加上firstrow参数让Stata自动识别表头import excel D:\data\consumer_behavior.xlsx, sheet(Sheet1) firstrow接下来用browse快速浏览数据全貌就像检查新买的房子要先看户型图一样重要。这时候你可能会发现某些数值变量里混进了NA或999这样的特殊值分类变量的类别拼写不一致比如Male和MALE日期变量被识别成了字符串处理缺失值我常用的三板斧mvdecode _all, mv(-99) // 将-99设为缺失值标记 mvencode _all, mv(.d) // 统一缺失值编码 drop if missing(income) // 删除收入缺失的样本对于分类变量一定要用tabulate检查类别分布tabulate gender, missing tabulate region, gen(region_dummy) // 自动生成虚拟变量2. 描述性统计用数据讲好故事跑回归前不做描述性统计就像相亲不看对方资料一样危险。我常用的黄金组合是summarize price age income, detail // 连续变量 tabulate brand, plot // 分类变量可视化 correlate price age income // 相关系数矩阵这里有个实用技巧用estpost保存统计结果方便导出到论文estpost summarize price age income esttab using summary.rtf, cells(mean sd min max) replace最近帮客户分析电商数据时通过描述性统计发现了个有趣现象某品牌手机在东部地区售价平均比西部高15%这直接影响了后续回归模型的设定。所以千万别小看这个步骤3. 模型设定与估计从简单到复杂终于来到重头戏——回归分析。基础命令很简单regress sales price advertising inventory但高手和新手的区别在于懂得添加这些关键参数regress sales c.price##i.brand c.advertising#c.inventory, vce(robust)c.表示连续变量i.表示分类变量##包含主效应和交互项vce(robust)使用稳健标准误模型结果要看懂这几个关键指标F统计量和p值模型整体显著性R-squared模型解释力系数估计值影响方向和大小t值和p值单个变量显著性4. 模型诊断别被漂亮的R²欺骗曾经有个硕士生的论文差点翻车就是因为没做模型诊断。后来我们用这些方法发现了大问题异方差检验estat hettest // Breusch-Pagan检验 rvfplot // 残差与拟合值散点图多重共线性检测estat vif // 方差膨胀因子 collin price advertising inventory // 条件数异常值识别predict rstudent, rstudent // 学生化残差 list if abs(rstudent)2.5 // 列出异常值去年分析医疗数据时VIF值高达20说明存在严重共线性。我们最终用逐步回归解决了这个问题stepwise, pr(0.05): regress outcome age weight height bp1 bp25. 结果可视化让数字会说话好的可视化能让评审专家眼前一亮。我的Stata绘图秘籍系数森林图coefplot, xline(0) keep(price advertising) levels(95)边际效应图margins, at(price(1000(500)5000)) marginsplot交互效应三维图twoway contour sales price advertising, levels(10)记得导出高清图片graph export plot.png, width(2000) replace6. 进阶技巧让分析更稳健处理完基础问题后可以尝试这些进阶方法面板数据模型xtset id year xtreg y x1 x2, fe robust工具变量法ivregress 2sls sales (price cost_index), first分位数回归qreg sales price advertising, quantile(0.25 0.5 0.75)最近用面板固定效应模型分析零售商数据发现广告投入的回报率被低估了30%这就是不考虑个体效应的后果。7. 完整案例消费者行为分析让我们用奶粉数据实战演练// 数据准备 use milk_powder.dta, clear encode origin, gen(origin_num) encode package, gen(package_num) // 基础回归 regress rating price weight i.origin_num i.package_num // 诊断检验 estat hettest estat vif // 稳健性检验 regress rating c.price##i.origin_num weight, vce(cluster region)这个案例教会我们价格对评价的影响呈U型曲线进口奶粉溢价显著但包装类型的影响不显著。完整分析报告应该包含描述统计表回归结果表诊断检验结果关键效应可视化稳健性检验说明记得用esttab输出专业的三线表esttab using results.tex, replace b(3) se(3) r2 ar2 star(* 0.1 ** 0.05 *** 0.01)