The German Credit Scoring data set contains 1000 observations and 21 variables. The dataset in this form is provided by Professor Dr. Hans Hofmann. The dataset contains 14 categorical variables and 7 numerical variables.
library(caret)
library(verification)
library(rpart)
library(rpart.plot)
library(verification)
library(mgcv)
library(nnet)
library(NeuralNetTools)
library(e1071)
german.data <- read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data")
colnames(german.data) <- c("chk_acct", "duration", "credit_his", "purpose",
"amount", "saving_acct", "present_emp", "installment_rate", "sex", "other_debtor",
"present_resid", "property", "age", "other_install", "housing", "n_credits",
"job", "n_people", "telephone", "foreign", "response")
german.data$response <- german.data$response- 1
german.data$response <- as.factor(german.data$response)
str(german.data)
## 'data.frame': 1000 obs. of 21 variables:
## $ chk_acct : Factor w/ 4 levels "A11","A12","A13",..: 1 2 4 1 1 4 4 2 4 2 ...
## $ duration : int 6 48 12 42 24 36 24 36 12 30 ...
## $ credit_his : Factor w/ 5 levels "A30","A31","A32",..: 5 3 5 3 4 3 3 3 3 5 ...
## $ purpose : Factor w/ 10 levels "A40","A41","A410",..: 5 5 8 4 1 8 4 2 5 1 ...
## $ amount : int 1169 5951 2096 7882 4870 9055 2835 6948 3059 5234 ...
## $ saving_acct : Factor w/ 5 levels "A61","A62","A63",..: 5 1 1 1 1 5 3 1 4 1 ...
## $ present_emp : Factor w/ 5 levels "A71","A72","A73",..: 5 3 4 4 3 3 5 3 4 1 ...
## $ installment_rate: int 4 2 2 2 3 2 3 2 2 4 ...
## $ sex : Factor w/ 4 levels "A91","A92","A93",..: 3 2 3 3 3 3 3 3 1 4 ...
## $ other_debtor : Factor w/ 3 levels "A101","A102",..: 1 1 1 3 1 1 1 1 1 1 ...
## $ present_resid : int 4 2 3 4 4 4 4 2 4 2 ...
## $ property : Factor w/ 4 levels "A121","A122",..: 1 1 1 2 4 4 2 3 1 3 ...
## $ age : int 67 22 49 45 53 35 53 35 61 28 ...
## $ other_install : Factor w/ 3 levels "A141","A142",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ housing : Factor w/ 3 levels "A151","A152",..: 2 2 2 3 3 3 2 1 2 2 ...
## $ n_credits : int 2 1 1 1 2 1 1 1 1 2 ...
## $ job : Factor w/ 4 levels "A171","A172",..: 3 3 2 3 3 2 3 4 2 4 ...
## $ n_people : int 1 1 2 2 2 2 1 1 1 1 ...
## $ telephone : Factor w/ 2 levels "A191","A192": 2 1 1 1 1 2 1 2 1 1 ...
## $ foreign : Factor w/ 2 levels "A201","A202": 1 1 1 1 1 1 1 1 1 1 ...
## $ response : Factor w/ 2 levels "0","1": 1 2 1 1 2 1 1 1 1 2 ...
summary(german.data)
## chk_acct duration credit_his purpose amount
## A11:274 Min. : 4.0 A30: 40 A43 :280 Min. : 250
## A12:269 1st Qu.:12.0 A31: 49 A40 :234 1st Qu.: 1366
## A13: 63 Median :18.0 A32:530 A42 :181 Median : 2320
## A14:394 Mean :20.9 A33: 88 A41 :103 Mean : 3271
## 3rd Qu.:24.0 A34:293 A49 : 97 3rd Qu.: 3972
## Max. :72.0 A46 : 50 Max. :18424
## (Other): 55
## saving_acct present_emp installment_rate sex other_debtor
## A61:603 A71: 62 Min. :1.000 A91: 50 A101:907
## A62:103 A72:172 1st Qu.:2.000 A92:310 A102: 41
## A63: 63 A73:339 Median :3.000 A93:548 A103: 52
## A64: 48 A74:174 Mean :2.973 A94: 92
## A65:183 A75:253 3rd Qu.:4.000
## Max. :4.000
##
## present_resid property age other_install housing
## Min. :1.000 A121:282 Min. :19.00 A141:139 A151:179
## 1st Qu.:2.000 A122:232 1st Qu.:27.00 A142: 47 A152:713
## Median :3.000 A123:332 Median :33.00 A143:814 A153:108
## Mean :2.845 A124:154 Mean :35.55
## 3rd Qu.:4.000 3rd Qu.:42.00
## Max. :4.000 Max. :75.00
##
## n_credits job n_people telephone foreign response
## Min. :1.000 A171: 22 Min. :1.000 A191:596 A201:963 0:700
## 1st Qu.:1.000 A172:200 1st Qu.:1.000 A192:404 A202: 37 1:300
## Median :1.000 A173:630 Median :1.000
## Mean :1.407 A174:148 Mean :1.155
## 3rd Qu.:2.000 3rd Qu.:1.000
## Max. :4.000 Max. :2.000
##
set.seed(12941211)
trainrows <- sample(nrow(german.data), nrow(german.data) * 0.75)
germandata.train <- german.data[trainrows, ]
germandata.test <- german.data[-trainrows,]
#logit link
germandata.train.glm0 <- glm(response~., family = binomial, germandata.train)
summary(germandata.train.glm0)
##
## Call:
## glm(formula = response ~ ., family = binomial, data = germandata.train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3693 -0.6994 -0.3639 0.6540 2.7241
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -7.513e-01 1.323e+00 -0.568 0.57002
## chk_acctA12 -4.270e-02 2.578e-01 -0.166 0.86845
## chk_acctA13 -1.290e+00 4.609e-01 -2.799 0.00512 **
## chk_acctA14 -1.853e+00 2.775e-01 -6.678 2.42e-11 ***
## duration 3.042e-02 1.113e-02 2.733 0.00628 **
## credit_hisA31 8.637e-02 6.780e-01 0.127 0.89863
## credit_hisA32 -3.782e-01 5.506e-01 -0.687 0.49218
## credit_hisA33 -5.661e-01 5.912e-01 -0.957 0.33834
## credit_hisA34 -8.993e-01 5.617e-01 -1.601 0.10935
## purposeA41 -1.700e+00 4.586e-01 -3.707 0.00021 ***
## purposeA410 -2.042e+00 9.135e-01 -2.236 0.02536 *
## purposeA42 -8.400e-01 3.079e-01 -2.728 0.00637 **
## purposeA43 -8.196e-01 2.855e-01 -2.871 0.00409 **
## purposeA44 1.019e-01 9.922e-01 0.103 0.91821
## purposeA45 -5.681e-02 6.798e-01 -0.084 0.93340
## purposeA46 5.913e-02 4.736e-01 0.125 0.90065
## purposeA48 -1.698e+00 1.220e+00 -1.392 0.16385
## purposeA49 -8.827e-01 4.092e-01 -2.157 0.03102 *
## amount 1.607e-04 5.227e-05 3.074 0.00211 **
## saving_acctA62 -3.060e-01 3.492e-01 -0.876 0.38090
## saving_acctA63 1.442e-01 4.288e-01 0.336 0.73674
## saving_acctA64 -1.475e+00 6.713e-01 -2.198 0.02796 *
## saving_acctA65 -8.199e-01 3.068e-01 -2.672 0.00754 **
## present_empA72 1.146e-01 4.958e-01 0.231 0.81718
## present_empA73 3.257e-02 4.731e-01 0.069 0.94512
## present_empA74 -7.175e-01 5.325e-01 -1.347 0.17787
## present_empA75 -1.523e-01 4.763e-01 -0.320 0.74916
## installment_rate 4.310e-01 1.056e-01 4.082 4.46e-05 ***
## sexA92 -1.293e-01 4.611e-01 -0.280 0.77910
## sexA93 -8.832e-01 4.508e-01 -1.959 0.05009 .
## sexA94 -5.197e-01 5.393e-01 -0.964 0.33529
## other_debtorA102 2.410e-01 4.785e-01 0.504 0.61442
## other_debtorA103 -1.155e+00 5.412e-01 -2.134 0.03288 *
## present_resid -2.282e-02 1.012e-01 -0.226 0.82155
## propertyA122 3.672e-01 3.040e-01 1.208 0.22705
## propertyA123 3.595e-01 2.803e-01 1.282 0.19968
## propertyA124 1.110e+00 4.922e-01 2.255 0.02415 *
## age -3.872e-03 1.107e-02 -0.350 0.72644
## other_installA142 -2.236e-01 4.922e-01 -0.454 0.64959
## other_installA143 -6.766e-01 2.758e-01 -2.453 0.01416 *
## housingA152 -1.838e-01 2.876e-01 -0.639 0.52278
## housingA153 -7.745e-01 5.620e-01 -1.378 0.16817
## n_credits 1.924e-01 2.180e-01 0.883 0.37748
## jobA172 -7.237e-02 7.949e-01 -0.091 0.92746
## jobA173 -2.264e-02 7.705e-01 -0.029 0.97656
## jobA174 -3.009e-01 7.744e-01 -0.389 0.69756
## n_people 4.528e-01 2.880e-01 1.572 0.11588
## telephoneA192 -3.111e-01 2.321e-01 -1.341 0.18005
## foreignA202 -9.843e-01 6.500e-01 -1.514 0.12993
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 889.43 on 749 degrees of freedom
## Residual deviance: 655.53 on 701 degrees of freedom
## AIC: 753.53
##
## Number of Fisher Scoring iterations: 5
step(germandata.train.glm0)
## Start: AIC=753.53
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + present_emp + installment_rate + sex + other_debtor +
## present_resid + property + age + other_install + housing +
## n_credits + job + n_people + telephone + foreign
##
## Df Deviance AIC
## - job 3 656.28 748.28
## - credit_his 4 661.28 751.28
## - housing 2 657.46 751.46
## - present_resid 1 655.58 751.58
## - age 1 655.65 751.65
## - present_emp 4 661.69 751.69
## - n_credits 1 656.31 752.31
## - property 3 660.90 752.90
## - telephone 1 657.34 753.34
## <none> 655.53 753.53
## - n_people 1 657.97 753.97
## - foreign 1 658.14 754.14
## - other_debtor 2 661.21 755.21
## - other_install 2 661.90 755.90
## - saving_acct 4 668.24 758.24
## - sex 3 666.37 758.37
## - duration 1 663.06 759.06
## - amount 1 665.20 761.20
## - purpose 9 682.77 762.77
## - installment_rate 1 673.15 769.15
## - chk_acct 3 723.39 815.39
##
## Step: AIC=748.28
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + present_emp + installment_rate + sex + other_debtor +
## present_resid + property + age + other_install + housing +
## n_credits + n_people + telephone + foreign
##
## Df Deviance AIC
## - housing 2 658.09 746.09
## - present_emp 4 662.22 746.22
## - credit_his 4 662.23 746.23
## - present_resid 1 656.30 746.30
## - age 1 656.43 746.43
## - n_credits 1 657.16 747.16
## - property 3 661.48 747.48
## <none> 656.28 748.28
## - n_people 1 658.77 748.77
## - telephone 1 658.95 748.95
## - foreign 1 658.97 748.97
## - other_debtor 2 661.81 749.81
## - other_install 2 662.40 750.40
## - saving_acct 4 668.41 752.41
## - sex 3 667.15 753.15
## - duration 1 664.44 754.44
## - amount 1 665.22 755.22
## - purpose 9 684.59 758.59
## - installment_rate 1 673.32 763.32
## - chk_acct 3 724.23 810.23
##
## Step: AIC=746.09
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + present_emp + installment_rate + sex + other_debtor +
## present_resid + property + age + other_install + n_credits +
## n_people + telephone + foreign
##
## Df Deviance AIC
## - present_emp 4 663.80 743.80
## - property 3 661.95 743.95
## - present_resid 1 658.11 744.11
## - credit_his 4 664.19 744.19
## - age 1 658.59 744.59
## - n_credits 1 659.01 745.01
## <none> 658.09 746.09
## - n_people 1 660.35 746.35
## - foreign 1 660.53 746.53
## - telephone 1 660.64 746.64
## - other_debtor 2 663.78 747.78
## - other_install 2 664.29 748.29
## - saving_acct 4 669.46 749.46
## - duration 1 665.53 751.53
## - sex 3 670.40 752.40
## - amount 1 667.42 753.42
## - purpose 9 687.10 757.10
## - installment_rate 1 674.94 760.94
## - chk_acct 3 725.75 807.75
##
## Step: AIC=743.8
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + present_resid +
## property + age + other_install + n_credits + n_people + telephone +
## foreign
##
## Df Deviance AIC
## - property 3 667.33 741.33
## - present_resid 1 663.90 741.90
## - age 1 664.45 742.45
## - n_credits 1 664.55 742.55
## - credit_his 4 670.67 742.67
## <none> 663.80 743.80
## - n_people 1 666.10 744.10
## - foreign 1 666.12 744.12
## - telephone 1 667.13 745.13
## - other_debtor 2 670.50 746.50
## - other_install 2 670.56 746.56
## - duration 1 670.49 748.49
## - saving_acct 4 676.62 748.62
## - amount 1 672.79 750.79
## - sex 3 678.87 752.87
## - purpose 9 693.09 755.09
## - installment_rate 1 681.36 759.36
## - chk_acct 3 733.19 807.19
##
## Step: AIC=741.33
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + present_resid +
## age + other_install + n_credits + n_people + telephone +
## foreign
##
## Df Deviance AIC
## - present_resid 1 667.34 739.34
## - age 1 667.60 739.60
## - n_credits 1 667.99 739.99
## - credit_his 4 674.35 740.35
## <none> 667.33 741.33
## - n_people 1 669.62 741.62
## - foreign 1 669.75 741.75
## - telephone 1 670.23 742.23
## - other_install 2 674.64 744.64
## - other_debtor 2 675.69 745.69
## - saving_acct 4 680.54 746.54
## - duration 1 675.55 747.55
## - sex 3 681.58 749.58
## - amount 1 677.59 749.59
## - purpose 9 697.20 753.20
## - installment_rate 1 686.05 758.05
## - chk_acct 3 738.85 806.85
##
## Step: AIC=739.34
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + age +
## other_install + n_credits + n_people + telephone + foreign
##
## Df Deviance AIC
## - age 1 667.65 737.65
## - n_credits 1 667.99 737.99
## - credit_his 4 674.37 738.37
## <none> 667.34 739.34
## - n_people 1 669.62 739.62
## - foreign 1 669.75 739.75
## - telephone 1 670.27 740.27
## - other_install 2 674.68 742.68
## - other_debtor 2 675.70 743.70
## - saving_acct 4 680.56 744.56
## - duration 1 675.56 745.56
## - sex 3 681.58 747.58
## - amount 1 677.62 747.62
## - purpose 9 697.29 751.29
## - installment_rate 1 686.05 756.05
## - chk_acct 3 739.06 805.06
##
## Step: AIC=737.65
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + other_install +
## n_credits + n_people + telephone + foreign
##
## Df Deviance AIC
## - n_credits 1 668.26 736.26
## - credit_his 4 674.81 736.81
## <none> 667.65 737.65
## - n_people 1 669.87 737.87
## - foreign 1 670.00 738.00
## - telephone 1 670.85 738.85
## - other_install 2 674.86 740.86
## - other_debtor 2 676.12 742.12
## - saving_acct 4 681.09 743.09
## - duration 1 676.00 744.00
## - amount 1 677.86 745.86
## - sex 3 682.91 746.91
## - purpose 9 697.43 749.43
## - installment_rate 1 686.18 754.18
## - chk_acct 3 740.27 804.27
##
## Step: AIC=736.26
## response ~ chk_acct + duration + credit_his + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + other_install +
## n_people + telephone + foreign
##
## Df Deviance AIC
## - credit_his 4 674.95 734.95
## <none> 668.26 736.26
## - n_people 1 670.64 736.64
## - foreign 1 670.72 736.72
## - telephone 1 671.18 737.18
## - other_install 2 675.91 739.91
## - other_debtor 2 676.70 740.70
## - saving_acct 4 681.69 741.69
## - duration 1 676.45 742.45
## - amount 1 678.40 744.40
## - sex 3 683.38 745.38
## - purpose 9 698.33 748.33
## - installment_rate 1 686.75 752.75
## - chk_acct 3 740.80 802.80
##
## Step: AIC=734.95
## response ~ chk_acct + duration + purpose + amount + saving_acct +
## installment_rate + sex + other_debtor + other_install + n_people +
## telephone + foreign
##
## Df Deviance AIC
## <none> 674.95 734.95
## - n_people 1 677.37 735.37
## - foreign 1 677.48 735.48
## - telephone 1 677.92 735.92
## - other_debtor 2 683.52 739.52
## - saving_acct 4 689.04 741.04
## - duration 1 683.88 741.88
## - other_install 2 685.98 741.98
## - amount 1 686.17 744.17
## - sex 3 691.58 745.58
## - purpose 9 704.18 746.18
## - installment_rate 1 693.04 751.04
## - chk_acct 3 759.11 813.11
##
## Call: glm(formula = response ~ chk_acct + duration + purpose + amount +
## saving_acct + installment_rate + sex + other_debtor + other_install +
## n_people + telephone + foreign, family = binomial, data = germandata.train)
##
## Coefficients:
## (Intercept) chk_acctA12 chk_acctA13
## -1.1048079 -0.0584091 -1.3145561
## chk_acctA14 duration purposeA41
## -1.9939350 0.0310699 -1.6568374
## purposeA410 purposeA42 purposeA43
## -2.0366048 -0.6974679 -0.8269341
## purposeA44 purposeA45 purposeA46
## 0.2908069 0.1036726 0.2631046
## purposeA48 purposeA49 amount
## -1.4506261 -0.7916964 0.0001624
## saving_acctA62 saving_acctA63 saving_acctA64
## -0.2033314 0.2385046 -1.4244078
## saving_acctA65 installment_rate sexA92
## -0.8013818 0.4185865 0.0192570
## sexA93 sexA94 other_debtorA102
## -0.8756687 -0.5076356 0.3671755
## other_debtorA103 other_installA142 other_installA143
## -1.3148286 -0.2495753 -0.8232115
## n_people telephoneA192 foreignA202
## 0.4359517 -0.3608315 -0.9572702
##
## Degrees of Freedom: 749 Total (i.e. Null); 720 Residual
## Null Deviance: 889.4
## Residual Deviance: 674.9 AIC: 734.9
germandata.train.glm0<- glm(formula = response ~ chk_acct + duration + credit_his + purpose +
amount + saving_acct + present_emp + installment_rate + sex +
other_install + housing + telephone + foreign, family = binomial,
data = germandata.train)
summary(germandata.train.glm0)
##
## Call:
## glm(formula = response ~ chk_acct + duration + credit_his + purpose +
## amount + saving_acct + present_emp + installment_rate + sex +
## other_install + housing + telephone + foreign, family = binomial,
## data = germandata.train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.3306 -0.7158 -0.3894 0.7236 2.7392
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.891e-01 9.086e-01 0.208 0.835101
## chk_acctA12 -1.370e-01 2.472e-01 -0.554 0.579477
## chk_acctA13 -1.297e+00 4.530e-01 -2.864 0.004178 **
## chk_acctA14 -1.835e+00 2.732e-01 -6.717 1.86e-11 ***
## duration 3.136e-02 1.063e-02 2.952 0.003162 **
## credit_hisA31 -8.422e-02 6.470e-01 -0.130 0.896428
## credit_hisA32 -5.516e-01 5.282e-01 -1.044 0.296292
## credit_hisA33 -5.597e-01 5.783e-01 -0.968 0.333121
## credit_hisA34 -9.286e-01 5.462e-01 -1.700 0.089081 .
## purposeA41 -1.744e+00 4.471e-01 -3.900 9.60e-05 ***
## purposeA410 -1.926e+00 8.988e-01 -2.142 0.032157 *
## purposeA42 -8.227e-01 2.933e-01 -2.805 0.005032 **
## purposeA43 -9.201e-01 2.780e-01 -3.310 0.000934 ***
## purposeA44 7.957e-02 9.812e-01 0.081 0.935364
## purposeA45 -6.073e-02 6.349e-01 -0.096 0.923793
## purposeA46 2.076e-01 4.610e-01 0.450 0.652441
## purposeA48 -1.601e+00 1.205e+00 -1.328 0.184225
## purposeA49 -8.677e-01 4.002e-01 -2.168 0.030160 *
## amount 1.578e-04 4.941e-05 3.194 0.001402 **
## saving_acctA62 -1.046e-01 3.319e-01 -0.315 0.752691
## saving_acctA63 2.404e-01 4.235e-01 0.568 0.570258
## saving_acctA64 -1.164e+00 6.287e-01 -1.851 0.064143 .
## saving_acctA65 -7.403e-01 2.971e-01 -2.491 0.012722 *
## present_empA72 1.722e-01 4.429e-01 0.389 0.697366
## present_empA73 -2.187e-02 4.101e-01 -0.053 0.957462
## present_empA74 -6.931e-01 4.752e-01 -1.459 0.144643
## present_empA75 -1.105e-01 4.242e-01 -0.260 0.794542
## installment_rate 4.082e-01 1.014e-01 4.025 5.69e-05 ***
## sexA92 -1.470e-01 4.415e-01 -0.333 0.739181
## sexA93 -7.765e-01 4.315e-01 -1.799 0.071974 .
## sexA94 -6.010e-01 5.190e-01 -1.158 0.246880
## other_installA142 -2.919e-01 4.848e-01 -0.602 0.547054
## other_installA143 -7.092e-01 2.683e-01 -2.643 0.008213 **
## housingA152 -1.940e-01 2.686e-01 -0.722 0.470250
## housingA153 -1.255e-01 3.958e-01 -0.317 0.751231
## telephoneA192 -2.932e-01 2.140e-01 -1.370 0.170618
## foreignA202 -1.154e+00 6.477e-01 -1.781 0.074898 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 889.43 on 749 degrees of freedom
## Residual deviance: 671.60 on 713 degrees of freedom
## AIC: 745.6
##
## Number of Fisher Scoring iterations: 5
pred.glm.gtrain.glm0 <- predict(germandata.train.glm0, type = "response")
pred.glm.gtest.glm0 <- predict(germandata.train.glm0, newdata=germandata.test,type = "response")
#residual deviance
germandata.train.glm0$deviance
## [1] 671.5951
# Asymmetric Misclassification Rate, using 5:1 asymmetric cost
cost <- function(r, pi){
weight1 = 5
weight0 = 1
c1 = (r==1)&(pi==0) #logical vector - true if actual 1 but predict 0
c0 = (r==0)&(pi==1) #logical vector - true if actual 0 but predict 1
return(mean(weight1*c1+weight0*c0))
}
pcut <- 1/6 ## Bayes estimate
#training data stats
class.pred.train.glm0<- (pred.glm.gtrain.glm0>pcut)*1
table(germandata.train$response, class.pred.train.glm0, dnn = c("True", "Predicted"))
## Predicted
## True 0 1
## 0 303 237
## 1 26 184
# MR.glm0 <- mean(germandata.train$response!=class.pred.train.glm0)
cost.train <- cost(r = germandata.train$response, pi = class.pred.train.glm0)
#testing data stats
class.pred.test.glm0<- (pred.glm.gtest.glm0>pcut)*1
table(germandata.test$response, class.pred.test.glm0, dnn = c("True", "Predicted"))
## Predicted
## True 0 1
## 0 91 69
## 1 13 77
# MR.glm0.test <- mean(germandata.test$response!=class.pred.test.glm0)
cost.test <- cost(r = germandata.test$response, pi = class.pred.test.glm0)
#area under the curve
library(verification)
par(mfrow=c(1,1))
roc.logit <- roc.plot(x=(germandata.train$response == "1"), pred =pred.glm.gtrain.glm0)
roc.logit$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.8246737 9.609299e-44 NA
roc.logit.test <- roc.plot(x=(germandata.test$response == "1"), pred =pred.glm.gtest.glm0)
roc.logit.test$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.804375 7.005702e-16 NA
germandata.largetree <- rpart(formula = response~., data = germandata.train,
parms = list(loss = matrix(c(0, 5, 1, 0), nrow = 2)), cp=0.001)
prp(germandata.largetree, extra = 1, nn.font=40,box.palette = "green")
plotcp(germandata.largetree)
printcp(germandata.largetree)
##
## Classification tree:
## rpart(formula = response ~ ., data = germandata.train, parms = list(loss = matrix(c(0,
## 5, 1, 0), nrow = 2)), cp = 0.001)
##
## Variables actually used in tree construction:
## [1] age amount chk_acct credit_his duration
## [6] housing job n_credits other_debtor other_install
## [11] present_emp property purpose saving_acct
##
## Root node error: 540/750 = 0.72
##
## n= 750
##
## CP nsplit rel error xerror xstd
## 1 0.2000000 0 1.00000 5.0000 0.11386
## 2 0.0370370 1 0.80000 2.2222 0.11594
## 3 0.0222222 3 0.72593 2.7593 0.12242
## 4 0.0185185 5 0.68148 2.6926 0.12193
## 5 0.0175926 6 0.66296 2.6519 0.12140
## 6 0.0166667 8 0.62778 2.6019 0.12077
## 7 0.0129630 9 0.61111 2.5741 0.12050
## 8 0.0120370 14 0.52778 2.4556 0.11889
## 9 0.0092593 16 0.50370 2.4241 0.11835
## 10 0.0083333 17 0.49444 2.2241 0.11562
## 11 0.0074074 19 0.47778 2.1648 0.11456
## 12 0.0055556 21 0.46296 2.1981 0.11488
## 13 0.0037037 26 0.42407 2.2389 0.11535
## 14 0.0018519 27 0.42037 2.2407 0.11532
## 15 0.0010000 31 0.41296 2.1944 0.11465
#library(rattle)
#fancyRpartPlot(Gcredit.tree1,cex=0.6)
#Pruning###
german.prunedtree <- rpart(response~., data = germandata.train, method = "class",
parms = list(loss = matrix(c(0, 5, 1, 0), nrow = 2)),cp=0.008)
prp(german.prunedtree, extra = 1, nn.font=500,box.palette = "green")
pred.tree.gtrain <- predict(german.prunedtree, type = "prob")
pred.tree.gtest <- predict(german.prunedtree, newdata=germandata.test, type = "prob")
#training stats
german.train.pred.rpart = as.numeric(pred.tree.gtrain[,2] > pcut)
table(germandata.train$response, german.train.pred.rpart, dnn=c("Truth","Predicted"))
## Predicted
## Truth 0 1
## 0 322 218
## 1 8 202
#MR.rpart <- mean(germandata.train$response!=german.train.pred.rpart)
cost(germandata.train$response,german.train.pred.rpart)
## [1] 0.344
#testing stats
german.test.pred.rpart = as.numeric(pred.tree.gtest[,2] > pcut)
table(germandata.test$response, german.test.pred.rpart, dnn=c("Truth","Predicted"))
## Predicted
## Truth 0 1
## 0 83 77
## 1 11 79
#MR.rpart.test <- mean(germandata.test$response!=german.test.pred.rpart)
cost(germandata.test$response,german.test.pred.rpart)
## [1] 0.528
#area under the curve
library(verification)
par(mfrow=c(1,2))
roc.tree <- roc.plot(x=(germandata.train$response == "1"), pred =pred.tree.gtrain[,2])
roc.tree$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.8352469 1.548776e-47 NA
roc.tree.test <- roc.plot(x=(germandata.test$response == "1"), pred =pred.tree.gtest[,2])
roc.tree.test$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.723125 1.436426e-09 NA
str(germandata.train)
## 'data.frame': 750 obs. of 21 variables:
## $ chk_acct : Factor w/ 4 levels "A11","A12","A13",..: 4 1 2 4 1 4 4 2 3 2 ...
## $ duration : int 6 18 18 36 20 15 60 18 10 12 ...
## $ credit_his : Factor w/ 5 levels "A30","A31","A32",..: 5 3 3 5 3 5 3 5 3 3 ...
## $ purpose : Factor w/ 10 levels "A40","A41","A410",..: 5 5 5 1 4 5 5 4 1 5 ...
## $ amount : int 1898 3190 3213 3535 2212 1471 10144 1295 1240 1158 ...
## $ saving_acct : Factor w/ 5 levels "A61","A62","A63",..: 5 1 3 1 5 1 2 1 2 3 ...
## $ present_emp : Factor w/ 5 levels "A71","A72","A73",..: 3 3 2 4 4 3 4 2 5 3 ...
## $ installment_rate: int 1 2 1 4 4 4 2 4 1 3 ...
## $ sex : Factor w/ 4 levels "A91","A92","A93",..: 3 2 4 3 3 3 2 2 2 1 ...
## $ other_debtor : Factor w/ 3 levels "A101","A102",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ present_resid : int 2 2 3 4 4 4 4 1 4 1 ...
## $ property : Factor w/ 4 levels "A121","A122",..: 1 1 1 3 3 4 1 2 4 3 ...
## $ age : int 34 24 25 37 39 35 21 27 48 26 ...
## $ other_install : Factor w/ 3 levels "A141","A142",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ housing : Factor w/ 3 levels "A151","A152",..: 2 2 1 2 2 3 2 2 3 2 ...
## $ n_credits : int 2 1 1 2 1 2 1 2 1 1 ...
## $ job : Factor w/ 4 levels "A171","A172",..: 2 3 3 3 3 3 3 3 2 3 ...
## $ n_people : int 2 1 1 1 1 1 1 1 2 1 ...
## $ telephone : Factor w/ 2 levels "A191","A192": 1 1 1 2 2 2 2 1 1 2 ...
## $ foreign : Factor w/ 2 levels "A201","A202": 1 1 1 1 1 1 1 1 1 1 ...
## $ response : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 2 1 ...
germandata.gam <- gam(as.factor(response)~chk_acct+s(duration)+credit_his+purpose+s(amount)+saving_acct+present_emp+installment_rate+sex+other_debtor+present_resid+property
+s(age)+other_install+housing+n_credits+telephone+foreign , family=binomial,data=germandata.train)
summary(germandata.gam)
##
## Family: binomial
## Link function: logit
##
## Formula:
## as.factor(response) ~ chk_acct + s(duration) + credit_his + purpose +
## s(amount) + saving_acct + present_emp + installment_rate +
## sex + other_debtor + present_resid + property + s(age) +
## other_install + housing + n_credits + telephone + foreign
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.84382 1.05642 0.799 0.424436
## chk_acctA12 -0.07710 0.25747 -0.299 0.764598
## chk_acctA13 -1.35370 0.45910 -2.949 0.003192 **
## chk_acctA14 -1.85176 0.27707 -6.683 2.33e-11 ***
## credit_hisA31 0.13937 0.67834 0.205 0.837214
## credit_hisA32 -0.35011 0.55408 -0.632 0.527459
## credit_hisA33 -0.54191 0.59271 -0.914 0.360562
## credit_hisA34 -0.86467 0.56483 -1.531 0.125809
## purposeA41 -1.73451 0.46463 -3.733 0.000189 ***
## purposeA410 -2.23965 0.97231 -2.303 0.021255 *
## purposeA42 -0.79216 0.31021 -2.554 0.010660 *
## purposeA43 -0.81468 0.28392 -2.869 0.004113 **
## purposeA44 0.06407 0.97713 0.066 0.947718
## purposeA45 -0.05459 0.68109 -0.080 0.936115
## purposeA46 0.08373 0.47572 0.176 0.860286
## purposeA48 -1.73448 1.23023 -1.410 0.158575
## purposeA49 -0.80626 0.40465 -1.992 0.046317 *
## saving_acctA62 -0.25209 0.34758 -0.725 0.468285
## saving_acctA63 0.16200 0.42488 0.381 0.702991
## saving_acctA64 -1.33408 0.65203 -2.046 0.040752 *
## saving_acctA65 -0.79317 0.30604 -2.592 0.009550 **
## present_empA72 0.18092 0.46106 0.392 0.694772
## present_empA73 0.09883 0.42738 0.231 0.817129
## present_empA74 -0.62509 0.48837 -1.280 0.200565
## present_empA75 -0.09957 0.43890 -0.227 0.820533
## installment_rate 0.33663 0.10829 3.108 0.001881 **
## sexA92 -0.15814 0.46227 -0.342 0.732273
## sexA93 -0.75278 0.44880 -1.677 0.093476 .
## sexA94 -0.57696 0.54073 -1.067 0.285965
## other_debtorA102 0.21563 0.48820 0.442 0.658713
## other_debtorA103 -1.12111 0.53793 -2.084 0.037150 *
## present_resid -0.02254 0.10044 -0.224 0.822461
## propertyA122 0.31972 0.30196 1.059 0.289688
## propertyA123 0.31829 0.27762 1.146 0.251599
## propertyA124 1.04813 0.49275 2.127 0.033410 *
## other_installA142 -0.29740 0.49517 -0.601 0.548107
## other_installA143 -0.65725 0.27541 -2.386 0.017013 *
## housingA152 -0.19560 0.28931 -0.676 0.498978
## housingA153 -0.73372 0.56685 -1.294 0.195535
## n_credits 0.20344 0.21860 0.931 0.352032
## telephoneA192 -0.35050 0.22123 -1.584 0.113112
## foreignA202 -0.98661 0.66135 -1.492 0.135745
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(duration) 2.051 2.606 12.382 0.00472 **
## s(amount) 3.200 4.036 11.601 0.02063 *
## s(age) 1.000 1.000 0.095 0.75855
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.263 Deviance explained = 26.8%
## UBRE = -0.0037455 Scale est. = 1 n = 750
plot(germandata.gam, shade=TRUE)
# Move age to partially linear term and refit gam() model
germandata.gam <- gam(as.factor(response)~chk_acct+s(duration)+credit_his+purpose+s(amount)+saving_acct+present_emp+installment_rate+sex+other_debtor+present_resid+property
+(age)+other_install+housing+n_credits+telephone+foreign , family=binomial,data=germandata.train)
summary(germandata.gam)
##
## Family: binomial
## Link function: logit
##
## Formula:
## as.factor(response) ~ chk_acct + s(duration) + credit_his + purpose +
## s(amount) + saving_acct + present_emp + installment_rate +
## sex + other_debtor + present_resid + property + (age) + other_install +
## housing + n_credits + telephone + foreign
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.962964 1.135464 0.848 0.396393
## chk_acctA12 -0.077098 0.257467 -0.299 0.764597
## chk_acctA13 -1.353697 0.459102 -2.949 0.003192 **
## chk_acctA14 -1.851759 0.277069 -6.683 2.33e-11 ***
## credit_hisA31 0.139370 0.678338 0.205 0.837214
## credit_hisA32 -0.350114 0.554075 -0.632 0.527460
## credit_hisA33 -0.541911 0.592709 -0.914 0.360562
## credit_hisA34 -0.864671 0.564834 -1.531 0.125809
## purposeA41 -1.734514 0.464632 -3.733 0.000189 ***
## purposeA410 -2.239651 0.972311 -2.303 0.021255 *
## purposeA42 -0.792158 0.310207 -2.554 0.010660 *
## purposeA43 -0.814677 0.283923 -2.869 0.004113 **
## purposeA44 0.064074 0.977134 0.066 0.947717
## purposeA45 -0.054591 0.681089 -0.080 0.936116
## purposeA46 0.083732 0.475721 0.176 0.860286
## purposeA48 -1.734483 1.230235 -1.410 0.158575
## purposeA49 -0.806265 0.404652 -1.992 0.046317 *
## saving_acctA62 -0.252091 0.347582 -0.725 0.468285
## saving_acctA63 0.162000 0.424877 0.381 0.702991
## saving_acctA64 -1.334084 0.652029 -2.046 0.040752 *
## saving_acctA65 -0.793171 0.306041 -2.592 0.009550 **
## present_empA72 0.180915 0.461062 0.392 0.694772
## present_empA73 0.098826 0.427376 0.231 0.817129
## present_empA74 -0.625087 0.488371 -1.280 0.200565
## present_empA75 -0.099569 0.438897 -0.227 0.820532
## installment_rate 0.336628 0.108295 3.108 0.001881 **
## sexA92 -0.158142 0.462266 -0.342 0.732275
## sexA93 -0.752782 0.448795 -1.677 0.093476 .
## sexA94 -0.576961 0.540725 -1.067 0.285966
## other_debtorA102 0.215632 0.488196 0.442 0.658713
## other_debtorA103 -1.121109 0.537931 -2.084 0.037150 *
## present_resid -0.022537 0.100441 -0.224 0.822463
## propertyA122 0.319717 0.301960 1.059 0.289687
## propertyA123 0.318287 0.277623 1.146 0.251599
## propertyA124 1.048133 0.492748 2.127 0.033410 *
## age -0.003362 0.010933 -0.308 0.758457
## other_installA142 -0.297398 0.495169 -0.601 0.548108
## other_installA143 -0.657250 0.275412 -2.386 0.017013 *
## housingA152 -0.195605 0.289312 -0.676 0.498975
## housingA153 -0.733720 0.566852 -1.294 0.195535
## n_credits 0.203439 0.218597 0.931 0.352031
## telephoneA192 -0.350504 0.221227 -1.584 0.113111
## foreignA202 -0.986616 0.661348 -1.492 0.135745
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(duration) 2.051 2.606 12.38 0.00472 **
## s(amount) 3.200 4.036 11.60 0.02063 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.263 Deviance explained = 26.8%
## UBRE = -0.0037458 Scale est. = 1 n = 750
plot(germandata.gam, shade=TRUE)
#In sample performance
prob.gam.in<-predict(germandata.gam,germandata.train,type="response")
pred.gam.in<-(prob.gam.in>=pcut)*1
table(germandata.train$response,pred.gam.in,dnn=c("Observed","Predicted"))
## Predicted
## Observed 0 1
## 0 310 230
## 1 24 186
#mean(ifelse(germandata.train$response != pred.gam.in, 1, 0))
cost(germandata.train$response, pred.gam.in)
## [1] 0.4666667
#Out-of-sample performance########
prob.gam.out<-predict(germandata.gam,germandata.test,type="response")
pred.gam.out<-(prob.gam.out>=pcut)*1
table(germandata.test$response,pred.gam.out,dnn=c("Observed","Predicted"))
## Predicted
## Observed 0 1
## 0 92 68
## 1 15 75
#mean(ifelse(germandata.test$response != pred.gam.out, 1, 0))
cost(germandata.test$response, pred.gam.out)
## [1] 0.572
###ROC curve for GAM ##############
par(mfrow=(c(1,2)))
roc.gam <- roc.plot(x=(germandata.train$response == "1"), pred =prob.gam.in)
roc.gam$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.8370723 5.474326e-47 NA
roc.gam.test <- roc.plot(x=(germandata.test$response == "1"), pred =prob.gam.out)
roc.gam.test$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.8101389 2.032777e-16 NA
par(mfrow=c(1,1))
germandata.nnet <- train(response~., data=germandata.train,method="nnet",na.action=na.exclude)
## # weights: 51
## initial value 532.735607
## final value 447.518697
## converged
## # weights: 151
## initial value 465.421972
## final value 447.518697
## converged
## # weights: 251
## initial value 457.296760
## final value 447.518697
## converged
## # weights: 51
## initial value 496.914281
## iter 10 value 447.561892
## final value 447.561578
## converged
## # weights: 151
## initial value 669.225939
## iter 10 value 447.552218
## iter 20 value 447.352582
## iter 30 value 440.665680
## iter 40 value 437.283135
## iter 50 value 434.709850
## iter 60 value 434.681380
## final value 434.681281
## converged
## # weights: 251
## initial value 786.029130
## iter 10 value 441.573724
## iter 20 value 414.404434
## iter 30 value 354.226110
## iter 40 value 348.884451
## iter 50 value 331.654245
## iter 60 value 321.857905
## iter 70 value 319.767188
## iter 80 value 318.630652
## iter 90 value 317.790931
## iter 100 value 307.645993
## final value 307.645993
## stopped after 100 iterations
## # weights: 51
## initial value 514.665429
## final value 447.519715
## converged
## # weights: 151
## initial value 616.199178
## final value 447.521101
## converged
## # weights: 251
## initial value 652.011889
## final value 447.522651
## converged
## # weights: 51
## initial value 480.411549
## final value 455.577688
## converged
## # weights: 151
## initial value 606.323888
## iter 10 value 436.920946
## iter 20 value 416.622013
## iter 30 value 398.900071
## iter 40 value 353.954537
## iter 50 value 321.068862
## iter 60 value 313.333230
## iter 70 value 311.499810
## iter 80 value 311.261426
## iter 90 value 310.214368
## iter 100 value 310.191672
## final value 310.191672
## stopped after 100 iterations
## # weights: 251
## initial value 757.793669
## final value 455.577688
## converged
## # weights: 51
## initial value 591.620657
## iter 10 value 455.652891
## iter 20 value 455.013094
## iter 30 value 443.556529
## iter 40 value 439.308472
## iter 50 value 438.094233
## final value 438.094051
## converged
## # weights: 151
## initial value 489.602748
## iter 10 value 455.617442
## iter 20 value 455.099962
## iter 30 value 441.995437
## iter 40 value 439.419138
## iter 50 value 390.337770
## iter 60 value 338.551664
## iter 70 value 316.571684
## iter 80 value 304.748318
## iter 90 value 291.059377
## iter 100 value 275.182613
## final value 275.182613
## stopped after 100 iterations
## # weights: 251
## initial value 841.553225
## iter 10 value 455.692701
## iter 20 value 455.567981
## iter 30 value 454.110571
## iter 40 value 450.163525
## iter 50 value 444.737779
## iter 60 value 414.370982
## iter 70 value 393.952294
## iter 80 value 344.154482
## iter 90 value 314.948939
## iter 100 value 304.970014
## final value 304.970014
## stopped after 100 iterations
## # weights: 51
## initial value 457.948972
## final value 455.578564
## converged
## # weights: 151
## initial value 529.508196
## final value 455.580150
## converged
## # weights: 251
## initial value 496.171939
## final value 455.581565
## converged
## # weights: 51
## initial value 470.180774
## final value 428.743251
## converged
## # weights: 151
## initial value 921.657023
## final value 428.743250
## converged
## # weights: 251
## initial value 810.517508
## final value 428.743250
## converged
## # weights: 51
## initial value 549.175100
## iter 10 value 428.799092
## final value 428.798789
## converged
## # weights: 151
## initial value 471.900515
## iter 10 value 428.795571
## iter 20 value 428.224108
## iter 30 value 414.578466
## iter 40 value 367.713778
## iter 50 value 321.998147
## iter 60 value 295.962684
## iter 70 value 282.899863
## iter 80 value 277.395332
## iter 90 value 274.353148
## iter 100 value 272.639392
## final value 272.639392
## stopped after 100 iterations
## # weights: 251
## initial value 471.152920
## iter 10 value 428.930579
## iter 20 value 423.863350
## iter 30 value 418.727398
## iter 40 value 410.587907
## iter 50 value 398.635364
## iter 60 value 359.556437
## iter 70 value 301.448505
## iter 80 value 261.982911
## iter 90 value 239.492545
## iter 100 value 230.077234
## final value 230.077234
## stopped after 100 iterations
## # weights: 51
## initial value 485.802816
## final value 428.744252
## converged
## # weights: 151
## initial value 526.258668
## final value 428.746563
## converged
## # weights: 251
## initial value 751.914049
## final value 428.747429
## converged
## # weights: 51
## initial value 490.199254
## final value 437.940596
## converged
## # weights: 151
## initial value 480.183572
## final value 437.940596
## converged
## # weights: 251
## initial value 439.813257
## final value 437.940596
## converged
## # weights: 51
## initial value 526.975745
## iter 10 value 437.909011
## iter 20 value 436.259243
## iter 30 value 434.099916
## iter 40 value 415.945078
## iter 50 value 404.412011
## iter 60 value 365.002749
## iter 70 value 315.376165
## iter 80 value 303.323190
## iter 90 value 301.072413
## iter 100 value 299.049841
## final value 299.049841
## stopped after 100 iterations
## # weights: 151
## initial value 619.328883
## iter 10 value 437.878298
## iter 20 value 434.837009
## iter 30 value 434.325527
## iter 40 value 432.092517
## iter 50 value 418.939011
## iter 60 value 383.872056
## iter 70 value 360.084360
## iter 80 value 349.499281
## iter 90 value 335.474134
## iter 100 value 309.859618
## final value 309.859618
## stopped after 100 iterations
## # weights: 251
## initial value 458.102483
## iter 10 value 437.980083
## iter 20 value 425.976749
## iter 30 value 424.339666
## iter 40 value 403.788169
## iter 50 value 390.069909
## iter 60 value 354.718294
## iter 70 value 350.275308
## iter 80 value 347.559690
## iter 90 value 346.757331
## iter 100 value 330.539994
## final value 330.539994
## stopped after 100 iterations
## # weights: 51
## initial value 440.024671
## final value 437.941445
## converged
## # weights: 151
## initial value 539.720558
## final value 437.942968
## converged
## # weights: 251
## initial value 557.559680
## iter 10 value 435.975943
## iter 20 value 383.150050
## iter 30 value 357.043869
## iter 40 value 342.004688
## iter 50 value 341.440812
## iter 60 value 341.364267
## iter 70 value 340.470029
## iter 80 value 340.380238
## iter 90 value 340.173689
## iter 100 value 338.437787
## final value 338.437787
## stopped after 100 iterations
## # weights: 51
## initial value 453.831478
## final value 450.263391
## converged
## # weights: 151
## initial value 490.418686
## final value 450.263391
## converged
## # weights: 251
## initial value 528.045686
## final value 450.263391
## converged
## # weights: 51
## initial value 525.684511
## iter 10 value 450.160066
## iter 20 value 440.130040
## iter 30 value 426.643373
## iter 40 value 420.207908
## iter 50 value 383.052444
## iter 60 value 343.379285
## iter 70 value 323.801498
## iter 80 value 315.510972
## iter 90 value 314.021498
## iter 100 value 312.933030
## final value 312.933030
## stopped after 100 iterations
## # weights: 151
## initial value 483.784691
## iter 10 value 450.335243
## iter 20 value 432.472355
## iter 30 value 413.831707
## iter 40 value 372.025875
## iter 50 value 290.689876
## iter 60 value 275.697623
## iter 70 value 273.605503
## iter 80 value 267.626633
## iter 90 value 254.203323
## iter 100 value 240.781771
## final value 240.781771
## stopped after 100 iterations
## # weights: 251
## initial value 538.375229
## iter 10 value 450.344921
## iter 20 value 448.839966
## iter 30 value 442.824640
## iter 40 value 417.601056
## iter 50 value 384.116819
## iter 60 value 338.994231
## iter 70 value 292.679918
## iter 80 value 267.692291
## iter 90 value 245.595038
## iter 100 value 244.054908
## final value 244.054908
## stopped after 100 iterations
## # weights: 51
## initial value 455.783534
## final value 450.264162
## converged
## # weights: 151
## initial value 453.164462
## final value 450.266114
## converged
## # weights: 251
## initial value 474.611780
## final value 450.267818
## converged
## # weights: 51
## initial value 484.306575
## final value 459.830145
## converged
## # weights: 151
## initial value 526.666758
## final value 459.830145
## converged
## # weights: 251
## initial value 701.541188
## final value 459.830145
## converged
## # weights: 51
## initial value 471.120290
## iter 10 value 459.894651
## final value 459.865088
## converged
## # weights: 151
## initial value 475.149042
## iter 10 value 459.853983
## iter 20 value 455.078610
## iter 30 value 433.740534
## iter 40 value 387.266590
## iter 50 value 379.955395
## iter 60 value 356.019480
## iter 70 value 349.175628
## iter 80 value 335.935635
## iter 90 value 323.151255
## iter 100 value 312.015678
## final value 312.015678
## stopped after 100 iterations
## # weights: 251
## initial value 508.618509
## iter 10 value 459.847796
## iter 20 value 454.501712
## iter 30 value 452.271357
## iter 40 value 447.738062
## iter 50 value 390.615491
## iter 60 value 355.943359
## iter 70 value 333.974108
## iter 80 value 328.655431
## iter 90 value 328.023342
## iter 100 value 327.667586
## final value 327.667586
## stopped after 100 iterations
## # weights: 51
## initial value 563.426432
## final value 459.830997
## converged
## # weights: 151
## initial value 461.215422
## final value 459.832587
## converged
## # weights: 251
## initial value 832.008391
## final value 459.835561
## converged
## # weights: 51
## initial value 501.935931
## final value 437.940596
## converged
## # weights: 151
## initial value 707.912850
## final value 437.940596
## converged
## # weights: 251
## initial value 462.276614
## final value 437.940596
## converged
## # weights: 51
## initial value 536.495408
## iter 10 value 437.740948
## iter 20 value 422.694085
## iter 30 value 395.050495
## iter 40 value 345.290554
## iter 50 value 313.207625
## iter 60 value 308.220935
## iter 70 value 307.329123
## iter 80 value 307.059637
## iter 90 value 307.054961
## iter 90 value 307.054959
## iter 90 value 307.054959
## final value 307.054959
## converged
## # weights: 151
## initial value 701.654443
## iter 10 value 438.288349
## iter 20 value 437.951344
## iter 30 value 433.823834
## iter 40 value 426.443407
## iter 50 value 370.817057
## iter 60 value 332.012284
## iter 70 value 301.547582
## iter 80 value 275.330893
## iter 90 value 255.713238
## iter 100 value 245.646705
## final value 245.646705
## stopped after 100 iterations
## # weights: 251
## initial value 522.558621
## iter 10 value 438.071397
## iter 20 value 433.838680
## iter 30 value 407.930067
## iter 40 value 389.195320
## iter 50 value 378.738535
## iter 60 value 364.193308
## iter 70 value 327.926956
## iter 80 value 296.933826
## iter 90 value 283.672183
## iter 100 value 282.558871
## final value 282.558871
## stopped after 100 iterations
## # weights: 51
## initial value 507.865418
## final value 437.941408
## converged
## # weights: 151
## initial value 499.569116
## iter 10 value 423.563335
## iter 20 value 362.206992
## iter 30 value 336.879989
## iter 40 value 332.786196
## iter 50 value 331.117405
## iter 60 value 330.600246
## iter 70 value 330.416423
## iter 80 value 330.063591
## iter 90 value 329.605142
## iter 100 value 329.518776
## final value 329.518776
## stopped after 100 iterations
## # weights: 251
## initial value 446.197638
## final value 437.944981
## converged
## # weights: 51
## initial value 612.729028
## final value 453.832031
## converged
## # weights: 151
## initial value 464.753161
## final value 453.832031
## converged
## # weights: 251
## initial value 693.351698
## final value 453.832031
## converged
## # weights: 51
## initial value 455.756310
## iter 10 value 453.870840
## iter 10 value 453.870838
## iter 10 value 453.870838
## final value 453.870838
## converged
## # weights: 151
## initial value 591.075318
## iter 10 value 453.856410
## iter 20 value 453.853982
## final value 453.851826
## converged
## # weights: 251
## initial value 578.388746
## iter 10 value 453.891385
## iter 20 value 453.848789
## iter 30 value 453.847252
## iter 40 value 453.846502
## iter 50 value 453.845654
## iter 50 value 453.845652
## iter 50 value 453.845652
## final value 453.845652
## converged
## # weights: 51
## initial value 477.425937
## final value 453.832897
## converged
## # weights: 151
## initial value 459.780012
## final value 453.834237
## converged
## # weights: 251
## initial value 456.981581
## final value 453.836428
## converged
## # weights: 51
## initial value 538.241608
## final value 441.851754
## converged
## # weights: 151
## initial value 563.271723
## final value 441.851754
## converged
## # weights: 251
## initial value 472.882778
## final value 441.851754
## converged
## # weights: 51
## initial value 688.140864
## iter 10 value 441.899503
## final value 441.898371
## converged
## # weights: 151
## initial value 517.886391
## iter 10 value 441.875522
## final value 441.875384
## converged
## # weights: 251
## initial value 466.365902
## iter 10 value 434.256588
## iter 20 value 418.439051
## iter 30 value 404.084340
## iter 40 value 371.175466
## iter 50 value 320.930407
## iter 60 value 295.625769
## iter 70 value 275.738149
## iter 80 value 265.572259
## iter 90 value 261.086931
## iter 100 value 250.384135
## final value 250.384135
## stopped after 100 iterations
## # weights: 51
## initial value 564.560080
## final value 441.852755
## converged
## # weights: 151
## initial value 498.912417
## final value 441.855284
## converged
## # weights: 251
## initial value 650.623130
## final value 441.856269
## converged
## # weights: 51
## initial value 503.032197
## final value 450.263391
## converged
## # weights: 151
## initial value 497.077688
## final value 450.263391
## converged
## # weights: 251
## initial value 509.421737
## final value 450.263391
## converged
## # weights: 51
## initial value 549.156669
## iter 10 value 450.304748
## final value 450.304500
## converged
## # weights: 151
## initial value 544.715746
## iter 10 value 450.284713
## iter 20 value 437.576687
## iter 30 value 427.008929
## iter 40 value 426.315661
## iter 50 value 415.662016
## iter 60 value 410.841201
## iter 70 value 392.058159
## iter 80 value 335.410717
## iter 90 value 280.681397
## iter 100 value 252.717525
## final value 252.717525
## stopped after 100 iterations
## # weights: 251
## initial value 462.994807
## iter 10 value 450.282257
## iter 20 value 443.357836
## iter 30 value 440.127593
## iter 40 value 414.644466
## iter 50 value 359.341065
## iter 60 value 343.195287
## iter 70 value 300.556966
## iter 80 value 269.564159
## iter 90 value 262.164197
## iter 100 value 260.679303
## final value 260.679303
## stopped after 100 iterations
## # weights: 51
## initial value 600.222464
## final value 450.264282
## converged
## # weights: 151
## initial value 464.380047
## final value 450.265875
## converged
## # weights: 251
## initial value 678.183667
## final value 450.267658
## converged
## # weights: 51
## initial value 538.242904
## final value 455.577688
## converged
## # weights: 151
## initial value 598.179109
## final value 455.577688
## converged
## # weights: 251
## initial value 777.073918
## final value 455.577688
## converged
## # weights: 51
## initial value 603.652088
## iter 10 value 455.652685
## iter 20 value 453.943052
## iter 30 value 397.005433
## iter 40 value 368.608814
## iter 50 value 353.504344
## iter 60 value 350.501327
## iter 70 value 335.725083
## iter 80 value 331.064737
## iter 90 value 324.969531
## iter 100 value 314.344217
## final value 314.344217
## stopped after 100 iterations
## # weights: 151
## initial value 514.660164
## iter 10 value 455.693673
## iter 20 value 455.577021
## iter 30 value 451.331132
## iter 40 value 447.865188
## iter 50 value 445.014263
## iter 60 value 444.163326
## iter 70 value 443.647677
## iter 80 value 417.214699
## iter 90 value 381.660300
## iter 100 value 358.337537
## final value 358.337537
## stopped after 100 iterations
## # weights: 251
## initial value 461.598183
## iter 10 value 455.709423
## iter 20 value 455.021423
## iter 30 value 431.673011
## iter 40 value 423.866787
## iter 50 value 392.690798
## iter 60 value 336.774061
## iter 70 value 313.858392
## iter 80 value 305.773952
## iter 90 value 296.767363
## iter 100 value 295.024318
## final value 295.024318
## stopped after 100 iterations
## # weights: 51
## initial value 785.448680
## final value 455.578394
## converged
## # weights: 151
## initial value 459.674996
## iter 10 value 451.430914
## iter 20 value 449.915329
## iter 30 value 449.912452
## final value 449.908762
## converged
## # weights: 251
## initial value 536.060704
## final value 455.581889
## converged
## # weights: 51
## initial value 504.037568
## final value 455.577688
## converged
## # weights: 151
## initial value 604.733302
## final value 455.577688
## converged
## # weights: 251
## initial value 457.220740
## iter 10 value 442.450929
## iter 20 value 397.312484
## iter 30 value 356.449430
## final value 352.376960
## converged
## # weights: 51
## initial value 485.676699
## iter 10 value 455.615604
## final value 455.615357
## converged
## # weights: 151
## initial value 590.076051
## iter 10 value 455.641478
## iter 20 value 444.946284
## iter 30 value 401.844798
## iter 40 value 346.237837
## iter 50 value 313.711605
## iter 60 value 305.512256
## iter 70 value 300.439278
## iter 80 value 299.935848
## iter 90 value 299.868767
## iter 100 value 299.816087
## final value 299.816087
## stopped after 100 iterations
## # weights: 251
## initial value 730.859387
## iter 10 value 455.649186
## iter 20 value 454.505266
## iter 30 value 436.966232
## iter 40 value 422.289765
## iter 50 value 344.267547
## iter 60 value 311.853710
## iter 70 value 297.191081
## iter 80 value 288.987103
## iter 90 value 282.094748
## iter 100 value 276.946435
## final value 276.946435
## stopped after 100 iterations
## # weights: 51
## initial value 646.234023
## final value 455.578513
## converged
## # weights: 151
## initial value 487.551835
## final value 455.579797
## converged
## # weights: 251
## initial value 460.142590
## iter 10 value 455.581740
## final value 455.580608
## converged
## # weights: 51
## initial value 468.890142
## final value 425.553125
## converged
## # weights: 151
## initial value 472.536897
## final value 425.553125
## converged
## # weights: 251
## initial value 428.875292
## final value 425.553125
## converged
## # weights: 51
## initial value 426.709716
## iter 10 value 425.612445
## final value 425.610917
## converged
## # weights: 151
## initial value 615.451902
## iter 10 value 425.026069
## iter 20 value 419.374544
## iter 30 value 418.651809
## iter 40 value 411.577437
## iter 50 value 397.805820
## iter 60 value 371.292533
## iter 70 value 355.905937
## iter 80 value 311.294022
## iter 90 value 288.706461
## iter 100 value 248.220610
## final value 248.220610
## stopped after 100 iterations
## # weights: 251
## initial value 437.155748
## iter 10 value 425.640288
## iter 20 value 415.134232
## iter 30 value 409.594382
## iter 40 value 391.945379
## iter 50 value 366.329657
## iter 60 value 311.705067
## iter 70 value 270.955411
## iter 80 value 243.116191
## iter 90 value 229.480392
## iter 100 value 220.885924
## final value 220.885924
## stopped after 100 iterations
## # weights: 51
## initial value 495.756202
## final value 425.554000
## converged
## # weights: 151
## initial value 729.559733
## final value 425.555603
## converged
## # weights: 251
## initial value 692.444906
## final value 425.557307
## converged
## # weights: 51
## initial value 444.748396
## final value 444.714988
## converged
## # weights: 151
## initial value 513.525920
## final value 444.714988
## converged
## # weights: 251
## initial value 576.773018
## final value 444.714988
## converged
## # weights: 51
## initial value 478.642792
## iter 10 value 444.759708
## iter 10 value 444.759708
## iter 10 value 444.759705
## final value 444.759705
## converged
## # weights: 151
## initial value 474.888720
## iter 10 value 444.492083
## iter 20 value 426.084789
## iter 30 value 372.132125
## iter 40 value 352.753309
## iter 50 value 320.243931
## iter 60 value 314.599578
## iter 70 value 312.237309
## iter 80 value 309.731163
## iter 90 value 306.140380
## iter 100 value 305.453417
## final value 305.453417
## stopped after 100 iterations
## # weights: 251
## initial value 814.560063
## iter 10 value 442.642883
## iter 20 value 417.728781
## iter 30 value 345.266620
## iter 40 value 320.319629
## iter 50 value 302.973874
## iter 60 value 286.662994
## iter 70 value 282.620156
## iter 80 value 277.625360
## iter 90 value 275.368974
## iter 100 value 275.292496
## final value 275.292496
## stopped after 100 iterations
## # weights: 51
## initial value 483.895309
## final value 444.715800
## converged
## # weights: 151
## initial value 526.503654
## final value 444.717528
## converged
## # weights: 251
## initial value 531.981916
## final value 444.719189
## converged
## # weights: 51
## initial value 567.214772
## final value 448.440127
## converged
## # weights: 151
## initial value 815.632350
## final value 448.440127
## converged
## # weights: 251
## initial value 645.756714
## final value 448.440072
## converged
## # weights: 51
## initial value 637.313932
## iter 10 value 448.482450
## final value 448.482433
## converged
## # weights: 151
## initial value 450.930151
## iter 10 value 448.532165
## iter 20 value 448.437772
## iter 30 value 444.281094
## iter 40 value 433.749688
## iter 50 value 432.176357
## iter 60 value 428.446472
## iter 70 value 420.799084
## iter 80 value 402.872708
## iter 90 value 347.057294
## iter 100 value 330.255952
## final value 330.255952
## stopped after 100 iterations
## # weights: 251
## initial value 586.518341
## iter 10 value 448.528525
## iter 20 value 448.027062
## iter 30 value 432.837719
## iter 40 value 363.383739
## iter 50 value 320.081318
## iter 60 value 313.412541
## iter 70 value 309.511491
## iter 80 value 308.354786
## iter 90 value 299.658794
## iter 100 value 288.982383
## final value 288.982383
## stopped after 100 iterations
## # weights: 51
## initial value 491.847665
## final value 448.441122
## converged
## # weights: 151
## initial value 467.854916
## final value 448.442755
## converged
## # weights: 251
## initial value 488.547619
## final value 448.445198
## converged
## # weights: 51
## initial value 705.250687
## final value 437.940596
## converged
## # weights: 151
## initial value 440.413692
## final value 437.940596
## converged
## # weights: 251
## initial value 659.913281
## final value 437.940596
## converged
## # weights: 51
## initial value 574.087401
## iter 10 value 437.990252
## final value 437.989851
## converged
## # weights: 151
## initial value 607.944255
## iter 10 value 437.992636
## iter 20 value 424.534337
## iter 30 value 418.966577
## iter 40 value 415.146686
## iter 50 value 400.428525
## iter 60 value 389.637150
## iter 70 value 369.591136
## iter 80 value 364.211208
## iter 90 value 336.867609
## iter 100 value 288.064586
## final value 288.064586
## stopped after 100 iterations
## # weights: 251
## initial value 750.791385
## iter 10 value 437.986305
## iter 20 value 425.224014
## iter 30 value 403.108152
## iter 40 value 350.407747
## iter 50 value 314.288143
## iter 60 value 308.034674
## iter 70 value 307.667974
## iter 80 value 307.657753
## iter 90 value 307.652946
## final value 307.652900
## converged
## # weights: 51
## initial value 495.476191
## final value 437.941405
## converged
## # weights: 151
## initial value 994.902119
## final value 437.943060
## converged
## # weights: 251
## initial value 470.476215
## final value 437.944885
## converged
## # weights: 51
## initial value 464.197917
## final value 456.440911
## converged
## # weights: 151
## initial value 632.979562
## final value 456.440911
## converged
## # weights: 251
## initial value 596.195204
## final value 456.440911
## converged
## # weights: 51
## initial value 500.465492
## iter 10 value 456.478308
## final value 456.478016
## converged
## # weights: 151
## initial value 691.429461
## iter 10 value 456.489346
## iter 20 value 456.327839
## iter 30 value 439.155511
## iter 40 value 351.422707
## iter 50 value 317.448759
## iter 60 value 305.863028
## iter 70 value 304.692506
## iter 80 value 302.754114
## iter 90 value 297.894690
## iter 100 value 294.887938
## final value 294.887938
## stopped after 100 iterations
## # weights: 251
## initial value 479.042629
## iter 10 value 456.434124
## iter 20 value 453.641925
## iter 30 value 381.212421
## iter 40 value 338.820749
## iter 50 value 325.161830
## iter 60 value 312.420694
## iter 70 value 301.648795
## iter 80 value 300.506335
## iter 90 value 300.486708
## final value 300.486623
## converged
## # weights: 51
## initial value 761.701350
## final value 456.441834
## converged
## # weights: 151
## initial value 718.311680
## final value 456.443738
## converged
## # weights: 251
## initial value 496.277118
## final value 456.445047
## converged
## # weights: 51
## initial value 471.722499
## final value 449.355019
## converged
## # weights: 151
## initial value 475.214202
## final value 449.355019
## converged
## # weights: 251
## initial value 492.376664
## iter 10 value 447.123022
## iter 20 value 433.935387
## iter 30 value 378.330255
## iter 40 value 342.716965
## iter 50 value 330.641864
## iter 60 value 327.438864
## iter 70 value 327.341690
## iter 80 value 324.400102
## iter 90 value 324.274369
## iter 100 value 323.468938
## final value 323.468938
## stopped after 100 iterations
## # weights: 51
## initial value 545.064032
## iter 10 value 449.360621
## iter 20 value 448.017669
## iter 30 value 445.978452
## iter 40 value 445.892643
## final value 445.892556
## converged
## # weights: 151
## initial value 673.153331
## iter 10 value 449.399417
## iter 20 value 436.371412
## iter 30 value 418.146538
## iter 40 value 345.349193
## iter 50 value 331.581268
## iter 60 value 325.047090
## iter 70 value 315.794548
## iter 80 value 315.465798
## iter 90 value 314.657308
## iter 100 value 314.191016
## final value 314.191016
## stopped after 100 iterations
## # weights: 251
## initial value 585.072269
## iter 10 value 443.887121
## iter 20 value 425.851789
## iter 30 value 386.851125
## iter 40 value 369.332217
## iter 50 value 323.689392
## iter 60 value 310.262130
## iter 70 value 295.491409
## iter 80 value 274.338839
## iter 90 value 255.892497
## iter 100 value 233.776663
## final value 233.776663
## stopped after 100 iterations
## # weights: 51
## initial value 602.303700
## final value 449.355932
## converged
## # weights: 151
## initial value 623.497057
## final value 449.357566
## converged
## # weights: 251
## initial value 474.035040
## final value 449.358947
## converged
## # weights: 51
## initial value 455.607352
## final value 455.577688
## converged
## # weights: 151
## initial value 544.193739
## final value 455.577689
## converged
## # weights: 251
## initial value 513.213673
## final value 455.577689
## converged
## # weights: 51
## initial value 624.712901
## iter 10 value 455.585810
## iter 20 value 451.503277
## iter 30 value 448.902580
## iter 40 value 429.861235
## iter 50 value 394.642782
## iter 60 value 345.375330
## iter 70 value 316.274894
## iter 80 value 308.280031
## iter 90 value 304.524114
## iter 100 value 303.620319
## final value 303.620319
## stopped after 100 iterations
## # weights: 151
## initial value 572.920166
## iter 10 value 455.513820
## iter 20 value 439.020010
## iter 30 value 380.901529
## iter 40 value 350.183020
## iter 50 value 341.141982
## iter 60 value 333.572147
## iter 70 value 320.273456
## iter 80 value 299.811020
## iter 90 value 284.352560
## iter 100 value 264.394366
## final value 264.394366
## stopped after 100 iterations
## # weights: 251
## initial value 538.575928
## iter 10 value 455.596565
## iter 20 value 455.152189
## iter 30 value 418.632436
## iter 40 value 397.924385
## iter 50 value 352.181149
## iter 60 value 334.045260
## iter 70 value 307.684050
## iter 80 value 254.613952
## iter 90 value 228.450214
## iter 100 value 212.795135
## final value 212.795135
## stopped after 100 iterations
## # weights: 51
## initial value 467.078843
## final value 455.578586
## converged
## # weights: 151
## initial value 548.694381
## final value 455.580071
## converged
## # weights: 251
## initial value 652.378248
## final value 455.581333
## converged
## # weights: 51
## initial value 457.897960
## final value 454.708067
## converged
## # weights: 151
## initial value 635.435376
## final value 454.708067
## converged
## # weights: 251
## initial value 453.751954
## iter 10 value 440.580208
## iter 20 value 382.716068
## iter 30 value 329.196498
## iter 40 value 306.180771
## iter 50 value 303.750450
## iter 60 value 302.256922
## iter 70 value 300.972847
## iter 80 value 300.263324
## iter 90 value 298.965250
## iter 100 value 298.259354
## final value 298.259354
## stopped after 100 iterations
## # weights: 51
## initial value 524.695970
## final value 454.746233
## converged
## # weights: 151
## initial value 460.935682
## iter 10 value 454.795335
## final value 454.727370
## converged
## # weights: 251
## initial value 537.095818
## iter 10 value 457.098556
## iter 20 value 454.813188
## iter 30 value 453.543664
## iter 40 value 428.151883
## iter 50 value 389.198704
## iter 60 value 323.267333
## iter 70 value 308.630155
## iter 80 value 297.957938
## iter 90 value 287.697391
## iter 100 value 263.556408
## final value 263.556408
## stopped after 100 iterations
## # weights: 51
## initial value 594.035390
## final value 454.708981
## converged
## # weights: 151
## initial value 458.037730
## final value 454.710562
## converged
## # weights: 251
## initial value 460.650753
## final value 454.712158
## converged
## # weights: 51
## initial value 427.780813
## final value 427.686860
## converged
## # weights: 151
## initial value 554.022997
## final value 427.686860
## converged
## # weights: 251
## initial value 531.206366
## final value 427.686860
## converged
## # weights: 51
## initial value 447.515296
## iter 10 value 427.656893
## iter 20 value 366.088434
## iter 30 value 321.764230
## iter 40 value 302.446979
## iter 50 value 298.474174
## iter 60 value 295.612113
## iter 70 value 294.213107
## iter 80 value 293.682400
## iter 90 value 293.607219
## iter 100 value 293.501885
## final value 293.501885
## stopped after 100 iterations
## # weights: 151
## initial value 524.852125
## iter 10 value 427.730151
## iter 20 value 427.263827
## iter 30 value 405.340546
## iter 40 value 335.527003
## iter 50 value 306.391810
## iter 60 value 304.112228
## iter 70 value 302.818662
## iter 80 value 292.942892
## iter 90 value 277.475153
## iter 100 value 266.495330
## final value 266.495330
## stopped after 100 iterations
## # weights: 251
## initial value 437.807992
## iter 10 value 427.731272
## iter 20 value 419.817498
## iter 30 value 411.956997
## iter 40 value 377.928281
## iter 50 value 307.053624
## iter 60 value 279.699677
## iter 70 value 264.720645
## iter 80 value 242.073899
## iter 90 value 224.427744
## iter 100 value 208.198094
## final value 208.198094
## stopped after 100 iterations
## # weights: 51
## initial value 470.069244
## final value 427.687908
## converged
## # weights: 151
## initial value 440.464025
## final value 427.689453
## converged
## # weights: 251
## initial value 699.552261
## final value 427.691152
## converged
## # weights: 51
## initial value 472.272518
## final value 448.440127
## converged
## # weights: 151
## initial value 449.760710
## final value 448.440127
## converged
## # weights: 251
## initial value 567.781325
## iter 10 value 430.904299
## iter 20 value 381.446654
## iter 30 value 359.863633
## iter 40 value 352.161431
## iter 50 value 349.892316
## iter 60 value 349.005549
## iter 70 value 348.971585
## iter 80 value 346.280416
## iter 90 value 337.113055
## iter 100 value 332.180871
## final value 332.180871
## stopped after 100 iterations
## # weights: 51
## initial value 455.688959
## final value 448.482395
## converged
## # weights: 151
## initial value 450.951977
## iter 10 value 448.055203
## iter 20 value 428.775808
## iter 30 value 358.585688
## iter 40 value 334.648217
## iter 50 value 326.246858
## iter 60 value 306.437525
## iter 70 value 305.600619
## iter 80 value 305.571800
## iter 90 value 305.483496
## iter 100 value 304.030733
## final value 304.030733
## stopped after 100 iterations
## # weights: 251
## initial value 559.685946
## iter 10 value 448.493812
## iter 20 value 446.337036
## iter 30 value 389.231224
## iter 40 value 347.165164
## iter 50 value 317.825441
## iter 60 value 306.923688
## iter 70 value 305.501254
## iter 80 value 304.537287
## iter 90 value 299.794964
## iter 100 value 292.350512
## final value 292.350512
## stopped after 100 iterations
## # weights: 51
## initial value 648.910127
## final value 448.441021
## converged
## # weights: 151
## initial value 604.836098
## final value 448.442587
## converged
## # weights: 251
## initial value 594.468559
## final value 448.444165
## converged
## # weights: 51
## initial value 458.280597
## final value 453.832031
## converged
## # weights: 151
## initial value 502.046698
## final value 453.832031
## converged
## # weights: 251
## initial value 585.941662
## final value 453.832031
## converged
## # weights: 51
## initial value 625.218017
## iter 10 value 453.870825
## iter 10 value 453.870824
## iter 10 value 453.870824
## final value 453.870824
## converged
## # weights: 151
## initial value 458.189040
## iter 10 value 453.878005
## iter 20 value 453.870335
## iter 30 value 452.888228
## iter 40 value 419.550509
## iter 50 value 383.302873
## iter 60 value 374.308264
## iter 70 value 329.688458
## iter 80 value 316.269487
## iter 90 value 313.714482
## iter 100 value 313.204300
## final value 313.204300
## stopped after 100 iterations
## # weights: 251
## initial value 663.274762
## iter 10 value 454.024289
## iter 20 value 450.802885
## iter 30 value 433.009584
## iter 40 value 416.946192
## iter 50 value 396.455818
## iter 60 value 358.384804
## iter 70 value 304.846136
## iter 80 value 285.481525
## iter 90 value 275.454533
## iter 100 value 273.233946
## final value 273.233946
## stopped after 100 iterations
## # weights: 51
## initial value 468.750482
## final value 453.833089
## converged
## # weights: 151
## initial value 474.929887
## final value 453.835157
## converged
## # weights: 251
## initial value 498.852071
## final value 453.836330
## converged
## # weights: 51
## initial value 472.495665
## final value 446.590709
## converged
## # weights: 151
## initial value 447.282429
## final value 446.590709
## converged
## # weights: 251
## initial value 454.552136
## final value 446.590709
## converged
## # weights: 51
## initial value 675.531401
## iter 10 value 446.611708
## iter 20 value 437.392838
## iter 30 value 436.365276
## iter 40 value 434.405476
## iter 50 value 434.240096
## final value 434.240064
## converged
## # weights: 151
## initial value 453.625439
## iter 10 value 446.062803
## iter 20 value 431.065567
## iter 30 value 407.978646
## iter 40 value 402.860876
## iter 50 value 401.680890
## iter 60 value 400.049366
## iter 70 value 395.782148
## iter 80 value 360.890723
## iter 90 value 314.345078
## iter 100 value 305.531411
## final value 305.531411
## stopped after 100 iterations
## # weights: 251
## initial value 458.662550
## iter 10 value 442.176623
## iter 20 value 440.647567
## iter 30 value 440.389514
## iter 40 value 440.307221
## iter 50 value 431.009606
## iter 60 value 397.672397
## iter 70 value 346.705633
## iter 80 value 326.252992
## iter 90 value 312.062914
## iter 100 value 301.754653
## final value 301.754653
## stopped after 100 iterations
## # weights: 51
## initial value 449.499479
## final value 446.591478
## converged
## # weights: 151
## initial value 463.465631
## final value 446.593311
## converged
## # weights: 251
## initial value 447.568693
## final value 446.594663
## converged
## # weights: 51
## initial value 515.937227
## final value 456.440911
## converged
## # weights: 151
## initial value 469.427602
## final value 456.440911
## converged
## # weights: 251
## initial value 605.535177
## iter 10 value 427.003842
## iter 20 value 407.823601
## iter 30 value 403.235497
## iter 40 value 401.397688
## iter 50 value 401.147135
## iter 60 value 397.583499
## iter 70 value 397.484955
## iter 80 value 396.112067
## iter 90 value 395.982218
## iter 100 value 394.751134
## final value 394.751134
## stopped after 100 iterations
## # weights: 51
## initial value 514.082833
## iter 10 value 456.410038
## iter 20 value 454.353644
## iter 30 value 451.691266
## iter 40 value 428.150777
## iter 50 value 353.395408
## iter 60 value 315.311193
## iter 70 value 311.492195
## iter 80 value 310.597981
## iter 90 value 310.042118
## iter 100 value 308.300370
## final value 308.300370
## stopped after 100 iterations
## # weights: 151
## initial value 505.824606
## iter 10 value 456.714200
## iter 20 value 456.468820
## iter 30 value 456.467635
## iter 40 value 456.462875
## iter 50 value 456.460936
## iter 60 value 456.459897
## final value 456.459835
## converged
## # weights: 251
## initial value 469.000925
## iter 10 value 455.465975
## iter 20 value 419.308720
## iter 30 value 380.912205
## iter 40 value 373.013442
## iter 50 value 334.776969
## iter 60 value 310.366988
## iter 70 value 297.726995
## iter 80 value 285.536242
## iter 90 value 261.468195
## iter 100 value 230.619460
## final value 230.619460
## stopped after 100 iterations
## # weights: 51
## initial value 545.496143
## final value 456.441798
## converged
## # weights: 151
## initial value 537.496628
## final value 456.443439
## converged
## # weights: 251
## initial value 678.034673
## final value 456.445342
## converged
## # weights: 51
## initial value 624.902415
## iter 10 value 444.760201
## final value 444.759716
## converged
print(germandata.nnet)
## Neural Network
##
## 750 samples
## 20 predictor
## 2 classes: '0', '1'
##
## No pre-processing
## Resampling: Bootstrapped (25 reps)
## Summary of sample sizes: 750, 750, 750, 750, 750, 750, ...
## Resampling results across tuning parameters:
##
## size decay Accuracy Kappa
## 1 0e+00 0.7231997 0.000000000
## 1 1e-04 0.7231997 0.000000000
## 1 1e-01 0.7319562 0.098825492
## 3 0e+00 0.7203639 0.012393841
## 3 1e-04 0.7238127 0.012148425
## 3 1e-01 0.7271728 0.231939324
## 5 0e+00 0.7228635 0.055980178
## 5 1e-04 0.7220361 0.007240612
## 5 1e-01 0.7245660 0.300898859
##
## Accuracy was used to select the optimal model using the largest value.
## The final values used for the model were size = 1 and decay = 0.1.
plot(germandata.nnet)
plotnet(germandata.nnet$finalModel, y_names = "response")
title("Graphical Representation of our Neural Network")
#In sample
prob.nnet= predict(germandata.nnet,type='prob')
pred.nnet = (prob.nnet[,2] >=pcut)*1
table(germandata.train$response,pred.nnet, dnn=c("Observed","Predicted"))
## Predicted
## Observed 1
## 0 540
## 1 210
#mean(ifelse(germandata.train$response != pred.nnet, 1, 0))
cost(germandata.train$response, pred.nnet)
## [1] 0.72
#Out of sample
prob.nnet.test= predict(germandata.nnet,germandata.test,type='prob')
pred.nnet.test = as.numeric(prob.nnet.test[,2] > pcut)
table(germandata.test$response,pred.nnet.test, dnn=c("Observed","Predicted"))
## Predicted
## Observed 1
## 0 160
## 1 90
#mean(ifelse(germandata.test$response != pred.nnet.test, 1, 0))
cost(germandata.test$response, pred.nnet.test)
## [1] 0.64
#Roc curve for nnet########
par(mfrow=c(1,2))
roc.nnet <- roc.plot(x=(germandata.train$response == "1"), pred =prob.nnet[,2])
roc.nnet$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.4921473 0.9380831 NA
roc.nnet.test <- roc.plot(x=(germandata.test$response == "1"), pred =prob.nnet.test[,2])
roc.nnet.test$roc.vol
## Model Area p.value binorm.area
## 1 Model 1 0.5023958 0.3440269 NA