with presentation

This commit is contained in:
AG Damsbo 2022-09-22 15:51:56 +02:00
parent 54831103d4
commit 6f708f97bf
4 changed files with 3414 additions and 2 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

114
Day 3.R
View File

@ -123,7 +123,7 @@ airports |>
theme_bw(18)+ theme_bw(18)+
scale_color_viridis_c(direction = -1) scale_color_viridis_c(direction = -1)
library(lubridate)
flights |> flights |>
group_by(tailnum) |> group_by(tailnum) |>
summarise(avg_del = mean(arr_delay,na.rm=TRUE)) |> summarise(avg_del = mean(arr_delay,na.rm=TRUE)) |>
@ -139,4 +139,114 @@ flights |>
labs(y="Mean delay", x="Age") labs(y="Mean delay", x="Age")
weather # Memory
x <- rnorm(2e4) # Try also with n = 1e5
## The old way:
system.time({
current_sum <- 0
res <- c()
for (x_i in x) {
current_sum <- current_sum + x_i
res <- c(res, current_sum)
}
})
## Be smart, do like this:
system.time({
current_sum <- 0
res2 <- double(length(x))
for (i in seq_along(x)) {
current_sum <- current_sum + x[i]
res2[i] <- current_sum
}
})
# From R >= 3.4
system.time({
current_sum <- 0
res4 <- c()
for (i in seq_along(x)) {
current_sum <- current_sum + x[i]
res4[i] <- current_sum
}
})
n <- 1e3
max <- 1:1000
system.time({
mat <- NULL
for (m in max) {
mat <- cbind(mat, runif(n, max = m))
}
})
## Vectorisation
### Slow
monte_carlo <- function(N) {
hits <- 0
for (i in seq_len(N)) {
u1 <- runif(1)
u2 <- runif(1)
if (u1 ^ 2 > u2) {
hits <- hits + 1
}
}
hits / N
}
### Hurtig
monte_carlo2 <- function(N) {
mean(runif(N) ^ 2 > runif(N))
}
### Test
N=1e3
microbenchmark::microbenchmark(
monte_carlo(N),
monte_carlo2(N)
)
# Algebra
## Optimisation exercise
set.seed(1)
N <- 1e4
x <- 0
count <- 0
for (i in seq_len(N)){
y <- rnorm(1)
x <- x + y
if (x < 0) count <- count + 1
}
count / N
mean(cumsum(rnorm(N)) < 0) # Equivalent
## Optimisation exercise
mat <- as.matrix(mtcars)
ind <- seq_len(nrow(mat))
mat_big <- mat[rep(ind, 1000), ] ## 1000 times bigger dataset
last_row <- mat_big[nrow(mat_big), ]
### Orig
system.time({
for (j in 1:ncol(mat_big)) {
for (i in 1:nrow(mat_big)) {
mat_big[i, j] <- 10 * mat_big[i, j] * last_row[j]
}
}
})
### Optimised
system.time(sweep(mat_big, MARGIN = 2, STATS = 10 * last_row, FUN = '*'))

35
presentation.Rmd Normal file
View File

@ -0,0 +1,35 @@
---
title: "Presentation"
author: "AGDamsbo"
date: "`r Sys.Date()`"
output: ioslides_presentation
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## R Markdown
This is an R Markdown presentation. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document.
## Slide with Bullets
- Bullet 1
- Bullet 2
- Bullet 3
## Slide with R Output
```{r cars, echo = TRUE}
summary(cars)
```
## Slide with Plot
```{r pressure}
plot(pressure)
```

3267
presentation.html Normal file

File diff suppressed because one or more lines are too long