PROC FREQ in SAS, wie der Name schon sagt, gibt uns die Häufigkeitszählungen, sowie andere Statistiken, die bei der Analyse der Daten helfen. Aber die Proc Freq-Prozedur kann mehr als nur die Zählung angeben.
Seiteninhalt
Was ist PROC FREQ?
PROC FREQ ist eine Prozedur zur Analyse der Zählung von Daten. Es wird verwendet, um Häufigkeitsauszählungen für eine oder mehrere einzelne Variablen zu erhalten oder um Zwei-Wege-Tabellen (Kreuztabellen) aus zwei Variablen zu erstellen.
PROC FREQ wird auch verwendet, um statistische Tests auf Zähldaten durchzuführen.
PROC MEANS ist eine weitere SAS-Prozedur, mit der Sie deskriptive Statistiken wie die Ermittlung von Mittelwert, Standardabweichung, Minimal- und Maximalwerten und viele weitere statistische Berechnungen durchführen können.
Proc freq ist vielleicht die erste Prozedur, an die Sie denken, wenn das benötigte Ergebnis eine Zählung ist. Für dieses Lernprogramm habe ich das Beispiel des SASHELP.HEARTS-Datensatzes genommen. Hier kann es verwendet werden, um die Anzahl der Probanden mit bp_status=’Normal‘ zu finden und die Anzahl der MÄNNLICHEN und WEIBLICHEN Probanden im Datensatz zu zählen.
Aber was, wenn das benötigte Ergebnis nicht unbedingt eine Zählung ist? Proc freq kann ein hilfreiches Werkzeug für andere Zwecke als das Zählen sein. Die folgenden sind nur einige der häufigen Arten von Fragen, die in diese Kategorie passen:
- Welcher Prozentsatz der männlichen und weiblichen Personen hat eine Herzerkrankung?
- Wie hoch ist die Anzahl der Personen, die aufgrund von hohem Cholesterinspiegel gestorben sind?
- Was ist die Todesursache der Personen?
- Wer sind die betroffenen Probanden?
- Haben irgendwelche Probanden nicht eindeutige Datensätze?
Proc freq ist vielleicht nicht die erste Methode, an die man denkt, um Fragen wie diese zu beantworten, aber sie kann eine sehr schnelle und effiziente Option sein.
Warum könnte proc freq ein guter Kandidat für diese schnellen Antworten sein? Erstens muss in diesen Fällen weniger getippt werden als bei anderen Methoden. Das kann sowohl Zeit sparen als auch Tippfehler reduzieren.
Zusätzlich kann es sein, dass bereits einige freqs in Arbeit sind, um ein Problem zu überprüfen, wenn weitere Fragen auftauchen. Daher kann es ein logischer nächster Schritt sein, die Ergebnisse aus den vorhandenen Häufigkeitszählungen zu erhalten, anstatt die Daten zu verarbeiten.
Schließlich gibt es mit den Ausgabedatensätzen, die von proc freq bereitgestellt werden, leicht verfügbare Listen mit eindeutigen Werten, Kombinationen und Zählungen.
Syntax von PROC FREQ
PROC FREQ <options>; BY variables ; EXACT / <statistic-options> ; OUTPUT <OUT=sas dataset options> ; TABLES requests </options> ; TEST </options> ; WEIGHT variable </options> ;
PROC FREQ Anweisungen
- BY Liefert separate Analysen für jede BY-Gruppe
- EXACT Fordert exakte Tests an.
- OUTPUT Fordert einen Ausgabedatensatz an.
- TABLES Gibt Tabellen an und fordert Analysen an.
- TEST Fordert Tests für Assoziations- und Übereinstimmungsmaße an.
- WEIGHT Bezeichnet eine Gewichtsvariable.
PROC FREQ Optionen
PROC FREQ hat mehrere mögliche Ausgabeanforderungen. Die gebräuchlichste ist die Option OUT=, mit der ein SAS-Datensatz einer bestimmten Tabellierung erzeugt wird.
Optionen für die Tabellenanweisung werden von einem Schrägstrich gefolgt. Das „/“ löst die Mehrdeutigkeit auf, ob es sich um einen Variablennamen oder ein SAS-Schlüsselwort handelt, und so teilt das „/“ SAS mit, dass die Argumente für die Tabellenanweisung enden und alles, was nach den Optionen steht, das Standardverhalten der Anweisung ändern soll.
Ein weiteres Beispiel ist die Option NOCOL, die, wenn sie verwendet wird, SAS auffordert, keine Spaltenprozente anzuzeigen.
Beispiel für PROC FREQ
Nachfolgend sehen Sie eine grundlegende Anwendung von PROC FREQ in SAS, um die Anzahl der Schüler zu ermitteln, die in jeder Kategorie des Geschlechts beobachtet wurden.
proc freq data=sashelp.class;table sex;run;
TABLES age*weight / CHISQ;
Die obige Anweisung verlangt, dass das Chi-Quadrat und die zugehörigen Statistiken für die Kreuztabelle A*B ausgegeben werden.
Szenario 1. Wie hoch ist die Anzahl der männlichen und weiblichen Personen mit bp_status von Hoch und Gewichtsstatus von Übergewichtig?
Für diese Art von Szenarien könnten Sorts und Datenschritte verwendet werden oder proc SQL ist eine weitere Option. Ein Datenschritt könnte der erste Gedanke für eine Lösung sein. Dabei werden zunächst die benötigten Daten mit proc sort sort sortiert. Dann müssen Datensätze von Interesse und eindeutigem Geschlecht ausgewählt werden (Datenschritt). Dann die Ausgabe des Datensatzes (proc print).
Aber proc freq kann diese Frage in einem Block Code ohne einen Datenschritt beantworten! Ein proc freq kann mit einer WHERE-Anweisung verwendet werden, um auf den bp- und Gewichtsstatus zu subsumieren.
proc freq data=sashelp.heart;where bp_status='High' and weight_status='Overweight';tables sex /nocum;run;
Eine TABLES-Anweisung von sex kann dann verwendet werden, um eine eindeutige Liste der in dieser Teilmenge enthaltenen Geschlechter zu erhalten. Die Option NOCUM wird verwendet, um die kumulative Häufigkeit aus dem Ergebnis auszuschließen.
Szenario 2: Welche Produkte wurden durch den Vorhersagewert beeinflusst?
Für dieses Szenario habe ich den Datensatz SASHELP.PRDSALE verwendet. Stellen Sie sich vor, es wurde festgestellt, dass es einige Produkte gibt, bei denen der tatsächliche Verkaufspreis größer ist als der vorhergesagte Preis.
Die erste Frage ist wahrscheinlich: Welches sind die Produkte, bei denen der tatsächliche Preis größer ist als der vorhergesagte?
Aber dies ist die Art von Frage, bei der die Ergebnisse zu vielen Folgefragen führen können, und der Umfang der Untersuchung und Analyse kann sich ausweiten und zusätzliche Codierungsschritte erfordern, um der Ursache des Problems auf den Grund zu gehen.
Unabhängig von der angewandten Methode beginnt die Untersuchung mit einem Datensatz, der sowohl die Labordaten als auch das Datum der Einverständniserklärung zum Vergleich enthält.
Diese Frage kann durch Arbeiten innerhalb eines Datenschritts oder durch Verwendung der proc freq-Methode beantwortet werden.
Datenschritt-Methode:
Bei der Arbeit innerhalb eines Datenschritts würde, wenn der Datensatz nicht bereits sortiert ist, zuerst ein proc sort kommen und dann ein Datenschritt, um die eindeutigen Produktwerte von Interesse auszuwählen.
proc sort data=sashelp.prdsale out=sale;by product;run;data unique_product(keep=product);set sale(where=(actual > predict));by product;if first.product;run;
Proc freq-Methode:
Bei der Arbeit mit einem proc freq könnten wir einfach einen freq mit USUBJID in der TABLES-Anweisung durchführen und zusätzlich die WHERE-Anweisung verwenden, um die Datensätze mit Ausgabe zu unterteilen:
proc freq data=sashelp.prdsale;where actual gt predict;tables product /list missing nocum;run;
Ein-.Weg-Häufigkeitstabellen
Mit PROC FREQ können Sie Tabellen mit den Häufigkeiten/Zählungen nach Kategorien erstellen und die Zählungen durchführen.
Verwendung der Option ORDER=FREQ
proc freq data=data.flighttravelers order=freq;table day_of_booking;run;
- PROC FREQ im obigen Beispiel enthält die Option ORDER=FREQ.
- Mit der Option ORDER=FREQ können Sie schnell eine Analyse durchführen, welche Kategorien die meisten und die wenigsten Zählungen aufweisen.
- Die Spalte „Häufigkeit“ gibt an, wie oft die Variable tag_der_buchung den Wert in der Spalte annimmt.
- Die Spalte „Prozent“ gibt den prozentualen Anteil an der Gesamtzahl an.
- Die Spalten „Kumulative Häufigkeit“ und „Prozent“ geben die Zunahme der Anzahl und des prozentualen Anteils für die Werte von day_of_booking an.
Sie verwenden diese Art von Einblicken, um etwas über die Verteilung der Kategorien in Ihrem Datensatz zu erfahren.
In diesen Daten haben zum Beispiel 28 Personen Flüge am Sonntag gebucht.
Verwenden Sie die Option ORDER=FORMATTED.
Mit der Option ORDER=FORMATTED können Sie die Reihenfolge steuern, in der die Kategorien in der Tabelle angezeigt werden.
Bevor Sie diese Option verwenden, müssen Sie ein benutzerdefiniertes Format erstellen, um die Reihenfolge zu definieren, die Sie in der Ausgabe wünschen.
proc freq order=formatted data=data.flighttravelers;tables day_of_booking;title "Example of PROC FREQ with Formatted Values";format day_of_booking $dayfmt.;run;
Erstellen einer Einweg-Häufigkeitstabelle aus einerWay Frequency table from a summarized data
Wenn die Daten bereits zusammengefasst sind, können Sie die WEIGHT-Anweisung verwenden, um die Variablen anzugeben, die die Anzahl repräsentieren.
proc freq;weight count;title 'Reading Summarized Count data';tables category;run;
Die Anweisung WEIGHT COUNT teilt PROC FREQ mit, dass die Daten für die Variable COUNT Zählungen sind. Obwohl es zwei Datensätze für CENTS gibt, ist das Programm in der Lage, das GEWICHT zu einer einzigen CENTS-Kategorie (252 CENTS) zusammenzufassen.
Testen der Anpassungsgüte mit PROC FREQ in SAS
PROC FREQ in SAS kann auch zum Testen der Anpassungsgüte für eine einseitige Tabelle verwendet werden. Ein Anpassungsgütetest für eine einzelne Grundgesamtheit ist ein Test, der verwendet wird, um festzustellen, ob die Verteilung der beobachteten Häufigkeiten in den Stichprobendaten die erwartete Anzahl des Auftretens für die Grundgesamtheit darstellt.
Angenommen, die Anzahl der Beobachtungen ist fest.
Die zu prüfenden Hypothesen lauten:
- H:0 Die Grundgesamtheit folgt der hypothetischen Verteilung.
- H: a Die Grundgesamtheit folgt nicht der hypothetischen Verteilung.
Der Chi-Quadrat-Test gehört zu den Goodness-of-Fit-Tests. Eine Entscheidung kann auf der Grundlage des p-Wertes getroffen werden, der mit dieser Statistik verbunden ist.
Ein niedriger p-Wert zeigt an, dass die Daten nicht der hypothetischen oder theoretischen Verteilung folgen.
Wenn der p-Wert ausreichend niedrig ist (normalerweise <0.05), wird die Nullhypothese verworfen.
Die Syntax zur Durchführung eines Goodness-of-Fit-Tests lautet wie folgt:
PROC FREQ;
TABLES variable / CHISQ TESTP=(Liste der Kennzahlen);
Beispiel:
Eine Fluggesellschaft betreibt tägliche Flüge zu mehreren indischen Städten. Eines der Probleme für diese Fluggesellschaft sind die Essensvorlieben der Passagiere. Der Kapitän-Koch-Betriebsleiter glaubt, dass 35% ihrer Passagiere vegetarisches Essen bevorzugen, 40% bevorzugen vegetarisches Essen. 20% kalorienarmes Essen und 5% fragen nach Diabetikernahrung.
Eine Stichprobe von 500 Passagieren wurde zufällig ausgewählt, um die Essensvorlieben zu analysieren, und die Daten sind unten dargestellt.
Wir werden einen CHI-SQURE-Test durchführen, um zu prüfen, ob die Überzeugung von Captain Cook bei alpha=0.05
Lebensmitteltyp | Vegetarisch | Nicht-Vegetarisch | Low-Kalorien | Diabetiker |
---|---|---|---|---|
Anzahl der Passagiere | 190 | 185 | 90 | 35 |
Lösung:
proc freq data=airlines order=data;weight no_of_passengers;title 'goodness of fit analysis';tables foodtype / nocum chisq testp=(0.35 0.40 0.20 0.05);run;
- Die Daten werden als durch das GEWICHT Anzahl_der_Passagiere zusammengefasst.
- Die ORDER=DATA wird verwendet, um die Daten wie im Eingabedatensatz zu ordnen. Die Häufigkeiten basieren auf der Variable Lebensmittel_Typ.
- Die Anweisungen /NOCUM CHISQ und TESTP= werden verwendet, um den Goodness-of-Fit-Test zu berechnen.
- Die Testkennzahlen basieren auf den prozentualen Nachkommen, die aus jeder der vier Kategorien erwartet werden.
- Die Option NOCUM fordert eine Tabelle ohne die kumulative Spalte an.
Hinweis: Sie müssen die Option ORDER=DATA verwenden, um sicherzustellen, dass die in der Anweisung TESTP= aufgelisteten hypothetischen Verhältnisse korrekt mit den Kategorien in den Eingabedaten übereinstimmen.
Der p-Wert für den Chi-Quadrat-Test (p=7,4107) ist größer als der kritische Wert (a=0,05), daher schließen wir, dass die Annahme von Kapitän Cook über die Nahrungsvorlieben wahr ist.
Chi-Quadrat-Test der Unabhängigkeit – Analyse von Zwei-Wege-Tabellen mit PROC FREQ in SAS
Mit PROC FREQ in SAS können wir den Chi-Quadrat-Test der Unabhängigkeit durchführen, wir testen, ob zwei oder mehr Gruppen statistisch unabhängig sind oder nicht.
Die TABLES-Anweisung, in der zwei oder mehr Variablen aufgelistet und durch ein Sternchen getrennt sind, erstellt eine Kreuztabelle, in der zwei Variablen miteinander in Beziehung gesetzt werden.
Die Kreuztabelle wird oft als Kontingenztabelle bezeichnet.
Die Auszählung der Anzahl des Auftretens in einer Stichprobe über zwei gruppierende Variablen erstellt eine Kreuztabelle.
Im folgenden Beispiel soll der Zusammenhang zwischen Kriminalität und Alkoholkonsum ermittelt werden.
Die unabhängige Variable ist KRIMEN und die abhängige Variable sind die TRINKER.
Die Aussage der Kreuztabelle lautet also
Tabellen Verbrechen*Trinker
Die Null- und Alternativhypothese lautet in diesem Fall:
- h_0 : Die Variablen sind unabhängig, was bedeutet, dass es keinen Zusammenhang zwischen Verbrechen und Alkoholkonsum gibt
- h_a : Die Variablen sind abhängig, was bedeutet, dass die Kriminalitätsrate vom Alkoholkonsum abhängig ist
proc freq data=drinkers;weight count;tables crime*drinker/chisq expected norow nocol nopercent;title 'chi square analysis of a contingency table';run;
Standardmäßig, zeigt die Tabelle in jeder Zelle vier Zahlen an: die Gesamthäufigkeit, den Gesamtprozentsatz, den Zeilenprozentsatz und den Spaltenprozentsatz wie unten dargestellt.
Das EXPECTED gibt an, dass erwartete Werte in die Tabelle aufgenommen werden sollen, und NOROW, NOCOL und NOPERCENT weisen SAS an, diese Werte aus der Tabelle auszuschließen.
Betrachten Sie die Statistik der Ausgabe. Der Chi-Quadrat-Wert ist 49,5660 und p<0,0001.
Damit verwerfen Sie die Nullhypothese, d.h. es besteht kein Zusammenhang (Unabhängigkeit), und schlussfolgern, dass ein Zusammenhang zwischen dem Alkoholkonsum und der Art der begangenen Straftat nachgewiesen werden kann.
Die meisten Erwartungswerte liegen nahe an den beobachteten Werten, während im Fall von Fraud der beobachtete Wert (63) von dem erwarteten Wert (109.14).
Diese Information führt zu der Schlussfolgerung, dass diejenigen, die in Betrug verwickelt sind, mit geringerer Wahrscheinlichkeit Alkohol trinken.
Berechnen des relativen Risikos mit PROC FREQ in SAS
Zwei-mal-zwei-Kontingenztabellen werden oft verwendet, wenn ein Risikomaß untersucht wird. In einer medizinischen Untersuchung werden diese Arten von Tabellen konstruiert, wenn eine Variable das Vorhandensein oder Nichtvorhandensein einer Krankheit darstellt und die andere einen Risikofaktor angibt.
Ein Maß für dieses Risiko in einer Fall-Kontroll-Studie wird als Odds Ratio (OR) bezeichnet.
In einer Fall-Kontroll-Studie nimmt ein Forscher eine Stichprobe von Probanden und schaut in der Zeit zurück, ob sie einer Krankheit ausgesetzt sind oder nicht.
In einer Kohortenstudie werden die Probanden nach dem Vorhandensein oder Nichtvorhandensein eines Risikos ausgewählt und dann über die Zeit beobachtet, um zu sehen, ob sie ein Ergebnis entwickeln; das Maß dieses Risikos wird relatives Risiko (RR) genannt.
Das relative Risiko gibt an, wie oft die Wahrscheinlichkeit, eine Exposition bei jemandem mit einer Krankheit zu finden, höher ist als die Wahrscheinlichkeit, die Exposition bei jemandem ohne die Krankheit zu finden.
Das relative Risiko gibt an, wie viel mal wahrscheinlicher oder unwahrscheinlicher eine exponierte Person ein Ergebnis entwickelt im Vergleich zu einer nicht exponierten Person.
In beiden Fällen bedeutet ein Risikomaß (OR oder RR) gleich 1 kein Risiko.
Ein von 1 verschiedenes Risikomaß stellt ein Risiko dar. Angenommen, das untersuchte Ergebnis ist unerwünscht.
- Risikomaß >1 bedeutet ein erhöhtes Risiko für das Ergebnis.
- Risikomaß <1 bedeutet ein verringertes Risiko für das Ergebnis.
- Risikomaß = 1 bedeutet kein Risiko.
In PROC FREQ heißt die Option zur Berechnung der Werte für OR oder RR RELRISK und erscheint als Option zur TABLES-Anweisung wie hier gezeigt:
Tabellen CHOLESTROLDIET*OUTCOME / CHISQ RELRISK;
Beispiel
proc freq data=HeartDisese order=data;title 'Case-Control Study of High Fat/Cholesterol Diet';TABLES CHOLESTROLDIET*OUTCOME / CHISQ RELRISK;exact pchi or;weight Total;run;
Die Häufigkeit sagt uns, wie viele Probanden wir in der NIEDRIGEN Cholesterin-Diät mit dem Ergebnis NO/YES Herzkrankheit haben.
Interpretieren wir die erste Zeile, haben wir 6 Probanden mit NIEDRIGEM Cholesterin, die KEINE Herzerkrankung haben, während 2 Probanden mit NIEDRIGEM Cholesterin eine Herzerkrankung haben.
Erwartet gibt den tatsächlichen Wert zum beobachteten Wert an.
Der Prozentsatz ist der Gesamtprozentsatz, der angibt, dass von den 8 Probanden mit NIEDRIGEM Cholesterinspiegel 26,09 % keine Herzkrankheit haben.
Der Prozentsatz sagt uns, dass von den 8 Probanden mit NIEDRIGEM Cholesterinspiegel keine Herzkrankheit vorliegt. d.h. 75 % der Menschen, die in der NIEDRIGEN Cholesterin-Diät sind, haben keine Herzkrankheit.
COL Percent sagt uns den Prozentsatz der Probanden, die in der NIEDRIGEN Cholesterin-Diät sind, die keine Herzkrankheit haben. d.h. 6 von 10, was 60 % ist. während 80% der Personen, die eine Herzerkrankung haben, in der HIGH Cholesterin Diät sind.
Die CHI-SQUARE Testinterpretation sagt uns die Assoziation dieser Variablen zwischen dem, was erwartet wurde und dem, was beobachtet wird.
Die Chi-Quadrat Statistik (4.9597) ist kleiner als der P-Wert (0.0259), was bedeutet, dass es einen Zusammenhang zwischen dem Erwarteten und dem Beobachteten gibt.
Die Warnung
Eine der Annahmen des CHI-SQUARE-Tests ist, dass der beobachtete Wert in jeder Zelle größer als 5 sein sollte. Im obigen Beispiel haben wir 4 und 2, die kleiner als 5 sind. In diesen Fällen ist es angemessener, den exakten Test von Fisher zu verwenden.
Der exakte Test von Fisher (0.0393), der bei einem Alpha von 5% statistisch signifikant ist. Wir können also sagen, dass es eine Assoziation gibt und dass vielleicht eine HOHE fettreiche Ernährung mit einem HOHEN Risiko für Herzerkrankungen verbunden ist.
Die EXAKT-Aussage ist für PICHI, was bedeutet, dass der P-Wert für das CHI-SQUARE die untenstehende Tabelle ausgibt.
- text{Odds ratio} = frac {text{ods of exposure in a group}}{text{ods of exposure not in a group}}
- LARGE frac {6/2} {4/11} = 8.25
Odds ratio – 8.25 mit 95% Konfidenzintervall, was bedeutet, dass die Wahrscheinlichkeit, eine Herzerkrankung zu haben, 8-mal höher ist als bei den Personen, die keine Herzerkrankung haben
Das relative Risiko von 2.88 bedeutet, dass die Herzerkrankung in der Gruppe mit hohem Fettanteil 2.88-mal höher ist. (Erhöhtes Risiko).
Das relative Risiko von 0,34 sagt uns, dass es ein vermindertes Risiko (0,34 mal weniger) von NIEDRIGEM Cholesterin und Herzkrankheiten gibt.
Da wir EXAKT auf ODDs Ratio angegeben haben, erhalten wir die letzte Tabelle wie unten.
Das Odds Ratio ist das gleiche wie das oben genannte, nämlich 8.25, aber es gibt auch die genaue Konfidenzgrenze an.
Download Proc-Freq, Übungsdateien,…