Hoe u een qq-plot maakt in sas
Een QQ-plot, een afkorting van ‘quantile-quantile’, wordt gebruikt om te evalueren of een dataset mogelijk afkomstig is van een theoretische distributie.
In de meeste gevallen wordt dit type plot gebruikt om te bepalen of een dataset al dan niet een normale verdeling volgt.
Als de gegevens normaal verdeeld zijn, liggen de punten op een QQ-plot op een rechte diagonale lijn.
Omgekeerd geldt dat hoe significanter de punten in de grafiek afwijken van een rechte diagonale lijn, hoe kleiner de kans dat de gegevensset een normale verdeling volgt.
De eenvoudigste manier om een QQ-plot in SAS te maken, is door de PROC UNIVARIATE- instructie te gebruiken met de QQPLOT- instructie:
proc univariate data =my_data noprint ; qqplot my_variable; run ;
De volgende voorbeelden laten zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Opmerking : we gebruiken de NOPRINT -instructie om alle andere samenvattende statistieken en tabellen te verwijderen die automatisch worden gegenereerd door de PROC UNIVARIATE- instructie.
Voorbeeld 1: Maak een QQ-plot in SAS voor normale gegevens
De volgende code laat zien hoe u een QQ-plot maakt voor een gegevensset met 1000 waarnemingen gegenereerd op basis van een normale verdeling met een gemiddelde van 10 en een standaarddeviatie van 2:
/*generate 1000 values that follow normal distribution with mean 10 and sd 2 */
data normal_data;
do i = 1 to 1000;
x = 10 + 2* rannor (1);
output ;
end ;
run ;
/*create some plot*/
proc univariate data =normal_data noprint ;
qqplot x;
run ;
We kunnen zien dat de punten grotendeels langs een rechte diagonale lijn liggen, met enkele kleine afwijkingen langs elk van de staarten.
Op basis van deze grafiek kunnen we veilig aannemen dat deze dataset normaal verdeeld is.
Voorbeeld 2: QQ-plot voor niet-normale gegevens
De volgende code laat zien hoe u een QQ-plot maakt voor een gegevensset met 1000 waarnemingen gegenereerd op basis van een exponentiële verdeling :
/*generate 1000 values that follow an exponential distribution*/
data exp_data;
do i = 1 to 1000;
x = ranexp (1);
output ;
end ;
run ;
/*create some plot*/
proc univariate data =exp_data noprint ;
qqplot x;
run ;
Ik zie dat de punten aanzienlijk afwijken van een rechte diagonale lijn. Dit geeft duidelijk aan dat de dataset niet normaal verdeeld is.
Dit zou logisch moeten zijn, aangezien we hebben gespecificeerd dat de gegevens een exponentiële verdeling moeten volgen.
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:
Proc Univariate gebruiken voor normaliteitstesten in SAS
Hoe u een logboektransformatie uitvoert in SAS
Hoe uitschieters in SAS te identificeren