%******************************************************************************* % DEMO1.ISU: Indlæsning af data til opgave 2, MPAS E00. %******************************************************************************* % Antal observationer (5882) gemmes under navnet n (n bliver en "variate" af % længde 1) n=5882 % Variates af længde n deklareres. var areal vurd vurddato restan restbel tabbeløb ydelse alder riskdato ovtdato \ løbetid oprdato oblrente lånrente hovstol restgæld termant belnedre beløvre n % Faktorer af længde n deklareres fac amt n 16 fac type n 4 fac ejdrisk kundrisk n 3 fac tab køn n 2 fac formål n 9 fac låntype n 26 % Datafil åbnes for indlæsning. open 00-2.dat % Indlæsning. * betyder "oplysning overspringes". read areal amt vurd vurddato * type ejdrisk restan restbel tab tabbeløb ydelse \ alder kundrisk riskdato køn * ovtdato * * \ belnedre beløvre \ formål * låntype * løbetid oprdato oblrente lånrente hovstol restgæld termant % Data gemmes som ISU datasæt. save opg2 %******************************************************************************* % DEMO2.ISU: Fit af logistisk regressionsmodel % og kontrol af dens brugbarhed. %******************************************************************************* % RAM'en ryddes (normalt vil den være tom, så er det ligemeget). delete % Data hentes. get opg2 % Responsen skal være en variate, den konstrueres her: tabvar=(tab=1) % Der findes en observation med uoplyst amt, den fjernes: exclude amt=0 % oprdato har værdien 1 for adskillige observationer (som i øvrigt næsten alle % sammen har tab=2, altså intet tab). oprdato=1 betyder i virkeligheden % "oprettelsesdato ukendt", så vi fjerner disse observationer. exclude oprdato=1 % Der findes i øvrigt også værdier 0 af faktoren ejdrisk, formodentlig svarende % til at ejendommens risiko ikke er vurderet. Men de tilsvarende observationer % fjerner vi ikke. % Fit af en (ret arbitrær) model: fitlogit tabvar=1+oprdato+ejdrisk+amt % Parameterestimater udskrives. listpar % Fittede værdier gemmes i variate ved navn fit. savef fit % Fittede værdier og responser gemmes i nyt datasæt % (bemærk: det nye datasæt bliver kortere end det gamle) save opg2a fit tabvar % En faktor tab1="forudsagt tab" konstrueres. fac tab1 5882 2 % De følgende kommandoer lader vi stå på skærmen, så de kan genbruges. keep % Vi sætter tab1 til at være 1 hvis sandsynligheden for tab er estimeret til % mindst 0.25: tab1=1+(fit<0.25) % Krydstabellering af "tab" og "forudsagt tab": two tab tab1 %******************************************************************************* % DEMO3.ISU: Yderligere kontrol af modellens brugbarhed. %******************************************************************************* % Respons og fittede værdier hentes fra DEMO2 modellen: delete get opg2a % Længden af datasættet kaldes n: n=##(fit) % Observationer sorteres efter aftagende estimerede tabssandsynligheder: fit=-fit sort fit + fit=-fit % "Performance plot": andel=tabvar exclude 1 andel=andel+andel(#-1) include 1 var antal n antal=# frametext Performance Plot plot antal=0,-12,6000 andel=0,-9,900 % Performance plot for rekonstruerede "oprindelige data", i procent: antal=(tabvar=1)+(tabvar=0)/0.008 exclude 1 antal=antal+antal(#-1) include 1 andel=tabvar exclude 1 andel=andel+andel(#-1) include 1 antal=antal*100/antal(n) andel=andel*100/andel(n) frametext Performance Plot, renormeret plot antal=0,-10,100 andel=0,-10,100 frametext Performance Plot, renormeret, zoom plot antal=0,-10,10 andel=0,-10,10 % Modelkontrol: Kumulerede antal tab mod kumulerede fittede værdier. fitcum=fit exclude 1 fitcum=fitcum+fitcum(#-1) include 1 andel=tabvar exclude 1 andel=andel+andel(#-1) include 1 frametext Kumuleret tab mod kumuleret sandsynlighed plot fitcum andel