【问题标题】:How to weigh percentages with proc tabulate?如何用proc制表衡量百分比?
【发布时间】:2020-04-03 01:22:45
【问题描述】:

我正在使用proc tabulate 创建一堆频率表,我必须根据一组关于我的数据集中每个person 的年龄的权重来衡量百分比。我的问题是权重似乎对我的结果有任何影响。我知道,我可以使用 proc freq 来做到这一点,但我的表格非常详细,因此我使用的是 proc tabulate。

我已经包含了一个数据集的示例,以及到目前为止我尝试过的内容:

Data have; 
input gender wgt q1 year;
lines;
0  1.5  0  2014
0  1    1  2014
0  1.5  1  2014
0  1    1  2014
0  1.5  0  2014
1  1    1  2014
1  1    1  2014
1  1    1  2014
1  1    0  2014
1  1   1  2014
1  1    1  2014
;
run;

Proc format;
  value gender  0="boy";
                1= "girl";
  value q1f     0= "No"
                1="Yes";
run;

Proc tabulate data=have;
class gender q1 year;
weight wgt;
table gender*pctn<q1>, year*q1;
format gender gender. q1 q1f.;
run;

我知道结果应该是那个应用程序。 46,2 % 男孩已经回答“否”和应用程序。 53,8 % 的人回答是,当我包括权重时,但 proc 表格的输出给了我 40 % 否和男孩中的 60 % 是的。 我做错了什么?

【问题讨论】:

  • 我不知道sas 语言,但是没有权重,输出是正确的,因为 3/5 男孩投了赞成票(60%)。所以也许你需要做类似table gender*pctn&lt;q1*wgt&gt;, year*q1
  • 确认 - 您正在尝试制作类似的东西,但使用 proc tabulate? proc freq data = have; table gender * q1 /nocol nopercent nofreq; weight wgt; format gender gender. q1 q1f.; run;

标签: sas


【解决方案1】:

WEIGHT 语句将影响VAR 变量值,而不是 N 计数。 PCT&lt;N&gt; 是计数的百分比。 'FREQ' 语句将通过导致基于另一个变量的数据点的内部重复来影响 N 计数,但是 FREQ 不适用于小数重复(值)并且会向下舍入。

来自帮助

FREQ 变量;

指定一个数值变量,其值表示观察的频率。如果您使用 FREQ 语句,则该过程假定每个观察代表 n 个观察,其中 n 是变量的值。如果 n 不是整数,则 SAS 将其截断。如果 n 小于 1 或缺失,则该过程不使用该观察值来计算统计量。

频率变量的总和表示观察的总数。

重量变量;

指定一个数值变量,其值对分析变量的值加权。变量的值不必是整数。 PROC TABULATE 根据下表响应重量值。

权重值:PROC TABULATE 响应

  • 0 : 将观察计数计入观察总数
  • 。 : 排除观察

如果您想对类似 pctN 的计数使用权重,请创建要加权的 unity 变量和 PCTSUM

Data have; 
input gender wgt q1 year;
unity = 1;
lines;
0  1.5  0  2014
0  1    1  2014
0  1.5  1  2014
0  1    1  2014
0  1.5  0  2014
1  1    1  2014
1  1    1  2014
1  1    1  2014
1  1    0  2014
1  1    1  2014
1  1    1  2014
;
run;

Proc tabulate data=have;
  title "Unity weighted";
  class gender q1 year;
  format gender gender. q1 q1f.;

  var unity;  %* <----------;
  weight wgt;

  table gender*unity, year*q1;  %* <---- debug, the count 'basis' for PCTSUM<q1> ;

  table gender*unity*(pctsum<q1>), year*q1;  %* <--- weighted unity PCTSUM;
run;

【讨论】:

    猜你喜欢
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多