全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2353 12
2018-05-11

6月28更新


非常谢谢大家出谋划策, 新遇到的需要做pca的每个小组在大数据集里所取用的x和y均不同, 所以目前看来应该只能loop了.


但是如果y相同, 加入by变量可以大大提升速度.


再次感谢大家~



------------------------------------------------------以下原问题-------------------------------------------------

有一个非常大的数据集,有一个指标变量,指标变量里有三个独立的数字会变化,比如a1b1c1,a1b1c2,a1b1c3, a1b2c1.....对每一个指标组都要进行一次主成分分析与一次回归。如果用for循环, 会有三层循环,由于组别非常多,循环次数非常多,跑一次要好几个小时,非常不利于debug和实际应用。有没有其它可以提高运行速度的办法呢?


求大神指教,多谢多谢!


6月21日补充:


试了一下下面大神的办法,确实可以快很多。但是新的问题是,:


        proc princomp data = a out = b outstat = c plots=none;

                by flag;

                var abc;

        run;


如上程序,每一个flag组的var不完全一致怎么办?


我有试过让不属于哪个flag组的var在那个flag组就为missing,但是var好像有一个missing, 整条记录都不会被用。

所以再次来问有批量处理的方法吗?loop效率真的太低了。。。


再次感谢~


程序更新在10楼啦~拜谢~





二维码

扫码加我 拉你入群

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

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

全部回复
2018-5-11 12:33:26
原表结构是怎样的?描述一下?
二维码

扫码加我 拉你入群

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

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

2018-5-11 12:43:14
你把指标组,用一个变量来标名,比如:flg='A' / 'B' /'C'

在进行主成分分析的时候,by  flg 即可。

proc pls data=test nfac=10 plot=XYScores method=pcr;
   model log_RAI =因变量;
   by flg;
run;
二维码

扫码加我 拉你入群

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

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

2018-5-14 15:36:25
流水不朽 发表于 2018-5-11 12:43
你把指标组,用一个变量来标名,比如:flg='A' / 'B' /'C'

在进行主成分分析的时候,by  flg 即可。
非常感谢!

原来的程序还挺复杂的,大致就是现根据指标组subset出一个data set, 然后对这个data set做主成分,取前三名,做回归。然后对整个过程loop。

所以您的方法可以解决主成分loop的问题~再次感谢~
二维码

扫码加我 拉你入群

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

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

2018-6-21 14:29:16
增加了新的问题~求大神指教~谢谢~
二维码

扫码加我 拉你入群

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

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

2018-6-22 16:21:43
sas有专门的矩阵处理,proc iml,你可以了解一下
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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