我想创建一个新变量,它是另一个变量的累积正态分布。
在Microsoft Excel中,可以为此目的使用NORM.DIST()
函数。
为什么Stata中的normal()
函数会给出错误的结果?
答案 0 :(得分:1)
这两个函数采用不同的参数并计算不同的事物。
如帮助文件所示,Stata中的normal()
会产生累积的 standard 标准
分配。因此,您需要手动编程均值和标准差
在计算中。
考虑玩具变量foo
:
clear
input float foo
2173.0742
2359.8853
2348.756
2230.948
2287.8667
2240.9429
2347.436
2187.2986
2214.4404
2085.7507
2169.026
2109.919
2093.1243
2095.3267
2257.6838
2096.9065
2435.4988
2204.931
2389.233
2395.1487
end
您可以获得具有所需输出的变量wanted
,如下所示:
summarize foo
generate double wanted = normal((foo - r(mean)) / r(sd))
sort foo
list, separator(0)
+----------------------+
| foo wanted |
|----------------------|
1. | 2085.751 .09156513 |
2. | 2093.124 .10277087 |
3. | 2095.327 .10630367 |
4. | 2096.906 .1088913 |
5. | 2109.919 .13193719 |
6. | 2169.026 .27620211 |
7. | 2173.074 .28830887 |
8. | 2187.299 .33271053 |
9. | 2204.931 .39112507 |
10. | 2214.44 .423783 |
11. | 2230.948 .48160468 |
12. | 2240.943 .51688294 |
13. | 2257.684 .57553974 |
14. | 2287.867 .6763894 |
15. | 2347.436 .83764808 |
16. | 2348.756 .8405014 |
17. | 2359.885 .86324563 |
18. | 2389.233 .91225237 |
19. | 2395.149 .92030306 |
20. | 2435.499 .96115312 |
+----------------------+