Stata 丢失值的处理

Stata 丢失值的处理,stata,missing-data,Stata,Missing Data,考虑以下玩具示例: . clear . set obs 10 . generate double random = runiform() . generate foo = 1 . replace foo = . if random < 0.50 . generate foo_sum = sum(foo) . list random foo foo_sum +---------------------------+ | random foo foo_

考虑以下玩具示例:

. clear
. set obs 10

. generate double random = runiform()

. generate foo = 1
. replace  foo = . if random < 0.50

. generate foo_sum = sum(foo)

. list random foo foo_sum

    +---------------------------+
    |    random   foo   foo_sum |
    |---------------------------|
 1. | .06692297     .         0 |
 2. | .85529108     1         1 |
 3. | .35454616     .         1 |
 4. |  .4995136     .         1 |
 5. | .53638222     1         2 |
    |---------------------------|
 6. | .84661429     1         3 |
 7. | .15198199     .         3 |
 8. | .33054815     .         3 |
 9. | .06141655     .         3 |
10. | .01555962     .         3 |
    +---------------------------+
。清楚的
. 设置obs 10
. 生成双随机=runiform()
. 生成foo=1
. 替换foo=。如果随机<0.50
. 生成foo_sum=sum(foo)
. 列出随机foo foo_和
+---------------------------+
|随机foo foo_和|
|---------------------------|
1. | .06692297     .         0 |
2. | .85529108     1         1 |
3. | .35454616     .         1 |
4. |  .4995136     .         1 |
5. | .53638222     1         2 |
|---------------------------|
6. | .84661429     1         3 |
7. | .15198199     .         3 |
8. | .33054815     .         3 |
9. | .06141655     .         3 |
10. | .01555962     .         3 |
+---------------------------+
给定变量
foo
中缺少的值,结果是否为
foo\u sum
错了吗?

简言之,没有

结果来自Stata处理缺失观测的事实 与预期不同

foo_sum
中的结果可以说是违反直觉的,因为:

然而:

. display sum(.)
0

. display sum(. + 1)
0
这到底是怎么回事

在这种情况下,Stata似乎认为缺失值为零

另一个例子:

. generate foo_max = max(foo, foo_sum)

. list

    +-------------------------------------+
    |    random   foo   foo_sum   foo_max |
    |-------------------------------------|
 1. | .06692297     .         0         0 |
 2. | .85529108     1         1         1 |
 3. | .35454616     .         1         1 |
 4. |  .4995136     .         1         1 |
 5. | .53638222     1         2         2 |
    |-------------------------------------|
 6. | .84661429     1         3         3 |
 7. | .15198199     .         3         3 |
 8. | .33054815     .         3         3 |
 9. | .06141655     .         3         3 |
10. | .01555962     .         3         3 |
    +-------------------------------------+
鉴于Stata中的缺失值通常被视为正无穷大, 这种情况下的期望值是
,而不是
0
3
,在观察值
1
7

看起来Stata只是忽略了缺少的值

上面的例子说明了我最近做出的一个相当令人惊讶的发现 编程时,我想我应该在这里分享。

简而言之,不

结果来自Stata处理缺失观测的事实 与预期不同

foo_sum
中的结果可以说是违反直觉的,因为:

然而:

. display sum(.)
0

. display sum(. + 1)
0
这到底是怎么回事

在这种情况下,Stata似乎认为缺失值为零

另一个例子:

. generate foo_max = max(foo, foo_sum)

. list

    +-------------------------------------+
    |    random   foo   foo_sum   foo_max |
    |-------------------------------------|
 1. | .06692297     .         0         0 |
 2. | .85529108     1         1         1 |
 3. | .35454616     .         1         1 |
 4. |  .4995136     .         1         1 |
 5. | .53638222     1         2         2 |
    |-------------------------------------|
 6. | .84661429     1         3         3 |
 7. | .15198199     .         3         3 |
 8. | .33054815     .         3         3 |
 9. | .06141655     .         3         3 |
10. | .01555962     .         3         3 |
    +-------------------------------------+
鉴于Stata中的缺失值通常被视为正无穷大, 这种情况下的期望值是
,而不是
0
3
,在观察值
1
7

看起来Stata只是忽略了缺少的值

上面的例子说明了我最近做出的一个相当令人惊讶的发现 编程的时候,我想我应该在这里分享