数据取对数的意义

平时在一些数据处理中,经常会把原始数据取对数后进一步处理。

之所以这样做是基于对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有:

1. 缩小数据的绝对数值,方便计算。

例如,每个数据项的值都很大,许多这样的值进行计算可能对超过常用数据类型的取值范围,这时取对数,就把数值缩小了,例如TF-IDF计算时,由于在大规模语料库中,很多词的频率是非常大的数字。

 

2. 取对数后,可以将乘法计算转换称加法计算。

 

3. 某些情况下,在数据的整个值域中的在不同区间的差异带来的影响不同。例如,中文分词的mmseg算法,计算语素自由度时候就取了对数,这是因为,如果某两个字的频率分别都是500,频率和为1000,另外两个字的频率分别为200和800,如果单纯比较频率和都是相等的,但是取对数后,log500=2.69897, log200=2.30103, log800=2.90308 这时候前者为2log500=5.39794, 后者为log200+log800=5.20411,这时前者的和更大,取前者。因为前面两个词频率都是500,可见都比较常见。后面有个词频是200,说明不太常见,所以选择前者。

从log函数的图像可以看到,自变量x的值越小,函数值y的变化越快,还是前面的例子,同样是相差了300,但log500-log200>log800-log500,因为前面一对的比后面一对更小。

也就是说,对数值小的部分差异的敏感程度比数值大的部分的差异敏感程度更高。这也是符合生活常识的,例如对于价格,买个家电,如果价格相差几百元能够很大程度影响你决策,但是你买汽车时相差几百元你会忽略不计了。

 

4. 取对数之后不会改变数据的性质和相关关系,但压缩了变量的尺度,例如800/200=4, 但log800/log200=1.2616,数据更加平稳,也消弱了模型的共线性、异方差性等。

5. 且所得到的数据易消除异方差问题。

6. 在经济学中,常取自然对数再做回归,这时回归方程为 lnY=a lnX+b ,两边同时对X求导,1/Y*(DY/DX)=a*1/X, b=(DY/DX)*(X/Y)=(DY*X)/(DX*Y)=(DY/Y)/(DX/X) 这正好是弹性的定义。

 

当然,如果数据集中有负数当然就不能取对数了。实践中,取对数的一般是水平量,而不是比例数据,例如变化率等

### 如何在 Stata 中实现数据的对数转换 #### 数据准备 为了展示如何执行对数变换,在此先加载一个示例数据集[^1]: ```stata use http://fmwww.bc.edu/repec/bocode/c/CardKrueger1994.dta, clear ``` #### 对数值计算 对于想要进行对数变化的数据列,可以使用 `generate` 或者简称 `gen` 命令来创建新的变量保存结果。假设有一个名为 `wage` 的工资变量,那么可以通过下面的方式生成其自然对数形式的新变量 `ln_wage`: ```stata gen ln_wage = log(wage) ``` 需要注意的是,如果原始数据集中存在缺失值,则上述命令可能会因为遇到这些特殊标记而失败或产生不期望的结果。因此建议在此之前先行检查并处理可能存在的缺失情况[^3]: ```stata * 查看是否有缺失值 count if missing(wage) * 如果有必要的话替换掉所有的缺失值为0或其他合适的数值之前应该考虑业务逻辑意义 replace wage=0 if missing(wage) ``` 另外一种常见的情况是对整个样本施加条件过滤器以排除那些不符合特定标准(比如负数)从而避免非法运算错误的发生。 #### 处理特殊情况 当面对非正数时,简单的取对数将会导致定义域外的问题。此时可以在原有基础上加上一个小常量使得所有观测都变为正值再做变换;或者直接忽略掉这部分异常点只保留有效区间内的记录继续分析。 ```stata * 加上小常量的方法 gen ln_wage_with_constant = log(wage + 0.001) * 排除非正常范围之外的数据后再求解 gen ln_wage_filtered = . replace ln_wage_filtered = log(wage) if wage>0 & !missing(wage) ``` 以上就是在 Stata 软件环境中完成基本数据对数化的过程概述以及一些注意事项说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值