Die Mathe-Redaktion - 24.04.2018 16:38 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 742 Gäste und 21 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matroid mire2
Mathematische Software & Apps » Statistikpakete » SAS: Histogramm bzw. Variablenbelegung
Druckversion
Druckversion
Antworten
Antworten
Autor
Beruf SAS: Histogramm bzw. Variablenbelegung
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2018-03-16


Hallo zusammen!

Ich komme nicht weiter. SAS ist mir ein Buch mit 7 Siegeln. Und googlen bringt mich nicht weiter, also hoffe ich nun auf das Schwarmwissen.
Nebenfrage: Gibt es eine wirklich empfehlenswerte Doku, die ich mir mal durchlesen könnte um Deppenfragen wie die folgende demnächst zu vermeiden?

Hauptfrage:
Ein Makro soll folgendes tun:

Histogramme malen
- mit je 10 Klassen mit Abstand (Max-Min)/10 und von Min bis MAx einer Variable
- und mit der Anzahl der Gruppen als untereinanderstehenden Fenstern

Folgender Programmcode steht bislang:

data tmp_variablen;
set TABELLE;
run;

title 'Histogramme';    
      proc univariate data=tmp_variablen noprint;
        class GRUPPEN;
        var VARIABLE;
        histogram VARIABLE /
NROWS= ANZ(GRUPPEN) /* läuft so nicht*/
   midpoints = min(VARIABLE) to max(VARIABLE) by (max(VARIABLE)-min(VARIABLE))/10 /* läuft so nicht*/;
      run;
      title;

Mein Problem ist also, ich weiß nicht, wie ich das Minimum, Maximum und die Anzahl der Gruppen "bauen kann"        auch ein Vorgehen, wie ich das auf Makrovariablen schreibe (%let k = min (Variable) geht auch nicht) würde mein Problem lösen.
 
PS: Proc sgplot, was anscheinend mehr kann, läuft bei mir nicht (EG )
(ERROR: Unable to load the Java Virtual Machine. Please see the installation instructions or system administrator.)          

Vielen Dank schon einmal für hilfreiche Ideen!



  Profil  Quote  Link auf diesen Beitrag Link
AnnaKath
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.12.2006
Mitteilungen: 2806
Aus: hier und dort (s. Beruf)
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2018-03-17


Huhu GruenesEi,

ich vermute, Du möchtest etwas in der folgenden Art erzeugen:
SAS
/* Ein Beispielsample: Hier nimmst Du natürlich Deines! */
data tmp ;
	do i=1 to 1000 ;
		gruppe = floor(ranuni(-1)*10) ;
		variable = rand('normal') ; 
		output ;
	end ;
	drop i ;
run ;
 
proc sql ;
	select count(g)
	into :groups
	from ( select distinct gruppe as g from tmp );
quit ;
 
proc sql ;
	select max(variable), min(variable)
	into :max, :min
	from tmp ;
quit ;
 
%let width = %sysevalf(((&max.) - (&min.))/&groups.);
 
title 'Histogramme';    
proc univariate data = tmp noprint ;
    var variable ;
    histogram variable / midpoints = &min. to &max. by &width. ;
run ;

lg, AK.

Anmerkung: NROWS und CLASS im PROC UNIVARIATE sind vermutlich überflüssig, wenn ich Dein Anliegen richtig verstehe; ansonsten frage gerne nach. Wenn Du wirklich 10 Histogramme erzeugst, sehen diese ziemlich - naja - langweilig aus...



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2018-03-17


Hallo AK!

Vielen lieben Dank. Aus deinem Baustein konnte ich mir das entsprechende Macro bauen. Jetzt kann es losgehen und ich werde mal forschen, was deine Funktionen genau machen, außer funktionieren. Gruppen und 10 waren übrigens nicht das gleiche, aber das habe ich selbst gelöst ;-)



  Profil  Quote  Link auf diesen Beitrag Link
AnnaKath
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.12.2006
Mitteilungen: 2806
Aus: hier und dort (s. Beruf)
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2018-03-17


Huhu!

Aus Interesse: Würdest Du mir zeigen, was Du eigentlich beabsichtigtest?

Danke und lg,
AK.



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2018-03-19


Hi AK,
klar, gerne:

proc sort data= tmp_variablen out=tmp_variablen
(keep=lfnr aufteilung
Variable1
Variable2
Variable3
Variable4
Variable5
) nodupkey ;
by kdnr;
run;

%macro histogramme (datensatz,variable,anz_gruppen);
proc sql noprint;
select max(&variable.), min(&variable.)
into :max, :min
from &datensatz. ;
quit ;
 
%let width = %sysevalf(((&max.) - (&min.))/10);
 
title &variable.;    
proc univariate data = tmp_variablen noprint ;
   class aufteilung;
    var &variable. ;
    histogram &variable. /  
NROWS= &anz_gruppen. midpoints = &min. to &max. by &width. ;
run;
%mend histogramme;

%histogramme(tmp_variablen,Variable1,4);
%histogramme(tmp_variablen,Variable2,4);
%histogramme(tmp_variablen,Variable3,4);

nun würde ich gerne noch Variable1-Variable5 automatisch der Reihe nach aufrufen (sind anders benannt) - weißt du da noch einen Programmschnipsel?



  Profil  Quote  Link auf diesen Beitrag Link
AnnaKath
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.12.2006
Mitteilungen: 2806
Aus: hier und dort (s. Beruf)
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2018-03-19


Huhu GruenesEi,

meinst Du etwas in der folgenden Art?

SAS
%macro sample(var=) ;
	%put &&&var. ;
%mend ;
 
%macro loop ;
	%local i v ;
	%do i=1 %to 5 ;
		%let v = variable&i. ;
		%sample(var=v) ;
	%end ;
%mend ;
 
%loop;

lg, AK.



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2018-03-21


Hi AK,

vielleicht ;-) Leider habe ich keine Ahnung, was der Code macht. Benennt er die Variablen um? Und wie kriege ich den Originalnamen zurück?



  Profil  Quote  Link auf diesen Beitrag Link
AnnaKath
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.12.2006
Mitteilungen: 2806
Aus: hier und dort (s. Beruf)
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2018-03-21


Huhu GruenesEi,

vielleicht hilft es, wenn Du den Code einmal ausführst und schaust, was er macht?
SAS (log)
variable1
variable2
variable3
variable4
variable5

Die Makro-Funktion "sample" leistet natürlich nicht besonders viel, sie gibt nur den Namen (nach Auflösung von Makrotext) aus, der als symbolischer Parameter "var" übergeben wurde.

Die Makro-Funktion "loop" allerdings sollte nützlich für Dich sein. Wenn Du halbwegs verstehst, wie der Code funktioniert, kannst Du diese Funktion für Deine Zwecke so benutzen und ersetzt nur den Aufruf von "sample" durch
SAS
%histogramme(tmp_variablen,&&&v.,4);

lg, AK.



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2018-03-23


Hallo AK,

ich verstehe nicht, worauf das hinausläuft. Aber vielleicht kann ich mir ja eine passende Schleife bauen.



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 26.12.2007
Mitteilungen: 49
Aus:
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2018-03-23


Hallo AK,

aufgrund deiner Anregung habe ich jetzt einen großen Loop gebastelt, der genau macht, was ich möchte. Vielen Dank für deine Hilfe!



  Profil  Quote  Link auf diesen Beitrag Link
gruenesEi hat die Antworten auf ihre/seine Frage gesehen.
gruenesEi wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]