PDO_HDO_Erzeugen.sps:
**
 * Einlesen der Standardstatistikdatei nach einer HHGEN-Haushaltegenerierung
 * und nach einer HHPROG-Indikatorenberechnung dstbestc.txt (Pfad anpassen!)
 * Mit dieser SPSS-Syntax erhält man die Ableitung von PDO_Test und HDO_Test
 * gemäß der Spezifikation für PDO und HDO
 * Durch einen Vergleich mit den Ergebnissen aus HHPROG kann man vermutete
 * Inkonstistenzen bei HDO und PDO analysieren
 * Wenn die ausgegebenen Kreuztabellen konstistent sind,
 * d.h. Werte <>0 nur in der Diagonalen enthalten, liegt kein Fehler in HHPROG
 * vor, sondern in HHGEN oder bereits direkt in der Bestandsdatei
 *.

data list file = "../../sikurs/beispiel/hhprog/dstbest.txt"
 / R01     1-  8 (A)
   R03     9- 19 (A)
   P03   123-123 (F)
   KERNS 179-179 (F)
   HHNR  183-186 (F)
   HZUO  187-188 (A)
   HPAAR 189-189 (F)
   HELT  190-190 (F)
   HVOR  191-191 (F)
   HNACH 192-192 (F)
   A01   251-253 (F)
   A06   260-261 (F)
   A07   262-263 (F)
   PDO   268-268 (A)
   HDO   269-269 (A).
execute.

* Auswahl Personen in Haushalten nach HHGEN.
select if (KERNS <> 0).
* Initialisierung.
compute PDO_Test=9.

*****************************************************************..
* Zuordnung nach PDO_Test gemäß Spezifikation.
*****************************************************************..

if ((A01<18) and (P03=1)) and (KERNS<>2) and (HNACH<>2) and (HNACH<>6) PDO_Test=1.
if (A07>0) and ((HELT=1) or ((HVOR=1) and (HZUO<>"4 ")))  PDO_Test=2.
if (HPAAR=1 or HPAAR=2) and (PDO_Test<>2) PDO_Test=3.
if (HNACH=1 or HNACH=3 or HNACH=4 or HNACH=5) and (PDO_Test<>1 and PDO_Test<>2 and PDO_Test<>3) PDO_Test=4.
if (HELT=1 or HVOR=1) and ( PDO_Test<>1 and PDO_Test<>2 and PDO_Test<>3 and PDO_Test<>4) PDO_Test=5.
If (A06=1) PDO_Test=6.
if (PDO_Test<>1 and PDO_Test<>2 and PDO_Test<>3 and PDO_Test<>4 and PDO_Test<>5 and PDO_Test<>6) PDO_Test=7.
execute.

* Plausi: In der Kreuztabelle müssen alle Werte in der Diagonalen stehen.
crosstabs 
	/tables = PDO_Test by PDO
	/format=avalue tables nopivot
	/cells=count.
	
*****************************************************************..
* Zuordnung von HDO_Test gemäß Spezifikation.
*******************************************************************.
* Initialisierung.
compute HDO_Test=9.

* Zwischenschritt:
* Merkmale für Haushalte berechnen, temporär zwischenspeichern und matchen.
if (PDO_Test=1) HK=1.
if (HPAAR=1 or HPAAR=2 and PDO_Test=3) HP=1.
if (PDO_Test=4) HN=1.
if (PDO_Test=5) HV=1.
recode HK HP HN HV (missing=0).
sort cases by R01 R03 HHNR.

dataset declare aggset.
aggregate outfile = aggset
 /break=R01 R03 HHNR
 /HKs = sum (HK)
 /HPs = sum (HP)
 /HNs = sum (HN)
 /HVs = sum (HV).
 
match files file = *
  /table=aggset
  /by=R01 R03 HHNR.
* Ende Zwischenschritt.

if (A06=1) HDO_Test=1.
if (HKs>0 and HDO_Test<>1) HDO_Test=2.
if (HKs=0 and HPs=2 and HDO_Test<>1 and HDO_Test<>2) HDO_Test=3.
if (HKs=0 and HPs=0 and HNs>0 and HVs>0 and HDO_Test<>1 and HDO_Test<>2 and HDO_Test<>3) HDO_Test=4.
if (HKs=0 and HPs=0 and HVs=0 and HDO_Test<>1 and HDO_Test<>2 and HDO_Test<>3 and HDO_Test<>4) HDO_Test=5.
recode HDO_Test (missing=0).

* Plausi: In der Kreuztabelle müssen alle Werte in der Diagonalen stehen.
crosstabs 
  /tables = HDO_Test by HDO
  /format=avalue tables nopivot
  /cells=count.

Ausgabe:

1 Eintrag wird von `../../sikurs/beispiel/hhprog/dstbest.txt' gelesen.
Variable Datensatz Spalten Format
R01 1 1- 8 A8
R03 1 9- 19 A11
P03 1 123-123 F1.0
KERNS 1 179-179 F1.0
HHNR 1 183-186 F4.0
HZUO 1 187-188 A2
HPAAR 1 189-189 F1.0
HELT 1 190-190 F1.0
HVOR 1 191-191 F1.0
HNACH 1 192-192 F1.0
A01 1 251-253 F3.0
A06 1 260-261 F2.0
A07 1 262-263 F2.0
PDO 1 268-268 A1
HDO 1 269-269 A1
Zusammenfassung
Fälle
Gültig Fehlende Werte Gesamt
N Prozent N Prozent N Prozent
PDO_Test × PDO 57430 100,0% 0 ,0% 57430 100,0%
PDO_Test × PDO
PDO Gesamt
PDO_Test 1,00 Beobachtete Häufigkeit 6215 6215
2,00 7151 7151
3,00 14345 14345
4,00 2465 2465
5,00 984 984
6,00 23585 23585
7,00 2685 2685
Gesamt 57430 57430
Zusammenfassung
Fälle
Gültig Fehlende Werte Gesamt
N Prozent N Prozent N Prozent
HDO_Test × HDO 57430 100,0% 0 ,0% 57430 100,0%
HDO_Test × HDO
HDO Gesamt
HDO_Test 1,00 Beobachtete Häufigkeit 23585 23585
2,00 14231 14231
3,00 15843 15843
4,00 1785 1785
5,00 1986 1986
Gesamt 57430 57430