全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2064 3
2014-12-24
我这里想算N支股票在同样一段时间内的收益率的距离
不但要得到距离的远近,还想得到距离的方向,即一支股票如果长期好于另一支股票,则该距离大于0,否则会小于0
想到的方法是用二者每日收益率之差求立方再加总,最后得到的结果再开立方
和求欧氏距离的方法类似,只不过欧氏距离是先平方,再开根号

我在SAS里找到有proc  distance可以计算欧氏距离,其中若method选择POWER(),p和r分别设为3,3的话,和我的要求类似,但是有一点区别,就是这里它先求立方,再取绝对值加总,最后再开立方。这样得到的最终结果是一个对称矩阵,而我要的结果在对称点上的两个数是互为相反数的,即股票A优于股票B,则股票B劣于股票A。

不知道在SAS里还有什么过程可以解决这个问题(我估计proc distance是不行了,它是求距离,我这里是求类似势的东西,有大小,有方向),多谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2014-12-25 11:16:31
估计你的数据要比下面的例子复杂。

这是数据步的算法.

复制代码

如果你以得到的结果是对称矩阵形式的,可以先用 if _n_ = 1; loop 将原始的return值加如到数据步的array中,

然后用循环判断每个结果的符号.


二维码

扫码加我 拉你入群

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

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

2014-12-26 08:45:02
yongyitian 发表于 2014-12-25 11:16
估计你的数据要比下面的例子复杂。

这是数据步的算法.
多谢回复,我后来也用了类似的data步的方法,但没有用到array
因为是写在一个大宏里,所以直接在data步里用的%do循环
速度非常慢,后来还是改用IML了
代码贴在下面,供参考
另外如果还有更好的办法,最好可以一个proc解决的,也请赐教,谢谢
复制代码
二维码

扫码加我 拉你入群

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

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

2014-12-27 08:32:22
playmore 发表于 2014-12-26 08:45
多谢回复,我后来也用了类似的data步的方法,但没有用到array
因为是写在一个大宏里,所以直接在data步里 ...
谢谢分享,proc iml 做矩阵运算确实比数据步有优势,其他的 procedure 就不太清楚了.
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群