<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic REG calculationn in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889431#M351414</link>
    <description>&lt;P&gt;Hello, I'm a student in the accounting department and I'm trying to do some calculations using SAS for the first time.&amp;nbsp;&lt;BR /&gt;Actually, I would like to ask for some help with Regression calculation.&amp;nbsp;&lt;BR /&gt;I have calculated&amp;nbsp;the real earnings management and now I'm looking for a formula to calculate the REG.&amp;nbsp;&lt;BR /&gt;I will be very happy to have all of you as tutors to learn more and get used to the program.&lt;BR /&gt;Thank you very much.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;libname user 'C:\CRISIS' ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* b1=total assests,&amp;nbsp; b2=receivables, b3=provision, b4=inventory, b5=tangible assets, b6=land, b7=impairment, b8=subsidiary,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b9=asset in construction, b10=impairment, b11=subsidiary, b12=liability&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i1=sales&amp;nbsp; i2=cost of goods sold&amp;nbsp; i3=sales and administrative expense&amp;nbsp; i4=tax and utility&amp;nbsp; i5=depreciation
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i6=rent&amp;nbsp; &amp;nbsp;i7= insurance&amp;nbsp; i8=net income, i9=EPS, c1=operating cash flow ;
data XXX ;
&amp;nbsp; infile 'C:\CRISIS\KSP97.csv' dlm=',' firstobs=3&amp;nbsp; lrecl=20000 ;
&amp;nbsp; input code&amp;nbsp; yr mon&amp;nbsp; icode opn $ big b1-b12&amp;nbsp; i1-i9&amp;nbsp; c1&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if b1=0&amp;nbsp; or i1=0&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if mon=12 ;

run;

* The data of the same year of a firm is deleted ;
proc sort nodupkey data=XXX&amp;nbsp; out=XXX dupout=OO ;&amp;nbsp; by code yr ;&amp;nbsp; run;
* duplicated data go into OO ;


* INDUSTRY NUMBER&amp;nbsp; ;
proc sort data=XXX ; by yr&amp;nbsp; icode ; run;
proc means data=XXX&amp;nbsp; n&amp;nbsp; noprint ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* here,&amp;nbsp; noprint is very important&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var&amp;nbsp; mon&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; class&amp;nbsp; yr&amp;nbsp; icode&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output out=yyy&amp;nbsp; n=indnum&amp;nbsp; &amp;nbsp;;&amp;nbsp; * n indicates the industry number&amp;nbsp; ;
run;
data&amp;nbsp; indnum ;&amp;nbsp; set yyy ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yr=. or&amp;nbsp; icode=.&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; keep yr&amp;nbsp; icode&amp;nbsp; &amp;nbsp;indnum ;
run;

*&amp;nbsp; MERGE financial raw data with industry number ;

proc sort data=XXX ; by&amp;nbsp; yr icode&amp;nbsp; &amp;nbsp;; run;
proc sort data=indnum ; by yr&amp;nbsp; icode ; run;

data XX ;&amp;nbsp; merge&amp;nbsp; XXX&amp;nbsp; indnum;&amp;nbsp; by yr&amp;nbsp; icode;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if indnum &amp;lt; 15&amp;nbsp; then delete;
run;


/* Variables Calculation for Real Earings Models&amp;nbsp; */

proc sort data=XX ; by code yr ;&amp;nbsp; run;

data VAR1 ;&amp;nbsp; set XX ;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * b1=total assests,&amp;nbsp; b2=receivables, b3=provision, b4=inventory, b5=tangible assets, b6=land, b7=impairment, b8=subsidiary,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b9=asset in construction, b10=impairment, b11=subsidiary, b12=liability&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i1=sales&amp;nbsp; i2=cost of goods sold&amp;nbsp; i3=sales and administrative expense&amp;nbsp; i4=tax and utility&amp;nbsp; i5=depreciation
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i6=rent&amp;nbsp; &amp;nbsp;i7= insurance&amp;nbsp; i8=net income, i9=EPS, c1=operating cash flow ;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pcode1=lag(code) ;&amp;nbsp; pcode2=lag2(code) ;

pb1=lag(b1) ; pb2=lag(b2);&amp;nbsp; pb4=lag(b4);&amp;nbsp; pi1=lag(i1) ;&amp;nbsp; ppi1=lag2(i1);&amp;nbsp;&amp;nbsp;
ds1=i1-pi1 ;&amp;nbsp; ds2=pi1-ppi1 ;&amp;nbsp; &amp;nbsp;db2=b2-pb2 ;&amp;nbsp; &amp;nbsp;db4=b4-pb4;
pc=i2+db4 ;&amp;nbsp; de=i3-i4-i5-i6-i7 ;

* Variables for real earnings models&amp;nbsp; ;
y1=c1/pb1 ;&amp;nbsp; x1=1/pb1 ; x2=i1/pb1;&amp;nbsp; x3=ds1/pb1 ; x4=ds2/pb1 ;&amp;nbsp; x5=pi1/pb1 ;
y2=pc/pb1 ;&amp;nbsp;
y3=de/pb1 ;

if code=pcode1=pcode2 ;
run;
*proc print ;&amp;nbsp; run ;


/* Estimation of REM&amp;nbsp; */
*outliers are winsorized by year and industry&amp;nbsp; &amp;nbsp;;

proc means data=VAR1&amp;nbsp; p1 p99&amp;nbsp; noprint ;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var&amp;nbsp; y1-y3 x1-x5 ;
CLASS&amp;nbsp; yr icode ;
output&amp;nbsp; out=outlier&amp;nbsp; &amp;nbsp; &amp;nbsp;p1=&amp;nbsp; p1_y1&amp;nbsp; &amp;nbsp; p1_y2&amp;nbsp; &amp;nbsp; p1_y3&amp;nbsp; &amp;nbsp; p1_x1&amp;nbsp; &amp;nbsp;p1_x2&amp;nbsp; &amp;nbsp;p1_x3&amp;nbsp; &amp;nbsp; p1_x4&amp;nbsp; &amp;nbsp;p1_x5
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p99= p99_y1&amp;nbsp; p99_y2&amp;nbsp; p99_y3&amp;nbsp; p99_x1 p99_x2&amp;nbsp; p99_x3&amp;nbsp; p99_x4&amp;nbsp; p99_x5 ;
run;

data&amp;nbsp; OUTLIER ;&amp;nbsp; set&amp;nbsp; OUTLIER ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if yr=.&amp;nbsp; or&amp;nbsp; icode=.&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; drop _type_&amp;nbsp; _freq_ ;
run;
proc sort data=OUTLIER ; by yr icode ; run;
proc sort data=VAR1 ; by yr icode ; run;

data VVV&amp;nbsp; ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; 1% of upper and lower outliers are winsorised&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; merge VAR1&amp;nbsp; OUTLIER ;&amp;nbsp; by yr icode ;
if&amp;nbsp; y1 &amp;lt; p1_y1&amp;nbsp; then y1=p1_y1 ;&amp;nbsp; if&amp;nbsp; y1 &amp;gt; p99_y1 then y1=p99_y1 ;
if&amp;nbsp; y2 &amp;lt; p1_y2&amp;nbsp; then y2=p1_y2 ;&amp;nbsp; if&amp;nbsp; y2 &amp;gt; p99_y2 then y2=p99_y2 ;
if&amp;nbsp; y3 &amp;lt; p1_y3&amp;nbsp; then y3=p1_y3 ;&amp;nbsp; if&amp;nbsp; y3 &amp;gt; p99_y3 then y3=p99_y3 ;
if&amp;nbsp; x1 &amp;lt; p1_x1&amp;nbsp; then x1=p1_x1 ;&amp;nbsp; if&amp;nbsp; x1 &amp;gt; p99_x1 then x1=p99_x1 ;
if&amp;nbsp; x2 &amp;lt; p1_x2&amp;nbsp; then x2=p1_x2 ;&amp;nbsp; if&amp;nbsp; x2 &amp;gt; p99_x2 then x2=p99_x2 ;
if&amp;nbsp; x3 &amp;lt; p1_x3&amp;nbsp; then x3=p1_x3 ;&amp;nbsp; if&amp;nbsp; x3 &amp;gt; p99_x3 then x3=p99_x3 ;
if&amp;nbsp; x4 &amp;lt; p1_x4&amp;nbsp; then x4=p1_x4 ;&amp;nbsp; if&amp;nbsp; x4 &amp;gt; p99_x4 then x4=p99_x4 ;
if&amp;nbsp; x5 &amp;lt; p1_x5&amp;nbsp; then x5=p1_x5 ;&amp;nbsp; if&amp;nbsp; x5 &amp;gt; p99_x5 then x5=p99_x5 ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
run;

/*&amp;nbsp; Estimating Real Earnings Model by year and Industry&amp;nbsp; */

proc sort data=VVV ;&amp;nbsp; &amp;nbsp;by yr&amp;nbsp; icode ; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef1;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*&amp;nbsp; Abnormal CFO&amp;nbsp; */
&amp;nbsp; model&amp;nbsp; y1= x1-x3&amp;nbsp; ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
run;
data coef1; set coef1;
&amp;nbsp; rename intercept=al1&amp;nbsp; x1=be11 x2=be21&amp;nbsp; x3=be31&amp;nbsp; ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1-x3&amp;nbsp; ;
&amp;nbsp; run;
*proc print; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef2;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*&amp;nbsp; Abnormal&amp;nbsp; production cost&amp;nbsp; */
&amp;nbsp; &amp;nbsp;model&amp;nbsp; y2= x1-x4 ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; run;
data coef2; set coef2;
&amp;nbsp; rename intercept=al2&amp;nbsp; x1=be12&amp;nbsp; x2=be22&amp;nbsp; x3=be32&amp;nbsp; x4=be42&amp;nbsp; ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1-x4 ;
&amp;nbsp; run;
*proc print; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef3 ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*&amp;nbsp; Abnormal&amp;nbsp; discretionary expense&amp;nbsp; */
&amp;nbsp; model&amp;nbsp; y3= x1 x5&amp;nbsp; ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; run;
data coef3; set coef3;
&amp;nbsp; rename intercept=al3&amp;nbsp; x1=be13&amp;nbsp; x5=be53 ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1 x5 ;
&amp;nbsp; run;
*proc print; run;



/*&amp;nbsp; Calculating real earnings management&amp;nbsp; */
proc sort data=coef1;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=coef2;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=coef3;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=VAR1 ;&amp;nbsp; by&amp;nbsp; yr&amp;nbsp; icode ;&amp;nbsp; run ;


data REM ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* Here, REM are calculated using VAR01, not VVV, a dataset for estimation&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; merge&amp;nbsp; VAR1&amp;nbsp; coef1&amp;nbsp; coef2&amp;nbsp; coef3 ; by yr icode;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;

&amp;nbsp; &amp;nbsp; acfo=y1-(al1+be11*x1+be21*x2+be31*x3) ;&amp;nbsp;
&amp;nbsp; apc=y2-(al2+be12*x1+be22*x2+be32*x3+be42*x4) ;&amp;nbsp;
&amp;nbsp; ade=y3-(al3+be13*x1+be53*x5) ;&amp;nbsp;

rem=acfo*(-1)+apc+ade*(-1) ;

run;
proc sort ; by code yr ; run;

proc print; run;
quit ;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 15 Aug 2023 20:19:22 GMT</pubDate>
    <dc:creator>Seonjin</dc:creator>
    <dc:date>2023-08-15T20:19:22Z</dc:date>
    <item>
      <title>REG calculationn</title>
      <link>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889431#M351414</link>
      <description>&lt;P&gt;Hello, I'm a student in the accounting department and I'm trying to do some calculations using SAS for the first time.&amp;nbsp;&lt;BR /&gt;Actually, I would like to ask for some help with Regression calculation.&amp;nbsp;&lt;BR /&gt;I have calculated&amp;nbsp;the real earnings management and now I'm looking for a formula to calculate the REG.&amp;nbsp;&lt;BR /&gt;I will be very happy to have all of you as tutors to learn more and get used to the program.&lt;BR /&gt;Thank you very much.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;libname user 'C:\CRISIS' ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* b1=total assests,&amp;nbsp; b2=receivables, b3=provision, b4=inventory, b5=tangible assets, b6=land, b7=impairment, b8=subsidiary,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b9=asset in construction, b10=impairment, b11=subsidiary, b12=liability&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i1=sales&amp;nbsp; i2=cost of goods sold&amp;nbsp; i3=sales and administrative expense&amp;nbsp; i4=tax and utility&amp;nbsp; i5=depreciation
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i6=rent&amp;nbsp; &amp;nbsp;i7= insurance&amp;nbsp; i8=net income, i9=EPS, c1=operating cash flow ;
data XXX ;
&amp;nbsp; infile 'C:\CRISIS\KSP97.csv' dlm=',' firstobs=3&amp;nbsp; lrecl=20000 ;
&amp;nbsp; input code&amp;nbsp; yr mon&amp;nbsp; icode opn $ big b1-b12&amp;nbsp; i1-i9&amp;nbsp; c1&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if b1=0&amp;nbsp; or i1=0&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if mon=12 ;

run;

* The data of the same year of a firm is deleted ;
proc sort nodupkey data=XXX&amp;nbsp; out=XXX dupout=OO ;&amp;nbsp; by code yr ;&amp;nbsp; run;
* duplicated data go into OO ;


* INDUSTRY NUMBER&amp;nbsp; ;
proc sort data=XXX ; by yr&amp;nbsp; icode ; run;
proc means data=XXX&amp;nbsp; n&amp;nbsp; noprint ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* here,&amp;nbsp; noprint is very important&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var&amp;nbsp; mon&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; class&amp;nbsp; yr&amp;nbsp; icode&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output out=yyy&amp;nbsp; n=indnum&amp;nbsp; &amp;nbsp;;&amp;nbsp; * n indicates the industry number&amp;nbsp; ;
run;
data&amp;nbsp; indnum ;&amp;nbsp; set yyy ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if yr=. or&amp;nbsp; icode=.&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; keep yr&amp;nbsp; icode&amp;nbsp; &amp;nbsp;indnum ;
run;

*&amp;nbsp; MERGE financial raw data with industry number ;

proc sort data=XXX ; by&amp;nbsp; yr icode&amp;nbsp; &amp;nbsp;; run;
proc sort data=indnum ; by yr&amp;nbsp; icode ; run;

data XX ;&amp;nbsp; merge&amp;nbsp; XXX&amp;nbsp; indnum;&amp;nbsp; by yr&amp;nbsp; icode;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if indnum &amp;lt; 15&amp;nbsp; then delete;
run;


/* Variables Calculation for Real Earings Models&amp;nbsp; */

proc sort data=XX ; by code yr ;&amp;nbsp; run;

data VAR1 ;&amp;nbsp; set XX ;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * b1=total assests,&amp;nbsp; b2=receivables, b3=provision, b4=inventory, b5=tangible assets, b6=land, b7=impairment, b8=subsidiary,
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b9=asset in construction, b10=impairment, b11=subsidiary, b12=liability&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i1=sales&amp;nbsp; i2=cost of goods sold&amp;nbsp; i3=sales and administrative expense&amp;nbsp; i4=tax and utility&amp;nbsp; i5=depreciation
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i6=rent&amp;nbsp; &amp;nbsp;i7= insurance&amp;nbsp; i8=net income, i9=EPS, c1=operating cash flow ;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pcode1=lag(code) ;&amp;nbsp; pcode2=lag2(code) ;

pb1=lag(b1) ; pb2=lag(b2);&amp;nbsp; pb4=lag(b4);&amp;nbsp; pi1=lag(i1) ;&amp;nbsp; ppi1=lag2(i1);&amp;nbsp;&amp;nbsp;
ds1=i1-pi1 ;&amp;nbsp; ds2=pi1-ppi1 ;&amp;nbsp; &amp;nbsp;db2=b2-pb2 ;&amp;nbsp; &amp;nbsp;db4=b4-pb4;
pc=i2+db4 ;&amp;nbsp; de=i3-i4-i5-i6-i7 ;

* Variables for real earnings models&amp;nbsp; ;
y1=c1/pb1 ;&amp;nbsp; x1=1/pb1 ; x2=i1/pb1;&amp;nbsp; x3=ds1/pb1 ; x4=ds2/pb1 ;&amp;nbsp; x5=pi1/pb1 ;
y2=pc/pb1 ;&amp;nbsp;
y3=de/pb1 ;

if code=pcode1=pcode2 ;
run;
*proc print ;&amp;nbsp; run ;


/* Estimation of REM&amp;nbsp; */
*outliers are winsorized by year and industry&amp;nbsp; &amp;nbsp;;

proc means data=VAR1&amp;nbsp; p1 p99&amp;nbsp; noprint ;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var&amp;nbsp; y1-y3 x1-x5 ;
CLASS&amp;nbsp; yr icode ;
output&amp;nbsp; out=outlier&amp;nbsp; &amp;nbsp; &amp;nbsp;p1=&amp;nbsp; p1_y1&amp;nbsp; &amp;nbsp; p1_y2&amp;nbsp; &amp;nbsp; p1_y3&amp;nbsp; &amp;nbsp; p1_x1&amp;nbsp; &amp;nbsp;p1_x2&amp;nbsp; &amp;nbsp;p1_x3&amp;nbsp; &amp;nbsp; p1_x4&amp;nbsp; &amp;nbsp;p1_x5
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p99= p99_y1&amp;nbsp; p99_y2&amp;nbsp; p99_y3&amp;nbsp; p99_x1 p99_x2&amp;nbsp; p99_x3&amp;nbsp; p99_x4&amp;nbsp; p99_x5 ;
run;

data&amp;nbsp; OUTLIER ;&amp;nbsp; set&amp;nbsp; OUTLIER ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if yr=.&amp;nbsp; or&amp;nbsp; icode=.&amp;nbsp; then delete ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; drop _type_&amp;nbsp; _freq_ ;
run;
proc sort data=OUTLIER ; by yr icode ; run;
proc sort data=VAR1 ; by yr icode ; run;

data VVV&amp;nbsp; ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&amp;nbsp; 1% of upper and lower outliers are winsorised&amp;nbsp; ;
&amp;nbsp; &amp;nbsp; merge VAR1&amp;nbsp; OUTLIER ;&amp;nbsp; by yr icode ;
if&amp;nbsp; y1 &amp;lt; p1_y1&amp;nbsp; then y1=p1_y1 ;&amp;nbsp; if&amp;nbsp; y1 &amp;gt; p99_y1 then y1=p99_y1 ;
if&amp;nbsp; y2 &amp;lt; p1_y2&amp;nbsp; then y2=p1_y2 ;&amp;nbsp; if&amp;nbsp; y2 &amp;gt; p99_y2 then y2=p99_y2 ;
if&amp;nbsp; y3 &amp;lt; p1_y3&amp;nbsp; then y3=p1_y3 ;&amp;nbsp; if&amp;nbsp; y3 &amp;gt; p99_y3 then y3=p99_y3 ;
if&amp;nbsp; x1 &amp;lt; p1_x1&amp;nbsp; then x1=p1_x1 ;&amp;nbsp; if&amp;nbsp; x1 &amp;gt; p99_x1 then x1=p99_x1 ;
if&amp;nbsp; x2 &amp;lt; p1_x2&amp;nbsp; then x2=p1_x2 ;&amp;nbsp; if&amp;nbsp; x2 &amp;gt; p99_x2 then x2=p99_x2 ;
if&amp;nbsp; x3 &amp;lt; p1_x3&amp;nbsp; then x3=p1_x3 ;&amp;nbsp; if&amp;nbsp; x3 &amp;gt; p99_x3 then x3=p99_x3 ;
if&amp;nbsp; x4 &amp;lt; p1_x4&amp;nbsp; then x4=p1_x4 ;&amp;nbsp; if&amp;nbsp; x4 &amp;gt; p99_x4 then x4=p99_x4 ;
if&amp;nbsp; x5 &amp;lt; p1_x5&amp;nbsp; then x5=p1_x5 ;&amp;nbsp; if&amp;nbsp; x5 &amp;gt; p99_x5 then x5=p99_x5 ;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
run;

/*&amp;nbsp; Estimating Real Earnings Model by year and Industry&amp;nbsp; */

proc sort data=VVV ;&amp;nbsp; &amp;nbsp;by yr&amp;nbsp; icode ; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef1;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*&amp;nbsp; Abnormal CFO&amp;nbsp; */
&amp;nbsp; model&amp;nbsp; y1= x1-x3&amp;nbsp; ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
run;
data coef1; set coef1;
&amp;nbsp; rename intercept=al1&amp;nbsp; x1=be11 x2=be21&amp;nbsp; x3=be31&amp;nbsp; ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1-x3&amp;nbsp; ;
&amp;nbsp; run;
*proc print; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef2;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /*&amp;nbsp; Abnormal&amp;nbsp; production cost&amp;nbsp; */
&amp;nbsp; &amp;nbsp;model&amp;nbsp; y2= x1-x4 ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
&amp;nbsp; run;
data coef2; set coef2;
&amp;nbsp; rename intercept=al2&amp;nbsp; x1=be12&amp;nbsp; x2=be22&amp;nbsp; x3=be32&amp;nbsp; x4=be42&amp;nbsp; ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1-x4 ;
&amp;nbsp; run;
*proc print; run;

proc reg data=VVV&amp;nbsp; noprint outest=coef3 ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/*&amp;nbsp; Abnormal&amp;nbsp; discretionary expense&amp;nbsp; */
&amp;nbsp; model&amp;nbsp; y3= x1 x5&amp;nbsp; ;
&amp;nbsp; by yr&amp;nbsp; icode;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&amp;nbsp; run;
data coef3; set coef3;
&amp;nbsp; rename intercept=al3&amp;nbsp; x1=be13&amp;nbsp; x5=be53 ;
&amp;nbsp; keep yr&amp;nbsp; icode intercept&amp;nbsp; x1 x5 ;
&amp;nbsp; run;
*proc print; run;



/*&amp;nbsp; Calculating real earnings management&amp;nbsp; */
proc sort data=coef1;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=coef2;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=coef3;&amp;nbsp; by yr&amp;nbsp; icode; run;
proc sort data=VAR1 ;&amp;nbsp; by&amp;nbsp; yr&amp;nbsp; icode ;&amp;nbsp; run ;


data REM ;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* Here, REM are calculated using VAR01, not VVV, a dataset for estimation&amp;nbsp; &amp;nbsp;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; merge&amp;nbsp; VAR1&amp;nbsp; coef1&amp;nbsp; coef2&amp;nbsp; coef3 ; by yr icode;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;

&amp;nbsp; &amp;nbsp; acfo=y1-(al1+be11*x1+be21*x2+be31*x3) ;&amp;nbsp;
&amp;nbsp; apc=y2-(al2+be12*x1+be22*x2+be32*x3+be42*x4) ;&amp;nbsp;
&amp;nbsp; ade=y3-(al3+be13*x1+be53*x5) ;&amp;nbsp;

rem=acfo*(-1)+apc+ade*(-1) ;

run;
proc sort ; by code yr ; run;

proc print; run;
quit ;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 15 Aug 2023 20:19:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889431#M351414</guid>
      <dc:creator>Seonjin</dc:creator>
      <dc:date>2023-08-15T20:19:22Z</dc:date>
    </item>
    <item>
      <title>Re: REG calculationn</title>
      <link>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889432#M351415</link>
      <description>&lt;P&gt;To provide code, include it in your message, not as an attachment, by clicking on the little running man icon and pasting your code into the window that appears. To include data, please include a portion of your data as text, not as an attachment, by following these &lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;examples and instructions&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 20:09:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889432#M351415</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-08-15T20:09:36Z</dc:date>
    </item>
    <item>
      <title>Re: REG calculationn</title>
      <link>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889433#M351416</link>
      <description>&lt;P&gt;Also please tell us how the regression should go, what variables are the independent (predictor) variables and what variables are the dependent (response) variables.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 20:10:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/REG-calculationn/m-p/889433#M351416</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-08-15T20:10:18Z</dc:date>
    </item>
  </channel>
</rss>

