These scripts are associated with the following publication: “Classification and Ranking of Fermi LAT Gamma-ray Sources from the 3FGL Catalog Using Machine Learning Techniques”, Saz Parkinson, P. M. (HKU/LSR, SCIPP), Xu, H. (HKU), Yu, P. L. H. (HKU), Salvetti, D. (INAF-Milan), Marelli, M. (INAF-Milan), and Falcone, A. D. (Penn State), The Astrophysical Journal, 2016, in press (http://arxiv.org/abs/1602.00385)

NB: You are welcome to use these scripts for your own purposes, but if you do so, we kindly ask that you cite the above publication.

Pulsar (YNG vs MSP) classification using Boosted LR

Load workspace from previous step

load(".RData")

Load RWeka and pROC packages

library(RWeka)
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var

WOW(LogitBoost)

Model <- LogitBoost(pulsarness ~., data = FGL3_Pulsars_train)
summary(Model)
## 
## === Summary ===
## 
## Correctly Classified Instances          97               97.9798 %
## Incorrectly Classified Instances         2                2.0202 %
## Kappa statistic                          0.9595
## Mean absolute error                      0.0782
## Root mean squared error                  0.1471
## Relative absolute error                 15.686  %
## Root relative squared error             29.4519 %
## Coverage of cases (0.95 level)         100      %
## Mean rel. region size (0.95 level)      66.1616 %
## Total Number of Instances               99     
## 
## === Confusion Matrix ===
## 
##   a  b   <-- classified as
##  46  1 |  a = MSP
##   1 51 |  b = YNG

Model predictions

predictions_FGL3_Pulsars_train <- predict(Model,
                                          newdata = FGL3_Pulsars_train, type = "probability")[, 2]
predictions_FGL3_Pulsars_test <- predict(Model,
                                         newdata = FGL3_Pulsars_test, type = "probability")[, 2]

Generate ROC plots and print contingency tables

Best_threshold_train <- ROC_threshold_plots_tables(FGL3_Pulsars_train$pulsarness,
                                                   predictions_FGL3_Pulsars_train,
                                                   FGL3_Pulsars_test$pulsarness,
                                                   predictions_FGL3_Pulsars_test,
                                                   cat1 = "YNG", cat2 = "MSP")

##                    real_category
## Predict_class_train MSP YNG
##                 MSP  46   0
##                 YNG   1  52
##                   real_category
## Predict_class_test MSP YNG
##                MSP  16   2
##                YNG   2  23

Add Boosted Logistic Regression Prediction probabilities to FGL3_results data frame

FGL3_results$BLR_PSR_P <- round(predict(Model,
                                        newdata = FGL3_tidy, type = "probability")[, 2],
                                digits = 3)

Add Boosted Logistic Regression Prediction category to FGL3_results data frame

FGL3_results$BLR_PSR_Pred <- ifelse(FGL3_results$BLR_PSR_P > Best_threshold_train[1],
                                    c("YNG"), c("MSP"))

Remove “pulsar-type” category prediction for those sources predicted to be AGN

FGL3_results$BLR_PSR_Pred[(FGL3_results$LR_Pred=="AGN")&(FGL3_results$RF_Pred=="AGN")]=""

Clean up and Set aside required data sets

Environ <- ls()
Environ <- Environ[Environ != "FGL3_tidy"
                   & Environ != "FGL3_results"
                   & Environ != "FGL3_test" 
                   & Environ != "FGL3_train" 
                   & Environ != "predictions_FGL3_train_CV" 
                   & Environ != "Block_index" 
                   & Environ != "FGL3_train_CV"
                   & Environ != "ROC_threshold_plots_tables"
                   & Environ != "FGL3_Pulsars_train"
                   & Environ != "FGL3_Pulsars_test"]
rm(list = Environ)

Save current workspace for subsequent steps

save.image()