From f0f757edad85f96e9d21751322c6cc8254d10be5 Mon Sep 17 00:00:00 2001 From: Jan Benda Date: Wed, 18 Dec 2019 09:25:53 +0100 Subject: [PATCH] [simulations] exercise for normal data --- simulations/code/normaldata.m | 14 +++++++ simulations/code/normaldata.out | 31 ++++++++++++++ simulations/lecture/simulations.tex | 63 ++++++++++++++++++++--------- 3 files changed, 88 insertions(+), 20 deletions(-) create mode 100644 simulations/code/normaldata.m create mode 100644 simulations/code/normaldata.out diff --git a/simulations/code/normaldata.m b/simulations/code/normaldata.m new file mode 100644 index 0000000..d30db7c --- /dev/null +++ b/simulations/code/normaldata.m @@ -0,0 +1,14 @@ +randn(1, 3) +randn(3, 1) +randn(2, 4) + +mu = 220.0; % mean and ... +sigma = 30.0; % ... standard deviation of the tigers in kg + +for n = [100, 10000] + fprintf('\nn=%d:\n', n) + for i = 1:5 + x = sigma*randn(n, 1) + mu; % weights of n tigers + fprintf(' m=%3.0fkg, std=%3.0fkg\n', mean(x), std(x)) + end +end diff --git a/simulations/code/normaldata.out b/simulations/code/normaldata.out new file mode 100644 index 0000000..5643b24 --- /dev/null +++ b/simulations/code/normaldata.out @@ -0,0 +1,31 @@ +>> normaldata + +ans = + + -0.89120 1.19863 0.95487 + +ans = + + -1.10001 + 0.79473 + 0.85979 + +ans = + + -1.19206 0.58278 1.70286 -1.28122 + -0.19966 -1.85623 0.17962 -0.19272 + + +n=100: + m=218kg, std= 31kg + m=227kg, std= 29kg + m=224kg, std= 28kg + m=214kg, std= 26kg + m=219kg, std= 30kg + +n=10000: + m=220kg, std= 30kg + m=220kg, std= 30kg + m=220kg, std= 30kg + m=220kg, std= 30kg + m=220kg, std= 30kg diff --git a/simulations/lecture/simulations.tex b/simulations/lecture/simulations.tex index 2fe0ad0..762bcf1 100644 --- a/simulations/lecture/simulations.tex +++ b/simulations/lecture/simulations.tex @@ -13,40 +13,58 @@ data sets. With simulated data we can also test our own analysis functions. More importantly, by means of simulations we can explore possible outcomes of our planned experiments before we even started the experiment or we can explore possible results for regimes that we -cannot test experimentally. How dynamical systems, like predator-prey -interactions or the activity of neurons, evolve in time is a central -application for simulations. Only with the availability of computers -in the second half of the twentieth century was the exciting field of -nonlinear dynamical systems pushed forward. Conceptually, many kinds +cannot test experimentally. How dynamical systems, like for example +predator-prey interactions or the activity of neurons, evolve in time +is a central application for simulations. Computers becoming available +from the second half of the twentieth century on pushed the exciting +field of nonlinear dynamical systems forward. Conceptually, many kinds of simulations are very simple and are implemented in a few lines of code. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Univariate data} -The most basic simulation is to draw random numbers from a given -distribution. This simulates repeated measurements of some quantity -(e.g., weight of tigers or firing rate of a neuron). That is we take -samples from a statistical population. Doing so we must specify from -which probability distribution the data should originate from and what -are the parameters (i.e. mean, standard deviation, ...) of that -distribution. - -For drawing numbers from a normal distribution we use the +The most basic type of simulation is to draw random numbers from a +given distribution like, for example, the normal distribution. This +simulates repeated measurements of some quantity (e.g., weight of +tigers or firing rate of neurons). Doing so we must specify from which +probability distribution the data should originate from and what are +the parameters (mean, standard deviation, shape parameters, etc.) +that distribution. + +For drawing numbers $x_i$ from a normal distribution we use the \code{randn()} function. This function returns normally distributed -numbers with zero mean and unit standard deviation. For changing the -standard deviation we need to multiply the returned data values with -the required standard deviation. For changing the mean we just add the -desired mean to the random numbers. +numbers $\xi_i$ with zero mean and unit standard deviation. For +changing the standard deviation $\sigma$ we need to multiply the +returned data values with the required standard deviation. For +changing the mean we just add the desired mean $\mu$ to the random +numbers: \begin{equation} - x_i = \mu + \sigma \xi_i + x_i = \sigma \xi_i + \mu \end{equation} +\begin{exercise}{normaldata.m}{normaldata.out} + First, read the documentation of the \varcode{randn()} function and + check its output for a some (small) input arguments. Write a little + script that generates $n=100$ normally distributed data simulating + the weight of Bengal tiger males with mean 220\,kg and standard + deviation 30\,kg. Check the actual mean and standard deviation of + the generated data. Do this, let's say, five times using a + for-loop. Then increase $n$ to 10\,000 and run the code again. It is + so simple to measure the weight of 10\,000 tigers for getting a + really good estimate of their mean weight, isn't it? +\end{exercise} + +Other pdfs (rand(), gamma). +randi() -draw (and plot) random numbers +plot random numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Static nonlinearities} + +Example: mechanotransduciton! + draw (and plot) random functions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -55,6 +73,11 @@ draw (and plot) random functions \begin{itemize} \item euler forward, odeint \item introduce derivatives which are also needed for fitting (move box from there here) +\item Passive membrane +\item Add passive membrane to mechanotransduction! +\item Integrate and fire +\item Fitzugh-Nagumo +\item Two coupled neurons? Predator-prey? \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%