-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtoydata.r
65 lines (61 loc) · 2.04 KB
/
toydata.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
stopifnot(require(boot)) # bootstrapping
#stopifnot(require(ape)) # minimum spanning tree
#stopifnot(require(abind)) # multidimensional arrays
###########################
# #
# CREATE TOY ENSEMBLE AND #
# VERIFICATION #
# #
###########################
GenerateToyData <- function(mu.ens=0, sd.ens=1,
mu.ver=0, sd.ver=1,
mu.ref=NA, sd.ref=NA,
K=10, K.ref=10, N=100)
#
# Generate artificial Gaussian ensemble data and verifications
#
# Usage:
# td <- GenerateToyData()
#
# Arguments:
#
# N ... number of instances
# K ... number of ensemble members of `ens`
# K.ref ... number of ensemble members of `ens.ref`
# mu.ver, sd.ver ... means and variances of the verification
# mu.ens, sd.ens ... means and variances of the ensemble
# mu.ref, sd.ref ... means and variances of the reference ensemble
#
# Return value:
# * a list containing two or three objects, depending on whether any of `mu.ref` or `sd.ref` is NA:
# + ver ... a vector of Gaussian variables drawn from N(mu.ver, sd.ver)
# + ens ... a N*K matrix, each row is an ensemble drawn from N(mu.ens, sd.ens)
# + ens.ref ... a N*K.ref matrix, each row is an ensemble drawn from
# N(mu.ref, sd.ref); only returned if neither of mu.ref and sd.ref is NA
#
# Author:
# Stefan Siegert
# October 2013
#
# Example:
# mu.ver <- runif(100)
# mu.ens <- mu.ver + runif(100, -0.1, .1)
# mu.ref <- mu.ver + runif(100, -0.2, .2)
# td <- GenerateToyData(mu.ver=mu.ver, mu.ens=mu.ens, mu.ref=mu.ref,
# sd.ref=1, K=10, K.ref=10)
#
#
{
if (is.na(mu.ref) | is.na(sd.ref)) {
l <- list(
ens = matrix(rnorm(N*K, mu.ens, sd.ens), N, K),
ver = rnorm(N, mu.ver, sd.ver))
} else {
l <- list(
ens = matrix(rnorm(N*K, mu.ens, sd.ens), N, K),
ens.ref = matrix(rnorm(N*K.ref, mu.ref, sd.ref), N, K.ref),
ver = rnorm(N, mu.ver, sd.ver))
}
return(l)
}