我有以下数据,我想应用log()函数:
v1
2
3
4
-1
5预期产出:
v1
2 0.30 ~ log(2)
3 0.48 ~ log(3)
4 0.60 ~ log(4)
-1 .
5 0.70 ~ log(5)这只是问题的一个简化版本。我的数据集中有35000观察,我找不到像drop if v1 <= 0这样的简单规则来解决这个问题。
在不首先筛选数据的情况下,我心目中的一种方法是使用for循环并在观察结果上运行log()函数。然而,我找不到任何网站告诉我如何做到这一点。
发布于 2018-12-01 08:05:51
如果要求取零或负值的对数,Stata将返回缺失。但
generate log_x = log(x) 和
generate log_x = log(x) if x > 0 就会有同样的结果,在观察中漏掉了有问题的价值。
这里更大的问题是统计。你为什么要取这样一个变量的对数呢?如果您的想法是转换一个变量,那么其他的转换是可用的。如果变量是响应变量或结果变量,则即使存在一些零值或负值,具有对数链接的广义线性模型也会工作;其思想只是均值函数应该保持为正。
已经有许多,许多线程提出了这些问题的交叉验证和状态。
我想不出你为什么认为这里需要一个循环或者有帮助。使用上述的generate语句,Stata会自动遍历观察结果。
https://stackoverflow.com/questions/53567761
复制相似问题