楼主: playmore
2962 8

[问答] 请问如何在proc reg中限制最少观测数量 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2013-3-8 18:55:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
就是同组中观测数量少于指定值时,就不进行回归了

之前在下面的贴子中,我回答版友的贴子中提到了可以先用data步进行筛选,但觉得还是麻烦,所以上来问问
https://bbs.pinggu.org/thread-2248120-1-1.html

刚才在官网上看了半天没结果,谢谢大家了!
二维码

扫码加我 拉你入群

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

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

关键词:REG ROC pinggu thread data步 如何

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
Imasasor 发表于 2013-3-8 22:19:12
大牛总是热心地帮别人回答问题,而自己遇到问题的时候,却往往遭遇没人回答的尴尬
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
bobguy 发表于 2013-3-9 07:55:06
Imasasor 发表于 2013-3-8 22:19
大牛总是热心地帮别人回答问题,而自己遇到问题的时候,却往往遭遇没人回答的尴尬
You can do it as the example below,

data tmp;
  do i=1 to 1000;
     x=rannor(123);
     err=rannor(123);
         y=1+1*x+err;
         output;
  end;
run;

proc reg data=tmp(obs=100);
model y=x;
where -1<=x<=1;
run;
quit;

板凳
新人2012 发表于 2013-3-9 13:06:51
我以前是这么做的,换种思路。
在proc reg中使用by,同时使用ods output收集回归结果中的summary部分等,里面有按by分组回归中的每个回归所使用的obs个数。
最后再使用data步把obs满足要求的回归结果保留。

供参考。

报纸
playmore 发表于 2013-3-9 19:59:25
bobguy 发表于 2013-3-9 07:55
You can do it as the example below,

data tmp;
谢谢,我觉得可以在data=那里用firstobs=和obs=两个限制条件
但是不确定可否和by一起连用
回头上班了试下
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

地板
新人2012 发表于 2013-3-9 21:20:55
不能的,以前也纠结过这问题。
还有种思路是
结合Proc freq把freq小于某个值的组别扔掉,以前整面板数据用过。

不过你问的是技术,我说的是实战。
谢谢楼主回答我在这坛子里问的第一个问题。

7
bobguy 发表于 2013-3-9 21:57:58
playmore 发表于 2013-3-9 19:59
谢谢,我觉得可以在data=那里用firstobs=和obs=两个限制条件
但是不确定可否和by一起连用
回头上班了试 ...
You can have a pre-process to select groups or data sets which satisfy the minimum number obs condition and then kick off the regression procedure, see example below.  

data tmp;
   do group=1 to 3;
      n=ceil(ranuni(123)*50);
          do i=1 to n;
  
        x=rannor(123);
        err=rannor(123);
        y=1+1*x+err;
         output;
          end;
  end;
  drop n i;
run;

proc print;run;

proc sql noprint;
create table regdata as
select *
from tmp
group by group
having count(group) >=30
order by group
;
quit;

proc reg data=regdata;
by group;
model y=x;
run;
quit;

8
新人2012 发表于 2013-3-9 22:42:59
LS回答的也不是技术,只是实战中个人偏好吧?

帮楼主小结下几种处理方法:
1. data 步;
2. SQL步;
3. 结合proc freq;
4. 使用ods output小技巧。

但愿LZ能满意!

9
playmore 发表于 2013-3-11 13:18:46
新人2012 发表于 2013-3-9 21:20
不能的,以前也纠结过这问题。
还有种思路是
结合Proc freq把freq小于某个值的组别扔掉,以前整面板数据用 ...
我试了下果然不能,firstobs=和obs=只能用在整张dataset,不能分by做
我现在的解决方法就是之前多来个data步做筛选了

我问这个问题主要用于按时间滚动回归,同时要考虑缺失值的问题
由于要多次回归,就想把问题都在一个proc reg中解决
现在只能在循环中多加一个data步了

还是谢谢你
我都不知道我第一个回答了你的问题
猿粪那
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

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

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