查看原文
其他

软件应用 | 不摔不知道的坑!这几个STATA误区你中了几个?

快点关注→ 数据Seminar 2023-08-12


STATA是经济类学生几乎绕不开的计量分析软件,其体积小巧、功能强大、计量分析专业准确,上手难度也较低。然而STATA看似简单,却也有很多需要依赖经验才能避开的问题,这些问题即使是STATA老鸟也未必能完全避开,新手更是可能要不断摸索试错才能弄清楚其中的机制,因此我们决定从今天开始不定期分享STATA那些可能有点违背常识和直觉、或者新手极易疏忽混淆的问题

问题触发需要机缘、经验积累需要时间,因此我们将在内容积累到一定分量以后才汇总成单独的一期并分享,希望读者们持续关注我们的公众号。下面就是我们第一期小贴士的内容:



01



STATA的数值型数据可以是缺失值,缺失值显示为一个小数点,无法参与计算,但是可以和其他数值参与比较在某个具体的数值和缺失值进行比较时,缺失值会被看作正无穷、从而得出缺失值更大的结论,这在诸如“在某个变量的取值大于某个固定值时对该观测进行处理”的情形时是致命的,请一定要注意排除包含缺失值的观测。缺失值和缺失值之间比较则会被看作相等,不存在谁大谁小的问题。
如图所示,生成一百条空的观测,并分别赋予1到100的整数的取值作为变量X,再给每个观测均生成由缺失值组成的Y和Z,Y恒大于X,Y恒等于Z,说明缺失值大于其他值,但是缺失值和缺失值被视作相等。



02



STATA的数值一般默认为浮点型,只能保留小数点后七位数值,即使输入的数值精确到小数点7位以后也会被自动省略,在涉及小数点后7位以上的运算结果时请仔细检查



03



由于数值精确度的限制,在比较两个数值的大小时不推荐使用变量相除的商去进行比较,因为计算得到的商的小数点后的部分可能会因为精度限制被四舍五入,使得A略大于B被判断成A等于B。部分同学可能认为先计算商便可以排除那些数值为缺失值的情况,但这种便利之处确实可能导致数值比较错误。为确保万无一失,请尽量直接比较两个变量的大小,并尽量以乘法代替除法,同时辅以if 语句排除那些存在缺失值的情况。例如,如果想比较A是否大于两倍的B,请直接比较A和2*B的大小,而不是用A除以B,然后判断商是否大于2。



04



在分组统计数值时,部分函数可以同时用egen和gen,请避免两者的误用,egen生成的变量对同一个分组内都是相同的,而gen生成的变量对同一个分组内的可能不同(前提是生成的变量涉及对观测的计算),例如egen X=sum(Y),生成的X对组内的所有观测都是相同的,但是使用gen X=sum(Y)时,生成的X会呈现在组内从上往下累加的情形。



05



STATA的变量名称有长度限制,最长不能超过50个左右的英文字符(具体限制忘了),且不能以数字开头,如果是中文字符做变量名,则一个中文字符相当于3个英文字符,STATA读取或去处理的时候会自动截断超出的部分例如使用reshape命令时,如果新分配的变量名称过长会被截断,因此在给变量命名、或可能生成新变量时请尽量避免使用中文全称,请广泛采用缩写、英文、拼音、简称等,并控制长度。



06



STATA的数据在运行时全部存储在内存中,且在观测变化时各变量会自动扩容以容纳新的观测,这在处理字符变量时尤为明显,但变量并不会自动缩小存储空间,因此在剔除部分观测后,可以输入compress命令以压缩空间,这对数据的存储和程序运行都是有好处的。



07



读取dta格式的文件时,STATA使用的内存会大于dta文件本身,因为dta文件存储时按照各观测、各变量的实际信息量来存储,而STATA运行时会按照当前数据最大可容纳的信息量来分配内存空间,例如,某个变量是字符型,分配给该变量的长度为10个英文,假设有10个观测,10个观测的该变量的实际数据长度分别为1到10个英文字符,则dta文件中10个观测的该变量总共存储了55个英文字符,但是在运行时会按照10×10即100个英文字符的空间来分配内存。因此在dta文件略小于当前系统可用剩余内存时,打开该dta文件很可能会出现内存不足的情况。



08



在STATA的Do文件中添加注释时请尽量避免把注释直接加在命令行的末尾,最好采用单独成行的形式,否则将行末包含注释的命令直接拷贝到命令栏运行时会报错


——The  End——

后期将会不定时更新~

关注我们,及时获取最新资讯!




星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧

往期推荐


Python 教学 | Pandas 数据合并(含目录文件合并案例)

Python 教学 | Pandas 表格字段类型精讲(含类型转换)

Python 教学 | Pandas 表格数据行列变换

Python 教学 | Pandas 缺失值与重复值的处理方法

Python 教学 | Pandas 妙不可言的条件数据筛选




数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


文 | 石总


    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存