---
title: 'neuralnet: Training of Neural Networks'
output:
  html_document:
    df_print: paged
  pdf_document: default
  word_document: default
---

This is a notebook to try out the code from [The R Journal](https://journal.r-project.org/) paper about the neuralnet package, [neuralnet: Training of Neural Networks](https://journal.r-project.org/archive/2010/RJ-2010-006/index.html).



```{r}
library(datasets)

infert
```



```{r}
library(neuralnet)
library(NeuralNetTools)


nn <- neuralnet(case~age+parity+induced+spontaneous, data=infert, hidden=2, err.fct="ce", linear.output=FALSE)
nn

garson(nn)
```


```{r}
out <- cbind(nn$covariate,nn$net.result[[1]])
dimnames(out) <- list(NULL,c("age","parity","induced","spontaneous","nn-output"))
head(out)
```

```{r}
nn.bp <- neuralnet(case~age+parity+induced+spontaneous, data=infert, hidden=2, err.fct="ce",
                   linear.output=FALSE, algorithm="backprop", learningrate=0.01)
nn.bp

garson(nn.bp)
```

```{r}
library(nnet)

nn.nnet <- nnet(case~age+parity+induced+spontaneous, data=infert, size=2, entropy=T, abstol=0.01)

nn.nnet

garson(nn.nnet)
```

```{r}
 head(nn$generalized.weights[[1]])
```

```{r}
plot(nn)
```

```{r}
par(mfrow=c(2,2))
gwplot(nn,selected.covariate="age",min=-2.5, max=5)
gwplot(nn,selected.covariate="parity",min=-2.5, max=5)
gwplot(nn,selected.covariate="induced",min=-2.5, max=5)
gwplot(nn,selected.covariate="spontaneous",min=-2.5, max=5)
```


```{r}
test.data <- matrix(c(22,1,0,0,
                      22,1,1,0,
                      22,1,0,1,
                      22,1,1,1),byrow=TRUE, ncol=4)

new.output <- compute(nn,covariate=test.data)

new.output$net.result
```

```{r}
nn.new <- neuralnet(case~parity+induced+spontaneous, data=infert, hidden=2, err.fct="ce", linear.output=FALSE)

plot(nn.new)
garson(nn.new)


ci <- confidence.interval(nn.new, alpha=0.05)
ci$lower.ci
```


