title: "Photometric Redshift with CosmoPhotoz" authors: Rafael S. de Souza, Jonny Elliot, Alberto Krone-Martins, Émille Ishida, Joseph Hilbe output: html_document runtime: shiny

This is a short tutorial explaining how to perform photometric redshift estimation using the CosmoPhotoz R package.

# Required libraries

```{r,results='hide',message=FALSE, cache=FALSE} require(CosmoPhotoz) require(ggplot2)

``````
Load the PHAT0 data included in the package. Here we are using 5% of all dataset for training.

```{r}
data(PHAT0train)

data(PHAT0test)``````

`{r} PC_comb<-computeCombPCA(subset(PHAT0train,select=c(-redshift)), subset(PHAT0test,select=c(-redshift)))`

Number of variance explained by each PC `{r} PC_comb\$PCsum`

Add the redshift column to the PCA projections of the Training sample

```{r} Trainpc<-cbind(PC_combx, redshift = PHAT0trainredshift)

``````

Store the PCA projections for the testing sample in the vector Testpc

```{r, echo=FALSE}
Testpc<-PC_comb\$y``````

Train the glm model using Gamma Family. 6 PCs explain 99.5% of data variance. In order to account for small variations in the shape, we include a polynomial term for the 2 first PCs (95% of data variance)

```{r}

Fit<-glmTrainPhotoZ(Trainpc,formula=redshift~poly(Comp.1,2)poly(Comp.2,2)Comp.3Comp.4Comp.5*Comp.6,method="Bayesian",family="gamma")

``````

Once we fit our GLM model, we can predict the redshift for the "photometric" sample

```{r, echo=FALSE}

photoz<-predict(Fit\$glmfit,newdata = Testpc,type="response")
``````

Store the redshift from the testing sample in the vector specz for comparison

`{r, echo=FALSE} specz<-PHAT0test\$redshift`

Compute basic diagnostic statistics

`{r, echo=FALSE} computeDiagPhotoZ(photoz, specz)`

Create basic diagnostic plots

Kernel density distribution of the full scatter (specz − photoz) / (1 + specz)

```{r,fig.width=8, fig.height=9} plotDiagPhotoZ(photoz, specz, type = "errordist")

``````
Predicted vs Actuall values
Select 15,000 points to show
```{r}
datashow<-sample(length(photoz),15000)``````

`{r,fig.width=8, fig.height=9} plotDiagPhotoZ(photoz[datashow], specz[datashow], type = "predobs")+coord_cartesian(xlim =c(0,1.5), ylim = c(0,1.5))`

Scatter distribution as a function of redshift, violin plot

`{r,fig.width=12, fig.height=9} plotDiagPhotoZ(photoz, specz, type = "errorviolins")`

Scatter distribution as a function of redshift, box plot

`{r,fig.width=12, fig.height=9} plotDiagPhotoZ(photoz, specz, type = "box")`

`{r, echo=FALSE} shinyAppDir("paste(find.package("CosmoPhotoz"),"/glmPhotoZ-2/",sep=""))`