Zufallszahlen in SAS
Verfasst von Steppes am 1 November, 2005 - 10:00
Liebe SAS-Community,
habe gerade ein aktuelles kleines Problem mit SAS für das ich in der Dokumentation keine Lösung finde.
Vielleicht kann ja jemand von Euch die folgende Frage auf Anhieb beantworten:
Gibt es in SAS eine Möglichkeit Zufallszahlen zu erzeugen?
Was ich eigentlich suche, ist eine ähnliche Funktion wie die Excel-Funktion "ZUFALLSBEREICH(Untere_Zahl;Obere_Zahl)".
Im Voraus vielen Dank für Eure Antworten auf meine hoffentlich nicht zu triviale Frage.
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Zufallszahlen im DATA-Schritt
Mit folgendem Programm können gleich verteilte und normal verteilte Zufallszahlen im Data Schritt erzeugt werden. Weitere Hinweise zu den Zufallszahlenfunktionen finden Sie hier.
Alle Zufallszahlenfunktionen finden Sie in hier unter "Random Number".
Hallo Herr Mangold, hatte es
Hallo Herr Mangold,
hatte es mittlerweile mit "CALL RANUNI" auch geschafft mein Problem zu lösen, aber Ihr Programmbeispiel sieht irgendwie deutlich eleganter aus als meine.
Vielen Dank für die Hilfe!
Zufallszahlen
Hallo Herr Schicketanz,
es gibt die Funktionen CALL RANUNI(gleichverteilt), CALL RANNOR(normalverteilt) und CALL RANBIN(binomialverteilt). In der Online-Doc steht einiges dazu drin. Es werden Pseudozufallszahlen zwischen 0 und 1 erzeugt, die eben entsprechend verteilt sind. Ala Parameter muss man einen Startwert angeben, diese sogenannte Saatzahl bestimmt die Folge der erzeugten Pseudozufallszahlen (Stichwort: Lineare Kongruenz-Generatoren), ist der Startwert >0 sind die erzeugten Zahlen jederzeit reproduzierbar. Nimmt man einen Wert kleine oder gleich 0 erzeugt sich SAS diese Saatzahl aus der Systemzeit.
Gruß
Wolfgang Hornung
Zuweisung zu randomisierter Kontrollgruppe
Hallo Herr Schickedanz,
für die Zuweisung zu einer randomiserten Kontrollgruppe empfehle ich PROC SURVEYSELECT. Können SIe sich einfach mit SAS/EG generieren(in SEG Version 2.1 unter [Daten]-[Zufällige Stichprobe]. Diese Funktion ist klasse: Sie übergeben einfach eine Datei mit der Gesamtstichprobe
und die Funktion erstellt eine Ausgabedatei, die eine zufällige Stichprobe der Zeilen in der Eingabedatei enthält.
Folgende Parameter können Sie mitgeben:
Auswählen einer Stichprobenmethode
----------------------------------
Im Bereich Stichprobenmethode wählen Sie ein der beiden verfügbaren Methoden:
Einfache zufällige Stichprobe ohne Ersetzung. Wenn eine Zeile ausgewählt wird, wird sie aus den wählbaren Zeilen herausgenommen. Dadurch kann dieselbe Zeile nicht mehrmals ausgewählt werden.
Unbeschränkte zufällige Stichprobe mit Ersetzung. Wenn eine Zeile ausgewählt wird, bleibt sie weiterhin wählbar. Dadurch kann dieselbe Zeile mehrmals ausgewählt werden. Unter dem Reiter Ergebnisse geben Sie an, wie mehrere Selektionen derselben Zeile in der Ausgabedatei verzeichnet werden.
Auswählen einer Stichprobengröße
--------------------------------
Im Bereich Stichprobengröße geben Sie die gewünschte Stichprobengröße auf einer der beiden folgenden Arten an:
Wählen Sie die Option Anzahl der Zeilen und geben Sie anschließend die gewünschte Zeilenzahl im Feld rechts neben der Option ein.
Wählen Sie die Option Prozentwert der Zeilen und geben Sie anschließend den gewünschten Prozentwert der Eingabezeilen im Feld rechts neben der Option ein. Wenn Sie z.B. 3 eingeben und es 400 Eingabezeilen gibt, besteht die resultierende Stichprobe aus 12 Zeilen.
Wenn Sie Schichtvariablen unter dem Reiter Spalten angeben, gilt die hier vorgenommene Angabe zur Stichprobengröße für alle Schichten statt für die gesamte Eingabedatei.
Angeben eines Zufallszahlenstartwerts
-------------------------------------
Im Allgemeinen können Sie das Feld Zufallszahlenstartwert leer lassen. In diesem Fall wird die Stichprobe mit einem Ausgangswert, der auf der Systemuhr beruht, erzeugt.
Unter dem Reiter Ergebnisse können Sie eine Zusammenfassungstabelle anfordern, die über den Ausgangswert, der für die Erzeugung der Stichprobe verwendet wurde, Auskunft gibt. Durch späteres Angeben desselben Ausgangswerts bei derselben Eingabedatei können Sie dieselbe Stichprobe erzeugen
Beispiel:
---------
PROC SURVEYSELECT
DATA=WORK.Tabelle1_12805
METHOD=SRS
N=10
OUT=SASUSER.SAMP3306 (LABEL="Zufällige Stichprobe von WORK.Tabelle1_12805")
;
Mit freundlichen Grüßen
Marcus Pilz
Produktverantwortung 'HV-Auswertungssysteme'
Projektleitung 'IC-Technologie'
Commerzbank AG
SURVEYSELECT
Hallo Herr Pilz,
vielen Dank für Ihre schnelle Antwort.
Wenn ich Ihr Beispielprogramm ausführe, bekomme ich leider die folgende Fehlermeldung:
ERROR: The SAS/STAT product with which SURVEYSELECT is associated is either not licensed for your system ....
Das Modul SAS/STAT haben wir hier anscheinend nicht lizensiert. Kennen Sie vielleicht auch eine Lösung innerhalb von SAS/BASE?