删除 Stata 中具有较大标准化残差的异常值
Remove outliers with large standardized residuals in Stata
我 运行 在 Stata 中对两个子样本进行简单回归,之后我想排除所有标准化残差大于 3.0 的观测值。我试过了:
regress y x if subsample_criteria==1
gen st_res1=e(rsta)
regress y x if subsample_criteria==0
gen st_res2=e(rsta)
drop if st_res1 | st_res2 > 3.0
但是,新变量充满了缺失值和支架值。残差不存储在变量 st_res1 和 st_res2 中。
感谢任何提示!
你的代码的问题是 Stata 不知道 e(rsta)
是什么(我也不知道),所以它造成了一个缺失,Stata 认为这是一个非常大的正数。所有缺失均大于 3,因此您的约束不绑定。
忽略这样做的统计优点,这是一种方法:
sysuse auto, clear
reg price mpg
predict ehat, rstandard
reg price mpg if abs(ehat)<3
请注意,我使用的是残差的绝对值,我认为这里更有意义。
首先,提供 MCVE 始终是良好的第一步(考虑到 Stata 的 sysuse
和 webuse
命令,这相当容易)。现在,进入正题。
请参阅 help regress postestimation
和 help predict
以了解使用残差等生成新变量的正确语法。该语法与 gen
命令有点不同,如下所示.
另请注意,您的 drop if
条件格式不正确,现在被解释为 drop if st_res1 != 0 | st_res2 > 3.0
。 (我还假设您想删除小于 -3.0 的标准化残差,但如果这不正确,您可以删除 abs()
函数。)
sysuse auto , clear
replace mpg = 10000 in 1/2
replace mpg = 0.0001 in 70
reg mpg weight if foreign
predict rst_for , rstandard
reg mpg weight if !foreign
predict rst_dom , rstandard
drop if abs(rst_for) > 3.0 | abs(rst_dom) > 3.0
后记: 请注意,您还可以考虑将 if e(sample)
添加到 predict
命令中,具体取决于您是否希望推断子样本的结果对整个样本进行回归并评估 所有 残差,或者您是否只想删除基于样本内标准化残差的观察值。
我 运行 在 Stata 中对两个子样本进行简单回归,之后我想排除所有标准化残差大于 3.0 的观测值。我试过了:
regress y x if subsample_criteria==1
gen st_res1=e(rsta)
regress y x if subsample_criteria==0
gen st_res2=e(rsta)
drop if st_res1 | st_res2 > 3.0
但是,新变量充满了缺失值和支架值。残差不存储在变量 st_res1 和 st_res2 中。
感谢任何提示!
你的代码的问题是 Stata 不知道 e(rsta)
是什么(我也不知道),所以它造成了一个缺失,Stata 认为这是一个非常大的正数。所有缺失均大于 3,因此您的约束不绑定。
忽略这样做的统计优点,这是一种方法:
sysuse auto, clear
reg price mpg
predict ehat, rstandard
reg price mpg if abs(ehat)<3
请注意,我使用的是残差的绝对值,我认为这里更有意义。
首先,提供 MCVE 始终是良好的第一步(考虑到 Stata 的 sysuse
和 webuse
命令,这相当容易)。现在,进入正题。
请参阅 help regress postestimation
和 help predict
以了解使用残差等生成新变量的正确语法。该语法与 gen
命令有点不同,如下所示.
另请注意,您的 drop if
条件格式不正确,现在被解释为 drop if st_res1 != 0 | st_res2 > 3.0
。 (我还假设您想删除小于 -3.0 的标准化残差,但如果这不正确,您可以删除 abs()
函数。)
sysuse auto , clear
replace mpg = 10000 in 1/2
replace mpg = 0.0001 in 70
reg mpg weight if foreign
predict rst_for , rstandard
reg mpg weight if !foreign
predict rst_dom , rstandard
drop if abs(rst_for) > 3.0 | abs(rst_dom) > 3.0
后记: 请注意,您还可以考虑将 if e(sample)
添加到 predict
命令中,具体取决于您是否希望推断子样本的结果对整个样本进行回归并评估 所有 残差,或者您是否只想删除基于样本内标准化残差的观察值。