statar(411)估计与检验
Stata 报错 r(411):nonpositive values encountered(出现非正值)
命令要求变量必须为正,但数据里有 0 或负数。最高频是取对数:gen ln_y = ln(y),而 y 有 0 或负值;ztest 的标准差给成负数也会报这个。
报错原文
nonpositive values encountered
r(411);为什么会报这个错
命令要求变量必须为正,但数据里有 0 或负数。最高频是取对数:gen ln_y = ln(y),而 y 有 0 或负值;ztest 的标准差给成负数也会报这个。
怎么解决
先 count if y <= 0 定位。常见处理:ln(y+1)、用 asinh()、或把 0 当作缺失。做 DID/回归时对数变换前一定要检查。
代码示例
count if y <= 0
list y if y <= 0
// 常见处理
gen ln_y = ln(y + 1)
// 或
gen ln_y = asinh(y)同工具的其他报错
报错解决了,但方法还没搞懂?
报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。
进入知识库 →