楼主: 上神之人
3285 2

sas做面板报错:There is only one cross section or time series observation. [推广有奖]

  • 0关注
  • 0粉丝

已卖:7份资源

高中生

85%

还不是VIP/贵宾

-

威望
0
论坛币
47 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
267 点
帖子
41
精华
0
在线时间
32 小时
注册时间
2014-8-4
最后登录
2017-3-19

楼主
上神之人 学生认证  发表于 2015-2-3 21:34:14 |AI写论文
3论坛币
我要对上市公司的2005-2014年的季度数据进行一个面板回归:
proc tscsreg data=dbteqr2;
id stkcd ym;
model dlr = ltrshr lpb lroa inA inB inC inD inE inF inG inH inI inJ inK inL inM inN inO inQ inR inS/fixtwo;/*inA-inS是虚拟变量*/
run;
出错:
ERROR: There is only one cross section or time series observation. Computations will be terminated.
在论坛里查了一下资料,说是非平衡面板问题。于是对于原数据集dbteqr作如下处理,消除了只含一个观测值的数据:
/*将那些只有1个观测值的删掉*/
data dbteqr2;
set dbteqr;
if last.stkcd and first.stkcd then delete;
run;
再对dbteqr2做proc tscsreg,仍然报这个错误:ERROR: There is only one cross section or time series observation. Computations will be terminated.
求大神指点!数据中无缺失值,已经全部剔除。原代码如下:
data dbteqr;
set dbteqr;
ym=year(enddt)*10+qtr(enddt);
if lroa^=. & lpb^=. & dlr^=0;
run;
proc sort data=dbteqr;
by stkcd ym;
run;
/*将那些只有1个观测值的删掉*/
data dbteqr2;
set dbteqr;
if last.stkcd and first.stkcd then delete;
run;
proc sort data=dbteqr2;
by stkcd ym;
run;
proc tscsreg data=dbteqr2;
id stkcd ym;
model dlr = ltrshr lpb lroa inA inB inC inD inE inF inG inH inI inJ inK inL inM inN inO inQ inR inS/fixtwo;
run;
求大神指点!!我币不多,全上了!求指教

关键词:Time Series observation observat Section Series 面板数据 sas 非平衡面板 tscsreg 上市公司

沙发
明天的那只鞋子 发表于 2015-4-15 09:39:27
用first.*和last.*的时候要用 by才有用。
data dbteqr2;
set dbteqr;
by ...

藤椅
地瓜小姐呀 发表于 2020-5-27 00:35:28
题主最后解决了吗?遇到了和您一样的问题。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 12:46