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)

同工具的其他报错

报错解决了,但方法还没搞懂?

报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。

进入知识库 →