Bedste svar
Hej
Lad mig prøve at besvare dette spørgsmål efter min forståelse . DATA-trinnet giver dig to funktioner, LAG og DIF, til at få adgang til tidligere værdier for en variabel eller et udtryk. Disse funktioner er nyttige til beregning af forsinkelser og forskelle i serier.
Når de bruges på en enkel måde, fungerer LAG og DIF som forsinkelses- og forskel-funktioner. Det er dog vigtigt at huske på, at på trods af deres navne er de LAG- og DIF-funktioner, der er tilgængelige i DATA-trinnet, ikke ægte forsinkelses- og forskel-funktioner.
Snarere er LAG og DIF køfunktioner, der husker og returnere argumentværdier fra tidligere opkald. LAG-funktionen husker den værdi, du sender til den, og returnerer som resultat den værdi, du sendte den til det forrige opkald. DIF-funktionen fungerer på samme måde, men returnerer forskellen mellem det aktuelle argument og den huskede værdi. (LAG og DIF returnerer en manglende værdi første gang funktionen kaldes.)
En sand forsinkelsesfunktion returnerer ikke værdien af argumentet for “forrige opkald”, ligesom DATA-trin LAG og DIF-funktioner. I stedet returnerer en ægte forsinkelsesfunktion værdien af sit argument for “tidligere observation” uanset rækkefølgen af tidligere opkald til funktionen. For at en ægte forsinkelsesfunktion skal være mulig, skal det således være klart, hvad den “tidligere observation” er.
Hvis dataene sorteres kronologisk, fungerer LAG og DIF som ægte forsinkelses- og forskelfunktioner. Hvis du er i tvivl, skal du bruge PROC SORT til at sortere dine data, inden du bruger LAG- og DIF-funktionerne. Pas på manglende observationer, som kan få LAG og DIF til at returnere værdier, der ikke er de faktiske forsinkelses- og forskelværdier
DATA-trinnet er et kraftfuldt værktøj, der kan læse et vilkårligt antal observationer fra et hvilket som helst antal inputfiler eller datasæt, kan oprette et hvilket som helst antal outputdatasæt og kan skrive et vilkårligt antal outputobservationer til et hvilket som helst af outputdatasættene, alt sammen i det samme program. Generelt er det således ikke klart, hvad “tidligere observation” betyder i et DATA-trinprogram. I et DATA-trinprogram findes den “tidligere observation” kun, hvis du skriver programmet på en enkel måde, der gør dette koncept meningsfuldt.
Da den foregående observation generelt ikke er klart defineret, er den ikke muligt at udføre ægte forsinkelses- eller forskel-funktioner til DATA-trinnet. I stedet giver DATA-trinnet køfunktioner, der gør det let at beregne forsinkelser og forskelle.
Jeg håber, at dette svar hjælper