Skip to content

Instantly share code, notes, and snippets.

@vankesteren
vankesteren / triangulation.R
Created March 26, 2020 09:23
Delaunay triangulation and voronoi tesselation
library(deldir)
library(ggplot2)
library(firatheme)
N <- 40
dat <- matrix(rnorm(N*2), N)
dat <- dat %*% chol(matrix(c(1, 0, 0, 1.5), 2)) %*% chol(solve(cov(dat)))
dat2 <- deldir(dat[,1], dat[,2])
dat1 <- data.frame(dat)
colnames(dat1) <- c("x1", "y1")
@vankesteren
vankesteren / bag_wfs.R
Created November 6, 2020 12:12
bag wfs query verblijfsobjecten
library(sf)
library(httr)
library(tidyverse)
url <- parse_url("https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1")
postcode_filter <- function(postcode, gebruiksdoel = "woonfunctie") {
sprintf(
"<Filter>
@vankesteren
vankesteren / conditional_idw.R
Created November 10, 2020 15:53
Conditional inverse distance weighted smoothing
library(tidyverse)
library(sf)
library(osmdata)
library(osmenrich)
library(patchwork)
# conditional IDW functions
conditional_idw <- function(formula, data, p = 1, max.iter = 100, tol = 1e-10) {
@vankesteren
vankesteren / rtrunc.R
Created December 9, 2020 15:46
Truncated sampling from any distribution in R (also works with pipes!)
rtrunc <- function(rdist, min, max) {
# deal with pipe and also with normal evaluation
# https://github.com/tidyverse/magrittr/issues/115#issuecomment-173894787
parents <- lapply(sys.frames(), parent.env)
is_magrittr_env <- vapply(parents, identical, logical(1), y = environment(`%>%`))
if (any(is_magrittr_env)) {
distcall <- get("lhs", sys.frames()[[base::max(which(is_magrittr_env))]])
} else {
distcall <- substitute(rdist)
}
@vankesteren
vankesteren / gierzwaluw.R
Created February 15, 2021 10:53
Gierzwaluw in Utrecht analysis with osmenrich
# Gierzwaluw (common swift) analysis using osmenrich
# Last edited 2021-02-09 by @vankesteren
# CC-BY ODISSEI SoDa team
# Packages
# Data
library(tidyverse)
library(sf)
library(osmenrich)
@vankesteren
vankesteren / meuse_kriging.R
Last active September 14, 2021 12:00
Meuse data universal kriging with OpenStreetMaps enrichment
# Meuse universal kriging for a large grid
# The grid is enriched with osm data
# CC-BY @vankesteren
# load packages ----
library(tidyverse)
library(sf)
library(ggspatial)
library(osmdata)
library(gstat)
@vankesteren
vankesteren / intransitivity_mc.R
Last active May 7, 2021 08:29
Bayesian monte carlo test for partial intransitivity
# Bayesian test for partial intransitivity using monte-carlo posterior approximation
# (c) Erik-Jan van Kesteren, 2021
# Based on an e-mail discussion with Tony Marley
library(expm)
library(tidyverse)
# Beta prior (1, 1 means uniform)
prior_a <- 1
prior_b <- 1
kmedoids <- function(X, K, max_iter = 100) {
X <- as.matrix(X)
N <- nrow(X)
P <- ncol(X)
C <- matrix(0, nrow = K, ncol = P)
clus <- sample(K, N, replace = TRUE)
converged <- FALSE
iter <- 0
while (!converged && iter < max_iter) {
old_clus <- clus
@vankesteren
vankesteren / em_mixture.R
Last active October 25, 2022 13:10
Unidimensional gaussian mixture modeling using EM
# gaussian mixture modeling with EM
priorp <- 0.6
m1 <- 0
m2 <- 2
s1 <- 1
s2 <- 0.707
# generate some data with 2 classes
N <- 1000
cl <- rbinom(N, 1, priorp)
@vankesteren
vankesteren / tensorsem_lavpredict.R
Last active November 8, 2021 19:01
creating a lavaan object for using in lavPredict from a tensorsem parameter table
# lavPredict from tensorsem parameters
library(lavaan)
library(tensorsem)
mod <- "
# three-factor model
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
"