楼主: /mgsisi
2360 2

[求助]关于用sas计算Index of Disimilarity [推广有奖]

  • 2关注
  • 0粉丝

小学生

42%

还不是VIP/贵宾

-

威望
0
论坛币
-2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
57 点
帖子
10
精华
0
在线时间
3 小时
注册时间
2012-1-1
最后登录
2017-1-26

楼主
/mgsisi 发表于 2012-8-18 21:01:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
本人还是菜鸟级sas学者,恳请各位大虾帮帮我!问题很棘手!这是一个关于用sas计算index of dimilarity的问题,
计算公式是这样的 (1/2)*SUM |bi /B – wi / W |
bi 表示黑人住在住宅区 i的人数
wi表示白人住在住宅区 i的人数
B表示样本中黑人的总人数
W表示样本中白人的总人数


在我的数据里,我有变量
(black=1 黑人 black=0 白人; residence=1 住宅区1 residence=2 住宅区 2.....; pref=1 地区1 pref=2 地区2.....)
数据结构是这样的:
pref    residence    black
1             1              1
1             1              1
1             1              0
1             1              0
1             1              0
1             1              0
1             2              1
1             2              0
1             2              0
1             2              0
2             1              1
2             1              1

2             1              1
2             1              1

2             1              1
2             1              1

2             1              1
2             1              1

2             1              0
2             1              0
2             1              0
2             1              0


2             2              1
2             2              1
2             2              1
2             2              0

2             2              0
2             2              0

.......


据已经用proc sort,sort过了,我想在每一个地区计算一个index of disimilairty,我的地区总数为100;这样的话就可以直接得到100个index of disimilarity。我只想到一个最笨的办法就是把频数全部列出来,从excel算,但是因为每个地区,住宅区实在太多,所以这样会要算到几千遍;我实在想不出该如何计算;希望大家帮帮忙!万分感谢!





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Similarity similar Index DISIM mila 计算

沙发
ziyenano 发表于 2012-8-19 21:33:57
问一下楼主,B,W是指每个地区black,white总人数?
data a;
input
pref    residence    black;
cards;
1             1              1
1             1              1
1             1              0
1             1              0
1             1              0
1             1              0
1             2              1
1             2              0
1             2              0
1             2              0
2             1              1
2             1              1
2             1              1
2             1              1
2             1              1
2             1              1
2             1              1
2             1              1
2             1              0
2             1              0
2             1              0
2             1              0
2             2              1
2             2              1
2             2              1
2             2              0
2             2              0
2             2              0
;
run;


proc sql;
create table b as
select compress(put(pref,5.)) as pref,
residence,
sum(case when black=1 then 1 else 0 end) as black_count,
sum(case when black=0 then 1 else 0 end) as white_count
from a group by  pref,residence
;

create table c as
select  pref,
sum(black_count) as black_sum,
sum(white_count) as white_sum
from b group by pref ;
quit;

data _null_;
set c;
call symput("black_"||pref, black_sum);
call symput("white_"||pref, white_sum);
run;

data d;
set b;
index=abs(black_count/symget('black_'||pref)-white_count/symget('white_'||pref));
run;

proc means data=d sum ;
class pref;
var index;
ods output summary=e;
run;



藤椅
/mgsisi 发表于 2012-8-26 12:38:01
ziyenano 发表于 2012-8-19 21:33
问一下楼主,B,W是指每个地区black,white总人数?
data a;
input
是的,是的,B和W分别代表每个地区黑人和白人的总人数,太谢谢你啦!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 22:22