PREDICT ON TRAIN DATA
library(caret)
pred<-predict(model_bin,train)
pred_train<-ifelse(pred>0.5,1,0)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1828 5
1 149 29
Accuracy : 0.9234
95% CI : (0.9109, 0.9347)
No Information Rate : 0.9831
P-Value [Acc > NIR] : 1
Kappa : 0.2524
Mcnemar's Test P-Value : <2e-16
Sensitivity : 0.9246
Specificity : 0.8529
Pos Pred Value : 0.9973
Neg Pred Value : 0.1629
Prevalence : 0.9831
Detection Rate : 0.9090
Detection Prevalence : 0.9115
Balanced Accuracy : 0.8888
'Positive' Class : 0
library(ROCR)
Loading required package: gplots
Attaching package: 'gplots'
The following object is masked from 'package:stats':
lowess
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.5800968
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here 1871 values are predicted correctly on train data with 93% accuracy,kappa being very less of only 35%,sensitivity,specificity and balanced accuracy are good and area under curve being 62%, it is quite satisfactory model.
NAIVE BAYES CLASSIFIER
MODEL BUILDING
library(naivebayes)
train$BAD<-as.factor(train$BAD)
class(train$BAD)
[1] "factor"
model_nb<-naive_bayes(BAD ~ ., data=train)
model_nb$prior
0 1
0.91148682 0.08851318
The algorithm is built based on prior probabilities calculated on outcome variable using gaussian models and based on this posterior probabilities are estimated.
PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_nb,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1713 120
1 112 66
Accuracy : 0.8846
95% CI : (0.8699, 0.8983)
No Information Rate : 0.9075
P-Value [Acc > NIR] : 0.9997
Kappa : 0.2992
Mcnemar's Test P-Value : 0.6458
Sensitivity : 0.9386
Specificity : 0.3548
Pos Pred Value : 0.9345
Neg Pred Value : 0.3708
Prevalence : 0.9075
Detection Rate : 0.8518
Detection Prevalence : 0.9115
Balanced Accuracy : 0.6467
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.65266
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here it predicted 215 values wrongly with accuracy, sensitivity being good and other factors being not bad, this is a bad model.
CART DECISION TREE
MODEL BUILDING
library(rpart)
model_cart<-rpart(BAD ~ ., data=train)
model_cart$cptable
CP nsplit rel error xerror xstd
1 0.20786517 0 1.0000000 1.0000000 0.07155915
2 0.03932584 1 0.7921348 0.8258427 0.06557761
3 0.02808989 2 0.7528090 0.8370787 0.06598678
4 0.02059925 3 0.7247191 0.7977528 0.06453908
5 0.01966292 6 0.6629213 0.7977528 0.06453908
6 0.01685393 8 0.6235955 0.8258427 0.06557761
7 0.01000000 10 0.5898876 0.8089888 0.06495721
model_cart$variable.importance
DEBTINC CLAGE DELINQ CLNO LOAN VALUE
76.9271006 22.6624597 18.5424709 14.2202477 12.9673186 12.6965240
DEROG JOB MORTDUE NINQ YOJ
11.5440371 3.3831320 2.0838004 1.9725113 0.6210879
?? In this decision tree model,the error for complexity parameter of 0.24 is calculated and it goes so until 0.01 where less error is occured. The variable important to estimate the defaulter is shown above with DEBTINC being more important.
PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_cart,train,type="class")
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1812 21
1 84 94
Accuracy : 0.9478
95% CI : (0.9371, 0.9571)
No Information Rate : 0.9428
P-Value [Acc > NIR] : 0.1814
Kappa : 0.6149
Mcnemar's Test P-Value : 1.443e-09
Sensitivity : 0.9557
Specificity : 0.8174
Pos Pred Value : 0.9885
Neg Pred Value : 0.5281
Prevalence : 0.9428
Detection Rate : 0.9010
Detection Prevalence : 0.9115
Balanced Accuracy : 0.8865
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.7583166
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here only 101 values are predicted correctly out of total data in train with above parameters being accurate so the model is good.
SUPPORT VECTOR MACHINES
MODEL BUILDING
library(e1071)
model_svm<-train(BAD ~ ., data=train,method="svmLinear",preProcess=c("center","scale"),tuneLength=10)
model_svm
Support Vector Machines with Linear Kernel
2011 samples
12 predictor
2 classes: '0', '1'
Pre-processing: centered (16), scaled (16)
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 2011, 2011, 2011, 2011, 2011, 2011, ...
Resampling results:
Accuracy Kappa
0.9153093 0.08143762
Tuning parameter 'C' was held constant at a value of 1
Here, the linear svm model is built where the hyperpalnes separates classes of outcome variable and the best hyperplane is selected out of it which is far from the values.
PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_svm,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1833 0
1 174 4
Accuracy : 0.9135
95% CI : (0.9003, 0.9254)
No Information Rate : 0.998
P-Value [Acc > NIR] : 1
Kappa : 0.0402
Mcnemar's Test P-Value : <2e-16
Sensitivity : 0.91330
Specificity : 1.00000
Pos Pred Value : 1.00000
Neg Pred Value : 0.02247
Prevalence : 0.99801
Detection Rate : 0.91149
Detection Prevalence : 0.91149
Balanced Accuracy : 0.95665
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.511236
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here all the parameters are good except inter-rater reliability value and area under curve,so the model is bit satisfactory.
RANDOM FOREST
MODEL BUILDING
library(randomForest)
randomForest 4.6-14
Type rfNews() to see new features/changes/bug fixes.
Attaching package: 'randomForest'
The following object is masked from 'package:ggplot2':
margin
model_rf<-randomForest(BAD ~ ., data=train,mtry=3,ntree=700)
model_rf
Call:
randomForest(formula = BAD ~ ., data = train, mtry = 3, ntree = 700)
Type of random forest: classification
Number of trees: 700
No. of variables tried at each split: 3
OOB estimate of error rate: 5.82%
Confusion matrix:
0 1 class.error
0 1828 5 0.002727769
1 112 66 0.629213483
varImpPlot(model_rf)

Here in random forest algorithm 700 unpruned trees are built where pruning is not required as it is building 700 trees and the error on test data(32% of train data) is only 5%. The variable importance plot is plotted where the variable with lower GINI index value is most preferable.
PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_rf,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1833 0
1 0 178
Accuracy : 1
95% CI : (0.9982, 1)
No Information Rate : 0.9115
P-Value [Acc > NIR] : < 2.2e-16
Kappa : 1
Mcnemar's Test P-Value : NA
Sensitivity : 1.0000
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 1.0000
Prevalence : 0.9115
Detection Rate : 0.9115
Detection Prevalence : 0.9115
Balanced Accuracy : 1.0000
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 1
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here all the values are correctly predicted with 100% accuracy.
ADAPTIVE BOOSTING
MODEL BUILDING
library(ada)
model_ada<-ada(BAD ~ ., data=train,loss='exponential',type='discrete',iter=150)
model_ada
Call:
ada(BAD ~ ., data = train, loss = "exponential", type = "discrete",
iter = 150)
Loss: exponential Method: discrete Iteration: 150
Final Confusion Matrix for Data:
Final Prediction
True value 0 1
0 1833 0
1 13 165
Train Error: 0.006
Out-Of-Bag Error: 0.021 iteration= 146
Additional Estimates of number of iterations:
train.err1 train.kap1
143 143
plot(model_ada)

Under exponential adaptive boosting method, model with 100 iterations are built and OOB error(test error) is only 0.027 and from the plot we can see that the error is gradually decreasing with increase in iterations.
PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_ada,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1833 0
1 13 165
Accuracy : 0.9935
95% CI : (0.989, 0.9966)
No Information Rate : 0.918
P-Value [Acc > NIR] : < 2.2e-16
Kappa : 0.9586
Mcnemar's Test P-Value : 0.0008741
Sensitivity : 0.9930
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 0.9270
Prevalence : 0.9180
Detection Rate : 0.9115
Detection Prevalence : 0.9115
Balanced Accuracy : 0.9965
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.9634831
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

Here,the model is built by making the weak learners as strong learners using a decision stump and except 21 values all are predicted correct with 99% accurate.
Now lets compare the performance of all the above models on train data and decide the best model out of it.
SUMMARY
SUMMARY ON TRAIN DATA
| BINARY_LOGISTIC_REGRESSION |
93 |
35.5 |
93 |
84 |
88 |
62 |
| NAIVE_BAYES |
89 |
34.0 |
94 |
39 |
66 |
67 |
| CART(DECISION_TREE) |
95 |
61.0 |
95 |
85 |
90 |
75 |
| SVM |
93 |
37.0 |
93 |
95 |
94 |
62 |
| RANDOM_FOREST |
100 |
100.0 |
100 |
100 |
100 |
100 |
| ADAPTIVE_BOOSTING |
99 |
97.0 |
99 |
100 |
99 |
97 |
By observing the summary we can infer that CART decision tree model,random forest model and adaptive boosting model performed very well,where as other models have comparatively low performance.
But here in CART decision tree model inter rater reliability is bit low(generally we prefer kappa more than 70%) so lets predict on test data using adaptive boosting model and check the bias and variance.
USING ADAPTIVE BOOSTING
SHUFFLE THE DATA
set.seed(123)
RESAMPLE THE DATA
library(caret)
split<-createDataPartition(hmeq1$BAD,p=0.55,list = FALSE)
train<-hmeq1[split,]
test<-hmeq1[-split,]
dim(train)
[1] 1844 13
dim(test)
[1] 1507 13
USING ADAPTIVE BOOSTING
MODEL BUILDING
library(ada)
model_ada<-ada(BAD ~ ., data=train,loss='exponential',type='discrete',iter=150)
model_ada
Call:
ada(BAD ~ ., data = train, loss = "exponential", type = "discrete",
iter = 150)
Loss: exponential Method: discrete Iteration: 150
Final Confusion Matrix for Data:
Final Prediction
True value 0 1
0 1667 0
1 12 165
Train Error: 0.007
Out-Of-Bag Error: 0.026 iteration= 147
Additional Estimates of number of iterations:
train.err1 train.kap1
140 140
plot(model_ada)

PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_ada,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1667 0
1 12 165
Accuracy : 0.9935
95% CI : (0.9887, 0.9966)
No Information Rate : 0.9105
P-Value [Acc > NIR] : < 2.2e-16
Kappa : 0.9613
Mcnemar's Test P-Value : 0.001496
Sensitivity : 0.9929
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 0.9322
Prevalence : 0.9105
Detection Rate : 0.9040
Detection Prevalence : 0.9040
Balanced Accuracy : 0.9964
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.9661017
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

PREDICTING ON TEST DATA
pred_test<-predict(model_ada,test)
confusionMatrix(as.factor(test$BAD),as.factor(pred_test))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 1384 4
1 75 44
Accuracy : 0.9476
95% CI : (0.9351, 0.9583)
No Information Rate : 0.9681
P-Value [Acc > NIR] : 1
Kappa : 0.5045
Mcnemar's Test P-Value : 3.391e-15
Sensitivity : 0.9486
Specificity : 0.9167
Pos Pred Value : 0.9971
Neg Pred Value : 0.3697
Prevalence : 0.9681
Detection Rate : 0.9184
Detection Prevalence : 0.9210
Balanced Accuracy : 0.9326
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_test),as.numeric(test$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.683433
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

RESHUFFLE THE DATA
set.seed(1234)
RESAMPLE THE DATA
library(caret)
split<-createDataPartition(hmeq1$BAD,p=0.7,list = FALSE)
train<-hmeq1[split,]
test<-hmeq1[-split,]
dim(train)
[1] 2346 13
dim(test)
[1] 1005 13
MODEL BUILDING
library(ada)
model_ada<-ada(BAD ~ ., data=train,loss='exponential',type='discrete',iter=150)
model_ada
Call:
ada(BAD ~ ., data = train, loss = "exponential", type = "discrete",
iter = 150)
Loss: exponential Method: discrete Iteration: 150
Final Confusion Matrix for Data:
Final Prediction
True value 0 1
0 2147 0
1 8 191
Train Error: 0.003
Out-Of-Bag Error: 0.02 iteration= 149
Additional Estimates of number of iterations:
train.err1 train.kap1
148 148
plot(model_ada)

PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_ada,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 2147 0
1 8 191
Accuracy : 0.9966
95% CI : (0.9933, 0.9985)
No Information Rate : 0.9186
P-Value [Acc > NIR] : < 2e-16
Kappa : 0.9776
Mcnemar's Test P-Value : 0.01333
Sensitivity : 0.9963
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 0.9598
Prevalence : 0.9186
Detection Rate : 0.9152
Detection Prevalence : 0.9152
Balanced Accuracy : 0.9981
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.9798995
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

PREDICT ON TEST DATA
pred_test<-predict(model_ada,test)
confusionMatrix(as.factor(test$BAD),as.factor(pred_test))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 907 1
1 63 34
Accuracy : 0.9363
95% CI : (0.9194, 0.9506)
No Information Rate : 0.9652
P-Value [Acc > NIR] : 1
Kappa : 0.489
Mcnemar's Test P-Value : 2.44e-14
Sensitivity : 0.9351
Specificity : 0.9714
Pos Pred Value : 0.9989
Neg Pred Value : 0.3505
Prevalence : 0.9652
Detection Rate : 0.9025
Detection Prevalence : 0.9035
Balanced Accuracy : 0.9532
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_test),as.numeric(test$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.6747071
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

RESHUFFLE THE DATA
set.seed(12345)
RESAMPLE THE DATA
library(caret)
split<-createDataPartition(hmeq1$BAD,p=0.8,list = FALSE)
train<-hmeq1[split,]
test<-hmeq1[-split,]
dim(train)
[1] 2681 13
dim(test)
[1] 670 13
MODEL BUILDING
library(ada)
model_ada<-ada(BAD ~ ., data=train,loss='exponential',type='discrete',iter=150)
model_ada
Call:
ada(BAD ~ ., data = train, loss = "exponential", type = "discrete",
iter = 150)
Loss: exponential Method: discrete Iteration: 150
Final Confusion Matrix for Data:
Final Prediction
True value 0 1
0 2444 0
1 10 227
Train Error: 0.004
Out-Of-Bag Error: 0.021 iteration= 150
Additional Estimates of number of iterations:
train.err1 train.kap1
135 135
plot(model_ada)

PREDICT ON TRAIN DATA
library(caret)
pred_train<-predict(model_ada,train)
confusionMatrix(as.factor(train$BAD),as.factor(pred_train))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 2444 0
1 10 227
Accuracy : 0.9963
95% CI : (0.9932, 0.9982)
No Information Rate : 0.9153
P-Value [Acc > NIR] : < 2.2e-16
Kappa : 0.9764
Mcnemar's Test P-Value : 0.004427
Sensitivity : 0.9959
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 0.9578
Prevalence : 0.9153
Detection Rate : 0.9116
Detection Prevalence : 0.9116
Balanced Accuracy : 0.9980
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_train),as.numeric(train$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.978903
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

PREDICT ON TEST DATA
pred_test<-predict(model_ada,test)
confusionMatrix(as.factor(test$BAD),as.factor(pred_test))
Confusion Matrix and Statistics
Reference
Prediction 0 1
0 611 0
1 31 28
Accuracy : 0.9537
95% CI : (0.935, 0.9683)
No Information Rate : 0.9582
P-Value [Acc > NIR] : 0.7555
Kappa : 0.6223
Mcnemar's Test P-Value : 7.118e-08
Sensitivity : 0.9517
Specificity : 1.0000
Pos Pred Value : 1.0000
Neg Pred Value : 0.4746
Prevalence : 0.9582
Detection Rate : 0.9119
Detection Prevalence : 0.9119
Balanced Accuracy : 0.9759
'Positive' Class : 0
library(ROCR)
pr<-prediction(as.numeric(pred_test),as.numeric(test$BAD))
auc<-performance(pr,measure = "auc")
auc<-auc@y.values
auc
[[1]]
[1] 0.7372881
prf<-performance(pr,measure = "tpr",x.measure = "fpr")
plot(prf)

FINAL SUMMARY
SUMMARY ON DIFFERENT TRAIN AND TEST DATA
| TRAIN |
99.0 |
97.0 |
99.0 |
100 |
99.0 |
97.0 |
| TRAIN1 |
99.0 |
96.0 |
99.0 |
100 |
99.0 |
96.0 |
| TRAIN2 |
99.0 |
97.0 |
99.0 |
100 |
99.0 |
97.9 |
| TRAIN3 |
99.0 |
97.0 |
99.0 |
100 |
99.8 |
97.8 |
| TEST |
94.0 |
51.0 |
94.0 |
95 |
95.0 |
68.0 |
| TEST1 |
94.0 |
50.4 |
94.0 |
91 |
93.0 |
68.0 |
| TEST2 |
93.6 |
49.0 |
93.5 |
97 |
95.0 |
67.4 |
| TEST3 |
95.0 |
62.0 |
95.0 |
100 |
97.0 |
73.7 |
CONCLUSION
From above summary we can see that the adaptive boosting model performed well on different combination of data obtained from original hmeq1 dataset, but in the case of kappa and area under curve there is a slight difference for train and test data,so overall it has low bias-variance tradeoff and therefore we can rectify the customer deliquency (whether customer repays the home loan/not) who is requesting for the equity home loans.
Hence, we can trust this model and is ready to be deployed.
FINAL DATA WITH PREDICTED VALUES
library(caret)
predicted<-predict(model_ada,hmeq1)
library(dplyr)
Attaching package: 'dplyr'
The following object is masked from 'package:randomForest':
combine
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
hmeq1<-mutate(hmeq1,expected_BAD=predicted)
library(dplyr)
hmeq1<-rename(hmeq1,observed_BAD=BAD)
FINAL DATASET WITH OBSERVED AND EXPECTED DEFAULTERS (displaying only first 20 observations)
| 1 |
1700 |
30548 |
40320 |
HomeImp |
Other |
9 |
0 |
0 |
101.46600 |
1 |
8 |
37.11361 |
1 |
| 1 |
1800 |
28502 |
43034 |
HomeImp |
Other |
11 |
0 |
0 |
88.76603 |
0 |
8 |
36.88489 |
1 |
| 0 |
2300 |
102370 |
120953 |
HomeImp |
Office |
2 |
0 |
0 |
90.99253 |
0 |
13 |
31.58850 |
0 |
| 1 |
2400 |
34863 |
47471 |
HomeImp |
Mgr |
12 |
0 |
0 |
70.49108 |
1 |
21 |
38.26360 |
1 |
| 0 |
2400 |
98449 |
117195 |
HomeImp |
Office |
4 |
0 |
0 |
93.81177 |
0 |
13 |
29.68183 |
0 |
| 0 |
2900 |
103949 |
112505 |
HomeImp |
Office |
1 |
0 |
0 |
96.10233 |
0 |
13 |
30.05114 |
0 |
| 0 |
2900 |
104373 |
120702 |
HomeImp |
Office |
2 |
0 |
0 |
101.54030 |
0 |
13 |
29.91586 |
0 |
| 1 |
2900 |
7750 |
67996 |
HomeImp |
Other |
16 |
3 |
0 |
122.20466 |
2 |
8 |
36.21135 |
1 |
| 1 |
2900 |
61962 |
70915 |
DebtCon |
Mgr |
2 |
0 |
0 |
282.80166 |
3 |
37 |
49.20640 |
1 |
| 0 |
3000 |
104570 |
121729 |
HomeImp |
Office |
2 |
0 |
0 |
85.88437 |
0 |
14 |
32.05978 |
0 |
| 0 |
3200 |
74864 |
87266 |
HomeImp |
ProfExe |
7 |
0 |
0 |
250.63127 |
0 |
12 |
42.91000 |
0 |
| 1 |
3300 |
130518 |
164317 |
DebtCon |
Other |
9 |
0 |
6 |
192.28915 |
0 |
33 |
35.73056 |
1 |
| 0 |
3600 |
100693 |
114743 |
HomeImp |
Office |
6 |
0 |
0 |
88.47045 |
0 |
14 |
29.39354 |
0 |
| 0 |
3600 |
52337 |
63989 |
HomeImp |
Office |
20 |
0 |
0 |
204.27250 |
0 |
20 |
20.47092 |
0 |
| 1 |
3700 |
17857 |
21144 |
HomeImp |
Other |
5 |
0 |
0 |
129.71732 |
1 |
9 |
26.63435 |
1 |
| 0 |
3800 |
51180 |
63459 |
HomeImp |
Office |
20 |
0 |
0 |
203.75153 |
0 |
20 |
20.06704 |
0 |
| 1 |
3900 |
29896 |
45960 |
HomeImp |
Other |
11 |
0 |
0 |
146.12324 |
0 |
14 |
24.47888 |
1 |
| 0 |
3900 |
102143 |
118742 |
HomeImp |
Office |
2 |
0 |
0 |
85.27737 |
0 |
13 |
29.34392 |
0 |
| 0 |
4000 |
105164 |
112774 |
HomeImp |
Office |
1 |
0 |
0 |
94.72487 |
0 |
13 |
29.39093 |
0 |
| 0 |
4000 |
54543 |
61777 |
HomeImp |
Office |
21 |
0 |
0 |
205.58668 |
0 |
19 |
21.80656 |
0 |