STATA 常用模型与命令

本文提供STATA软件中的常用命令概览,包括数据管理、统计分析、回归模型及检验方法。涵盖数据生成、修改、回归分析如OLS、logit、probit,以及各类检验如异方差、多重共线性、自相关等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用命令

数据相关

生成新数据

利用旧数据定义新数据,注意,如果使用的旧数据为两个及以上,只要其中一个为空值,则新数据也为空值(即空值不会自动转化为0):
gen new_valuename = f(value1,value2,……)
如果要生成时间序列,可以定义原有的时间序列数据:
tsset valueame
如果原本没有,可以定义一列新的时间序列:
gen t=_n
tsset t

删除和修改数据

删除数据:
drop value1 value2 value3 ……
保留数据(除保留的以外全部删除):
keep value1 value2 value3 ……
修改数据:
replace valuename = f(value1 , value2 ,……)
修改数据时也可以将自己作为自变量,比如:
replace age = age -1
则age数据全部减少1
注意,请谨慎使用 drop 命令,该命令不可撤销,数据一旦丢失将无法追回,建议使用do文件减少风险(找不回,只是可以选择不保存,然后不用重输命令)

一键删除全部含有缺失值的对象:
egen mis = rowmiss(_all)
drop if mis

删除重复值(删除重复值后会保留第一个数据):
duplicates drop valuename , force

改变数据类型

excel导入的时候,数值型的数据如果有缺失,可能会被导成数值型,可以利用以下操作强制改为数值型
destring value ,force

条件命令

条件命令为 if ,并且的符号为&,或者的符号为|,否认的符号为!,以下为示例:
drop value1 if value 1 >=1 & value 2>=3
drop value1 if value 1 >=1 | value 2>=3
drop value1 if value 4 != “error”

取对数命令

底数为e取对数:
log(value)
底数为10取对数:
log10(value)
取对数后新数值的系数表示百分比变化,如果回归结果不好,可以尝试对其中相对大的数据列取对数。

输出相关

将不同回归结果输出到同一张表中,其中的省略号为所作的操作,注意nest与逗号之间要有空格,不然会失败(第一条命令为安装命令,已经安装的可以跳过):
ssc install asdoc, replace
asdoc …… , nest replace
asdoc …… , nest append

如果要输出描述统计或者其他结果,则可以用:
asdoc …… , save(docname.doc) title(titlename)

常用回归

非线性选择回归

logit回归

二元选择回归,因变量y为虚拟变量:
logistic y x1 x2 x3……
此外逻辑回归也可以做到分组回归,多元选择回归,在学习完成后在这个博客上将继续补充

probit回归

probit y x1 x2 x3……
与逻辑回归的用法相同,虽然思想不一样,但通常情况下,probit回归估计出的参数值乘以1.814,大致会等于logistic回归中的参数值。

线性回归

OLS

reg y x1 x2 x3……
如果有虚拟变量,可以使用xi命令快捷生成:
xi:reg y x1 x2 x3 i.x4……

Heckman 回归

选择样本模型的一种,这里给出heckman二步法的命令:
heckman y x1 x2 x3 …… , select(xi = z1 z2) twostep
后面的select变量中必须含有至少一种影响xi但对y没有影响的变量,xi为选择变量,这种方法会直接输出第二步回归时的R^2,但无第一步的信息,且默认第二步为OLS回归。可以使用下列方法分布计算:
dprobit xi x1 x2 z1 z2
predict zg if e(sample),xb
gen lambda = normalden(zg) / normal(zg)
reg y x1 x2 x3 …… lambda

符号含义同上,新增lambda变量意为“反Mills比例”,若其为负数则说明确实存在选择问题,使用该方法是合理的。另外,对最后一步可以替换为其他回归,例如2SLS等。

Tobit回归

选择样本模型的一种,只给出一般的tobit命令:
tobit y x1 x2 x3……

2SLS回归(工具变量法)

被解释变量:y

解释变量:x1

控制变量:x2 x3 x4

工具变量:z1 z2

reg x1 z1 x2 x3 x4, robust
ivregress 2sls y x1 x2 x3 x4 (x1= z1 z2), robust

常用检验

在做完回归后进行输入命令:

异方差检验

estat hettest
假如prob > chi2 的值小于0.05 则检验通过

多重共线性检验

estat vif
假如整体的vif小于10则通过

自相关检验

estat dwatson
一般DW值在2附近则通过(也可以用DW表对照自己判断)

格兰杰因果检验

存在滞后项时使用
先下载格兰杰因果检验程序gcause
ssc install gcause
检验x对y的因果关系,以下命令为滞后1、2期,显示其AIC、BIC的取值,一般的检验到滞后三期为止,之后进行y对x的检验,命令类似,不予贴出:
gcause y x,lags(1)
estat ic
gcause y x,lags(2)
estat ic

稳健性检验

通常是通过改变工具变量或是使用不同的计量方法,如果回归结果类似,则说明结果具有稳健性

内生性检验

通常意味着变量之间相互影响,可以考虑改变工具变量或是使用Durbin-Wu-Hausman 方法进行检验
代码为:
estat endogenous
输出结果示例:
在这里插入图片描述
原假设为“变量是外生的”,若p值较大则接受原假设。这里可采用较大的p值以求结果的可靠性。

<think>好的,用户问的是如何在Stata中进行VIF检验。首先我需要回忆一下Stata的相关命令,以及VIF的基本概念。VIF是用来检测多重共线性的指标,通常通过回归分析后的辅助计算得到。 记得在Stata中,进行回归后可以使用命令`vif`来直接计算方差膨胀因子。用户可能需要先运行回归模型,比如`regress y x1 x2 x3`,然后输入`vif`。不过得确认用户是否了解步骤细节,比如是否需要安装额外的包,一般来说Stata的基础版本就包含这个命令。 另外,用户提供的引用里提到了VIF的计算方法,比如引用[1]和[4]提到VIF值是基于其他变量对某个自变量的回归R²计算的,公式是1/(1-R²)。所以在解释时可能需要提到这一点,但用户的问题主要是操作步骤,所以重点放在Stata的具体操作上。 还要注意用户可能的需求,比如如何解读结果,临界值是多少。通常VIF大于10被认为存在严重共线性,但不同文献可能有不同标准,这点需要说明。 是否需要举例说明?比如给出一个具体的Stata代码示例,从数据导入到回归再到vif命令,这样用户能更清楚流程。比如: 1. 导入数据:`use "data.dta", clear` 2. 运行回归:`regress y x1 x2 x3` 3. 计算VIF:`vif` 然后解释输出结果中各变量的VIF值,并说明如何判断是否存在多重共线性。 还要检查是否有常见错误,比如是否在回归后立即使用`vif`,或者是否变量中有缺失值导致的问题。此外,用户可能想知道如果VIF过高该怎么办,比如删除变量或使用其他方法,但根据问题,主要回答如何计算,可以简要提及应对方法。 最后,确保回答结构清晰,分步骤说明,并附上示例代码,这样用户能一步步跟着操作。同时,引用中的内容需要正确标注,比如引用[1]提到VIF计算的具体例子,引用[4]解释R²VIF的关系,这些可以作为补充说明。</think>在Stata中进行方差膨胀因子(VIF)检验的步骤如下: --- ### **1. 基本操作步骤** 1. **运行回归模型** 使用`regress`命令建立包含所有自变量的线性回归模型: ```stata regress 因变量 自变量1 自变量2 ... 自变量n ``` 例如: ```stata regress price mpg weight length ``` 2. **计算VIF值** 在回归完成后,直接输入`vif`命令: ```stata vif ``` Stata会自动输出每个自变量的VIF值和容忍度(Tolerance)[^4]。 --- ### **2. 结果解读** - **VIF阈值**: - VIF < 10:一般认为不存在严重多重共线性[^1]。 - VIF ≥ 10:提示变量间存在较强共线性,需进一步处理。 - **容忍度(Tolerance)**: 容忍度=1/VIF,值越接近1,共线性风险越低。 --- ### **3. 完整示例** 假设检验汽车价格(`price`)油耗(`mpg`)、车重(`weight`)、车长(`length`)的共线性: ```stata sysuse auto, clear // 加载Stata内置数据集 regress price mpg weight length // 建立回归模型 vif // 计算VIF ``` 输出结果示例: ``` Variable | VIF 1/VIF -------------+---------------------- weight | 3.15 0.3176 length | 2.87 0.3482 mpg | 1.23 0.8130 ------------------------------------- Mean VIF | 2.42 ``` --- ### **4. 扩展功能** - **检查单个变量的VIF**: 使用`collin`命令(需安装)可输出更详细的共线性诊断: ```stata ssc install collin // 安装命令 collin mpg weight length ``` - **处理高VIF变量**: 若VIF过高,可考虑删除变量、合并变量或使用岭回归等方法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值