Tabs 带零的Stata表格
我对Stata和命令有问题:Tabs 带零的Stata表格,tabs,stata,Tabs,Stata,我对Stata和命令有问题: svy: tab x 当给定的x没有观测值时 我的问题是,当一个类别没有观测值时,Stata只会删除相应的行 我的任务是运行几个表格,并将关键结果保存并导出到csv文件。有时存储的向量有n个元素,而有时由于零,它们只有n-1个元素,因此我不知道如何将它们组合到一个更大的矩阵中(或者至少将其导出到一个文件中,行间距规则,如果没有观测值,则值为0)。 我也试过了 estpost svy, subpop(x0): tab x, count se format(%10.4
svy: tab x
当给定的x
没有观测值时
我的问题是,当一个类别没有观测值时,Stata只会删除相应的行
我的任务是运行几个表格,并将关键结果保存并导出到csv文件。有时存储的向量有n个元素,而有时由于零,它们只有n-1个元素,因此我不知道如何将它们组合到一个更大的矩阵中(或者至少将其导出到一个文件中,行间距规则,如果没有观测值,则值为0)。
我也试过了
estpost svy, subpop(x0): tab x, count se format(%10.4g)
但是我仍然有同样的问题。更新3
此解决方案基于estpost svy:tab
,因为该命令返回的可用结果向量比svy:tab
本身更多。与以前的版本一样,此解决方案将所有这些结果放入Stata数据集中。它在使用循环之前添加了一个检查数据是否包含缺少的类别的方法,并稍微收紧了循环限制。根据Nick的建议,缺失值将替换所有与标准错误相关的统计数据。注意
estpost svy: tab rep78
默认情况下,将估计的单元格比例放入e(b)
,将其标准错误放入e(se)
,而
estpost svy: tab rep78, count
将估计的计数及其SEs放入这些矩阵中。但是,另一个摘要仍然可用,可以在e(单元格)
或e(计数)
中找到
更新2:这是一个版本,它在Mata中完成了大部分工作,然后将估计值保存到Stata数据集中。我稍微更改了矩阵的名称
sysuse auto, clear
svyset _n
drop if rep78== 2 | rep78==5
svy: tab rep78, count se
local maxcat =5
mata:
r = st_matrix("e(Row)")'
ct = st_matrix("e(Obs)")
serr= sqrt(diagonal(st_matrix("e(V)")))
d = J(`maxcat',3,0)
for (j = 1; j<=`e(r)'; j++) {
for (k = 1; k<=`maxcat'; k++) {
d[k,1] = k
if (r[j,1]== k) {
d[k,2] = ct[j,1]
d[k,3] = serr[j,1]
}
}
}
end
clear
getmata (rep78 count se) = d
replace se = . if count==0
format se %8.2f
list
save results, replace
sysuse自动,清除
斯维塞特
如果rep78==2 | rep78==5,则删除
svy:制表符rep78,计数se
本地最大值=5
马塔:
r=st_矩阵(“e(行)”)
ct=st_矩阵(“e(Obs)”)
serr=sqrt(对角线(st_矩阵(“e(V)”))
d=J(`maxcat',3,0)
对于(j=1;j更新3
此解决方案基于estpost svy:tab
,因为该命令返回的可用结果向量比svy:tab
本身更多。与上一版本一样,此解决方案将所有这些结果放入Stata数据集中。它在诉诸循环之前添加了一个检查数据是否包含缺少的类别的方法,并收紧了循环限制很小。按照Nick的建议,缺失的值将替换所有与标准错误相关的统计数据。请注意
estpost svy: tab rep78
默认情况下,将估计的单元格比例放入e(b)
,将其标准错误放入e(se)
,而
estpost svy: tab rep78, count
将估计的计数及其SEs放入这些矩阵中。但是另一个摘要仍然可用,可以在e(单元格)
或e(计数)
中找到
更新2:这是一个版本,它在Mata中完成了大部分工作,然后将估计值保存到Stata数据集中。我稍微更改了矩阵的名称
sysuse auto, clear
svyset _n
drop if rep78== 2 | rep78==5
svy: tab rep78, count se
local maxcat =5
mata:
r = st_matrix("e(Row)")'
ct = st_matrix("e(Obs)")
serr= sqrt(diagonal(st_matrix("e(V)")))
d = J(`maxcat',3,0)
for (j = 1; j<=`e(r)'; j++) {
for (k = 1; k<=`maxcat'; k++) {
d[k,1] = k
if (r[j,1]== k) {
d[k,2] = ct[j,1]
d[k,3] = serr[j,1]
}
}
}
end
clear
getmata (rep78 count se) = d
replace se = . if count==0
format se %8.2f
list
save results, replace
sysuse自动,清除
斯维塞特
如果rep78==2 | rep78==5,则删除
svy:制表符rep78,计数se
本地最大值=5
马塔:
r=st_矩阵(“e(行)”)
ct=st_矩阵(“e(Obs)”)
serr=sqrt(对角线(st_矩阵(“e(V)”))
d=J(`maxcat',3,0)
对于(j=1;jSee用于相同的问题,尽管没有svy
元素。例如,所提到的tabcount
程序不支持svy
。请参阅用于相同的问题,尽管没有svy
元素。例如,所提到的tabcount
程序不支持svy
。Steve:Helpful代码,但这是一个诡辩,即使你是这里的svy
专家。计数为零并不意味着标准误差也为零,除非相关的零是结构性的(例如怀孕男性)。否则,任何要求查看缺失类别行的人都可能认为该类别是可能的。我暂时建议将SE报告为缺失,因为我们只知道它是某个正数(而不是零).我同意,尼克,我确实在mata
块外将SEs设置为missing。我认为这是最好、最简单的方法。还有其他可选的统计信息,例如ci
,需要相同的处理。在mata
块内处理它们会很麻烦。与从svy:tab返回的向量不同e> ,那些来自estpost svy:tab
的包括置信上限和置信下限。我会修改以包括它们。史蒂夫:代码很有用,但另一方面是一个诡辩,即使你是这里的svy
专家。计数为零并不意味着标准错误也为零,除非相关的零是结构性的(例如怀孕的男性)。否则,任何要求查看缺失类别行的人都可能认为该类别是可能的。我暂时建议将SE报告为缺失,因为我们只知道它是某个正数(而不是零).我同意,尼克,我确实在mata
块外将SEs设置为missing。我认为这是最好、最简单的方法。还有其他可选的统计信息,例如ci
,需要相同的处理。在mata
块内处理它们会很麻烦。与从svy:tab返回的向量不同e> ,来自estpost svy:tab
的包括置信上限和置信下限。我将修改以包括它们。