楼主: mzyoung
5004 4

协偏度的程序如何实现? [推广有奖]

  • 6关注
  • 2粉丝

硕士生

59%

还不是VIP/贵宾

-

威望
0
论坛币
177 个
通用积分
0.1201
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4129 点
帖子
93
精华
0
在线时间
190 小时
注册时间
2011-9-11
最后登录
2023-3-4

楼主
mzyoung 在职认证  发表于 2014-2-25 09:59:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据结构如下code、R1、R2、DATE(日期)、MTH(连续的月份1、2、3或者2、3、4等依次类推,不过一张表只有3个月),表的内容是多个code的3个月日交易数据,且每个code的记录条数不等。数据附件: s1003_01.xls (32 KB) 现在需要统计协偏度,公式如下

协偏度


若在matlab中就可以用以下的程序实现单个code的协偏度计算,多个code在一张表的还是不会编程


a=r1-average(r1);


b=(r2-average(r2))^2;


c=(r2-average(r2))^3;


cs=sum(a*b)/sum(c);


但是在sas中就不能这样编程,因为mean、sum是对行数据进行统计,而我需要的是对每个code的列向量进行统计。


请诸位大神多多指导,非常感谢!







二维码

扫码加我 拉你入群

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

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

关键词:如何实现 协偏度 average MATLAB 日交易数据 协偏度程序

沙发
ziyenano 发表于 2014-2-25 10:48:34
proc import out=ex
datafile="E:\s1003_01.xls"
replace;
run;

proc iml;
use ex;
read all var{r1 r2} into g;
a=g[,1]-g[:,1];
b=(g[,2]-g[:,2])##2;
c=(g[,2]-g[:,2])##3;
cs=(a#b)[+]/(c[+]);
print cs;
quit;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
mzyoung + 1 + 1 + 1 热心帮助其他会员
Still.. + 50 热心帮助其他会员

总评分: 论坛币 + 50  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
yongyitian 发表于 2014-2-25 12:06:41
  1. /* using data step */

  2. data s1003_01_;
  3.     n = 0;
  4.     do until(last.code);
  5.        set s1003_01;
  6.        by code;
  7.           n + 1;
  8.           sum_r1 = sum(sum_r1, r1);
  9.           sum_r2 = sum(sum_r2, r2);
  10.          if last.code then do;
  11.            mean_r1 = sum_r1 / n;
  12.            mean_r2 = sum_r2 / n;
  13.          end;
  14.     end;

  15.     do until(last.code);
  16.        set s1003_01;
  17.        by code;
  18.          a = (r1 - mean_r1)*(r2 - mean_r2)**2;
  19.        s_a = sum(s_a, a);
  20.          b = (r2-mean_r2)**3;
  21.        s_b = sum(s_b, b);  
  22.         if last.code then cs=s_a/s_b;
  23.     end;

  24. /* following do until loop is not required if you want one record for each code */
  25.     do until (last.code);
  26.       set s1003_01;
  27.       by code; output;
  28.     end;
  29.     keep code date r1 r2 mth cs;
  30. run;
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
mzyoung + 1 + 1 + 1 热心帮助其他会员
Still.. + 50 热心帮助其他会员

总评分: 论坛币 + 50  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
mzyoung 在职认证  发表于 2014-2-25 13:35:48
yongyitian 发表于 2014-2-25 12:06
谢谢,你的程序计算结果与另一位朋友提供的方法的结果一致,非常感谢

报纸
mzyoung 在职认证  发表于 2014-2-25 13:41:55
ziyenano 发表于 2014-2-25 10:48
proc import out=ex
datafile="E:\s1003_01.xls"
replace;
这种方法只计算出一个值,谢谢你的热心帮助

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

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