Seite 1 von 1

Zufallsstichprobe Warenkorbanalyse / Dummy-Variablen

BeitragVerfasst: Do 26. Nov 2020, 10:52
von Ohana2410
Hi ihr Lieben,

ich hoffe, dass es noch keinen Thread zu einem der kommenden Fragen gibt. Im Rahmen meiner Bachelorthesis analysiere ich ein Warenkorb mit ca. 100.000 Transaktionen.

Da die Methodik im Vordergrund steht, darf ich mir eine Zufallsstichprobe von ca. 10.000 Transaktionen dafür ziehen. Jetzt ist die SPSS-Datei so aufgebaut, dass eine Variable die TransaktionsID und in der nächsten Variable ein enthaltenes Item steht. Da in der Regel mehrere Items einer Transaktions ID zugeordnet werden, sieht mein SPSS-Datenset wie folgt aus (Inhalte sind fiktiv, es geht nur um den Aufbau):

TransaktionID ITEM
1 Banane
1 Kaffee
1 Milch
2 Kaffee
2 Apfel
3 Tee
3 Banane
3 Milch
..

Ziehe ich eine Zufallsstichprobe, dann werden die Transaktionen aufgesplittet, d.h. vllt. bleibt von TransaktionID 3 nur der Tee übrig. Ich muss aber sicherstellen, dass eine Transaktion komplett bleibt. Ich hoffe, ihr versteht was ich meine. Hat einer eine Idee, wie ich das bewerkstelligen könnte?

Eine weitere Frage hätte ich noch zur Dummy-Variablen-Codierung. Ich arbeite mit SPSS 25 und habe bei Usern im Internet die Funktion "Dummy-Variable erstellen" gesehen, mit welcher es wirklich schnell geht aus Ausprägungen einzelne Dummy-Variablen zu erstellen. Ich müsste für ca. 150 Produktarten über "Umcodieren in andere Variable" die Dummies erstellen. Ist es möglich diese Funktion integriert zu bekommen?

Ich danke euch wirklich vielmals für eure Hilfe!

LG,
Danny

Re: Zufallsstichprobe Warenkorbanalyse / Dummy-Variablen

BeitragVerfasst: Do 26. Nov 2020, 11:13
von ponderstibbons
Zur Fallauswahl probiere vielleicht mal dies (TransaktionsId heißt hier Id):

COMPUTE filter_$=(id ne lag(id) OR $casenum=1).
VARIABLE LABELS filter_$ 'id ne lag(id) OR $casenum=1 (FILTER)'.
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.

STRING id2 (A32).
IF (id ne lag(id) OR $casenum = 1) id2=id.
EXECUTE.

SORT CASES BY id2(D).

USE ALL.
do if $casenum=1.
compute #s_$_1=10000.
compute #s_$_2=100000.
end if.
do if #s_$_2 > 0.
compute filter_$=uniform(1)* #s_$_2 < #s_$_1.
compute #s_$_1=#s_$_1 - filter_$.
compute #s_$_2=#s_$_2 - 1.
else.
compute filter_$=0.
end if.
VARIABLE LABELS filter_$ '10000 aus den ersten 100000 Fällen (SAMPLE)'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.

FILTER OFF.
USE ALL.
EXECUTE.

AGGREGATE
/OUTFILE=* MODE=ADDVARIABLES
/BREAK=id
/Auswahl=MAX(filter_$).

LG

wtf

Mit freundlichen Grüßen

PonderStibbons