From 2fbbf04e98365eccb59daad386384c626f2cb40f Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Tue, 19 Nov 2019 19:58:54 +0100 Subject: [PATCH] stubs for plotting exercise --- likelihood/lecture/likelihood.tex | 2 +- plotting/exercises/UT_WBMW_Black_RGB.pdf | Bin 0 -> 31288 bytes plotting/exercises/exercises.tex | 213 ++++++++++++++ plotting/exercises/instructions.tex | 41 +++ plotting/exercises/plotting_exercise.py | 74 +++++ .../lecture/pointprocessscetchA.eps | 105 ++++--- .../lecture/pointprocessscetchA.pdf | Bin 2790 -> 2791 bytes .../lecture/pointprocessscetchB.eps | 260 ++++++++++++------ .../lecture/pointprocessscetchB.pdf | Bin 4698 -> 4724 bytes 9 files changed, 574 insertions(+), 121 deletions(-) create mode 100644 plotting/exercises/UT_WBMW_Black_RGB.pdf create mode 100644 plotting/exercises/exercises.tex create mode 100644 plotting/exercises/instructions.tex create mode 100644 plotting/exercises/plotting_exercise.py diff --git a/likelihood/lecture/likelihood.tex b/likelihood/lecture/likelihood.tex index 7a39a77..dd1f695 100644 --- a/likelihood/lecture/likelihood.tex +++ b/likelihood/lecture/likelihood.tex @@ -211,7 +211,7 @@ cost function, e.g. the gradient descent \matlabfun{lsqcurvefit()}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Fits von Wahrscheinlichkeitsverteilungen} +\section{Fitting probability distributions} Finally let's consider the case in which we want to fit the parameters of a probability density function (e.g. the shape parameter of a \enterm{Gamma-distribution}) to a dataset. diff --git a/plotting/exercises/UT_WBMW_Black_RGB.pdf b/plotting/exercises/UT_WBMW_Black_RGB.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9aed92162b1d4345d994cfd0b8d70be762fbec97 GIT binary patch literal 31288 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 E0Y45+F8}}l literal 0 HcmV?d00001 diff --git a/plotting/exercises/exercises.tex b/plotting/exercises/exercises.tex new file mode 100644 index 0000000..ca715f5 --- /dev/null +++ b/plotting/exercises/exercises.tex @@ -0,0 +1,213 @@ +\documentclass[12pt,a4paper,pdftex]{exam} + +\usepackage[german]{babel} +\usepackage{pslatex} +\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro +\usepackage{xcolor} +\usepackage{graphicx} +\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref} + +%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} +\pagestyle{headandfoot} +\ifprintanswers +\newcommand{\stitle}{: Solutions} +\else +\newcommand{\stitle}{} +\fi +\header{{\bfseries\large Exercise 12\stitle}}{{\bfseries\large Maximum likelihood}}{{\bfseries\large January 7th, 2019}} +\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email: +jan.benda@uni-tuebingen.de} +\runningfooter{}{\thepage}{} + +\setlength{\baselineskip}{15pt} +\setlength{\parindent}{0.0cm} +\setlength{\parskip}{0.3cm} +\renewcommand{\baselinestretch}{1.15} + +%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{listings} +\lstset{ + language=Matlab, + basicstyle=\ttfamily\footnotesize, + numbers=left, + numberstyle=\tiny, + title=\lstname, + showstringspaces=false, + commentstyle=\itshape\color{darkgray}, + breaklines=true, + breakautoindent=true, + columns=flexible, + frame=single, + xleftmargin=1em, + xrightmargin=1em, + aboveskip=10pt +} + +%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{bm} +\usepackage{dsfont} +\newcommand{\naZ}{\mathds{N}} +\newcommand{\gaZ}{\mathds{Z}} +\newcommand{\raZ}{\mathds{Q}} +\newcommand{\reZ}{\mathds{R}} +\newcommand{\reZp}{\mathds{R^+}} +\newcommand{\reZpN}{\mathds{R^+_0}} +\newcommand{\koZ}{\mathds{C}} + +%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\continue}{\ifprintanswers% +\else +\vfill\hspace*{\fill}$\rightarrow$\newpage% +\fi} +\newcommand{\continuepage}{\ifprintanswers% +\newpage +\else +\vfill\hspace*{\fill}$\rightarrow$\newpage% +\fi} +\newcommand{\newsolutionpage}{\ifprintanswers% +\newpage% +\else +\fi} + +%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\qt}[1]{\textbf{#1}\\} +\newcommand{\pref}[1]{(\ref{#1})} +\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}} +\newcommand{\code}[1]{\texttt{#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\input{instructions} + + +\begin{questions} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\question \qt{Maximum likelihood of the standard deviation} +Let's compute the likelihood and the log-likelihood for the estimation +of the standard deviation. +\begin{parts} + \part Draw $n=50$ random numbers from a normal distribution with + mean $\mu=3$ and standard deviation $\sigma=2$. + + \part Plot the likelihood (computed as the product of probabilities) + and the log-likelihood (sum of the logarithms of the probabilities) + as a function of the standard deviation. Compare the position of the + maxima with the standard deviation that you compute directly from + the data. + + \part Increase $n$ to 1000. What happens to the likelihood, what + happens to the log-likelihood? Why? +\end{parts} +\begin{solution} + \lstinputlisting{mlestd.m} + \includegraphics[width=1\textwidth]{mlestd}\\ + + The more data the smaller the product of the probabilities ($\approx + p^n$ with $0 \le p < 1$) and the smaller the sum of the logarithms + of the probabilities ($\approx n\log p$, note that $\log p < 0$). + + The product eventually gets smaller than the precision of the + floating point numbers support. Therefore for $n=1000$ the products + becomes zero. Using the logarithm avoids this numerical problem. +\end{solution} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\question \qt{Maximum-likelihood estimator of a line through the origin} +In the lecture we derived the following equation for an +maximum-likelihood estimate of the slope $\theta$ of a straight line +through the origin fitted to $n$ pairs of data values $(x_i|y_i)$ with +standard deviation $\sigma_i$: +\[\theta = \frac{\sum_{i=1}^n \frac{x_i y_i}{\sigma_i^2}}{ \sum_{i=1}^n + \frac{x_i^2}{\sigma_i^2}} \] +\begin{parts} + \part \label{mleslopefunc} Write a function that takes two vectors + $x$ and $y$ containing the data pairs and returns the slope, + computed according to this equation. For simplicity we assume + $\sigma_i=\sigma$ for all $1 \le i \le n$. How does this simplify + the equation for the slope? + \begin{solution} + \lstinputlisting{mleslope.m} + \end{solution} + + \part Write a script that generates data pairs that scatter around a + line through the origin with a given slope. Use the function from + \pref{mleslopefunc} to compute the slope from the generated data. + Compare the computed slope with the true slope that has been used to + generate the data. Plot the data togehther with the line from which + the data were generated and the maximum-likelihood fit. + \begin{solution} + \lstinputlisting{mlepropfit.m} + \includegraphics[width=1\textwidth]{mlepropfit} + \end{solution} + + \part \label{mleslopecomp} Vary the number of data pairs, the slope, + as well as the variance of the data points around the true + line. Under which conditions is the maximum-likelihood estimation of + the slope closer to the true slope? + + \part To answer \pref{mleslopecomp} more precisely, generate for + each condition let's say 1000 data sets and plot a histogram of the + estimated slopes. How does the histogram, its mean and standard + deviation relate to the true slope? +\end{parts} +\begin{solution} + \lstinputlisting{mlepropest.m} + \includegraphics[width=1\textwidth]{mlepropest}\\ + The estimated slopes are centered around the true slope. The + standard deviation of the estimated slopes gets smaller for larger + $n$ and less noise in the data. +\end{solution} + +\continue +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\question \qt{Maximum-likelihood-estimation of a probability-density function} +Many probability-density functions have parameters that cannot be +computed directly from the data, like, for example, the mean of +normally-distributed data. Such parameter need to be estimated by +means of the maximum-likelihood from the data. + +Let us demonstrate this approach by means of data that are drawn from a +gamma distribution, +\begin{parts} + \part Find out which \code{matlab} function computes the + probability-density function of the gamma distribution. + + \part \label{gammaplot} Use this function to plot the + probability-density function of the gamma distribution for various + values of the (positive) ``shape'' parameter. Wet set the ``scale'' + parameter to one. + + \part Find out which \code{matlab} function generates random numbers + that are distributed according to a gamma distribution. Generate + with this function 50 random numbers using one of the values of the + ``shape'' parameter used in \pref{gammaplot}. + + \part Compute and plot a properly normalized histogram of these + random numbers. + + \part Find out which \code{matlab} function fit a distribution to a + vector of random numbers according to the maximum-likelihood method. + How do you need to use this function in order to fit a gamma + distribution to the data? + + \part Estimate with this function the parameter of the gamma + distribution used to generate the data. + + \part Finally, plot the fitted gamma distribution on top of the + normalized histogram of the data. +\end{parts} +\begin{solution} + \lstinputlisting{mlepdffit.m} + \includegraphics[width=1\textwidth]{mlepdffit} +\end{solution} + +\end{questions} + +\end{document} \ No newline at end of file diff --git a/plotting/exercises/instructions.tex b/plotting/exercises/instructions.tex new file mode 100644 index 0000000..7fe599d --- /dev/null +++ b/plotting/exercises/instructions.tex @@ -0,0 +1,41 @@ +\vspace*{-8ex} +\begin{center} +\textbf{\Large Introduction to scientific computing}\\[1ex] +{\large Jan Grewe, Jan Benda}\\[-3ex] +Neuroethology lab \hfill --- \hfill Institute for Neurobiology \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\ +\end{center} + +% \ifprintanswers% +% \else + +% % Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und +% % Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost +% % werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files) +% % im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen +% % ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig +% % voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: +% % ``variablen\_datentypen\_\{nachname\}.m'' benannt werden +% % (z.B. variablen\_datentypen\_mueller.m). + +% \begin{itemize} +% \item \"Uberzeuge dich von jeder einzelnen Zeile deines Codes, dass +% sie auch wirklich das macht, was sie machen soll! Teste dies mit +% kleinen Beispielen direkt in der Kommandozeile. +% \item Versuche die L\"osungen der Aufgaben m\"oglichst in +% sinnvolle kleine Funktionen herunterzubrechen. +% Sobald etwas \"ahnliches mehr als einmal berechnet werden soll, +% lohnt es sich eine Funktion daraus zu schreiben! +% \item Teste rechenintensive \code{for} Schleifen, Vektoren, Matrizen +% zuerst mit einer kleinen Anzahl von Wiederholungen oder kleiner +% Gr\"o{\ss}e, und benutze erst am Ende, wenn alles \"uberpr\"uft +% ist, eine gro{\ss}e Anzahl von Wiederholungen oder Elementen, um eine gute +% Statistik zu bekommen. +% \item Benutze die Hilfsfunktion von \code{matlab} (\code{help +% commando} oder \code{doc commando}) und das Internet, um +% herauszufinden, wie bestimmte \code{matlab} Funktionen zu verwenden +% sind und was f\"ur M\"oglichkeiten sie bieten. +% Auch zu inhaltlichen Konzepten bietet das Internet oft viele +% Antworten! +% \end{itemize} + +% \fi diff --git a/plotting/exercises/plotting_exercise.py b/plotting/exercises/plotting_exercise.py new file mode 100644 index 0000000..c076834 --- /dev/null +++ b/plotting/exercises/plotting_exercise.py @@ -0,0 +1,74 @@ +import numpy as np +import matplotlib.pyplot as plt +import scipy.io as scio +from IPython import embed + +def boltzmann(x, y_max, slope, inflection): + """ + The underlying Boltzmann function. + .. math:: + f(x) = y_max / \exp{-slope*(x-inflection} + + :param x: The x values. + :param y_max: The maximum value. + :param slope: The slope parameter k + :param inflection: the position of the inflection point. + :return: the y values. + """ + y = y_max / (1 + np.exp(-slope * (x - inflection))) + return y + + +class Animal(object): + + def __init__(self, delay, learning_rate, volatility, responsiveness): + """ + :param delay: + :param learning_rate: delta percent_correct per session + :param volatility: 0 -> 1 the noise in the decision + :param responsiveness: 0 -> 1 probability of actually conducting a trial + """ + self.__delay = delay + self.__learning_rate = learning_rate + self.__volatility = volatility + self.__responsiveness = responsiveness + + def simulate(self, session_count=10, trials=20, task_difficulties=[]): + tasks = 1 if len(task_difficulties) == 0 else len(task_difficulties) + if len(task_difficulties) == 0: + task_difficulties = [0] + avg_perf = np.zeros((session_count, tasks)) + err_perf = np.zeros((session_count, tasks)) + trials_performed = np.zeros(session_count) + for i in range(session_count): + for j in range(tasks): + base_performance = boltzmann(i, 1.0, self.__learning_rate/20, self.__delay) + penalty = base_performance * task_difficulties[j] * 0.5 + base_perf = 50 + 50 * (base_performance - penalty) + trials_completed = np.random.rand(trials) < self.__responsiveness + performances = np.random.randn(trials) * self.__volatility * 100 + base_perf + avg_perf[i, j] = np.mean(performances[trials_completed]) + err_perf[i, j] = np.std(performances[trials_completed]) + trials_performed = np.sum(trials_completed) + return avg_perf, err_perf, trials_performed + + +if __name__ == "__main__": + + session_count = 30 + task_difficulties = [0, 0.3, 1.] + + delays = [5, 10, 12, 20] + learning_rates = np.array([5, 10, 2, 20]) + volatilities = np.random.rand(4) * 0.5 + responsivness = np.random.rand(4) * 0.5 + 0.5 + + for i in range(len(delays)): + d = delays[i] + lr = learning_rates[i] + v = volatilities[i], + r = responsivness[i] + a = Animal(d, lr, v, r) + ap, ep, tp = a.simulate(session_count=session_count, task_difficulties=[0, 0.3, 0.6]) + plt.plot(ap) + embed() \ No newline at end of file diff --git a/pointprocesses/lecture/pointprocessscetchA.eps b/pointprocesses/lecture/pointprocessscetchA.eps index 47de7b9..67a0c1b 100644 --- a/pointprocesses/lecture/pointprocessscetchA.eps +++ b/pointprocesses/lecture/pointprocessscetchA.eps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: pointprocessscetchA.tex -%%Creator: gnuplot 4.6 patchlevel 4 -%%CreationDate: Mon Nov 26 17:57:49 2018 +%%Creator: gnuplot 5.0 patchlevel 6 +%%CreationDate: Thu Oct 17 14:13:46 2019 %%DocumentFonts: %%BoundingBox: 50 50 373 135 %%EndComments @@ -18,6 +18,7 @@ gnudict begin /Dashlength 1 def /Landscape false def /Level1 false def +/Level3 false def /Rounded true def /ClipToBoundingBox false def /SuppressPDFMark false def @@ -29,11 +30,11 @@ gnudict begin % /vshift -73 def /dl1 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if } def /dl2 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul add } if } def /hpt_ 31.5 def @@ -47,7 +48,7 @@ gnudict begin } if } def % -% Gnuplot Prolog Version 4.6 (September 2012) +% Gnuplot Prolog Version 5.1 (Oct 2015) % %/SuppressPDFMark true def % @@ -64,11 +65,11 @@ gnudict begin /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def /DL {Color {setrgbcolor Solid {pop []} if 0 setdash} @@ -82,7 +83,7 @@ gnudict begin /PL {stroke userlinewidth setlinewidth Rounded {1 setlinejoin 1 setlinecap} if} def 3.8 setmiterlimit -% Default Line colors +% Classic Line colors (version 5.0) /LCw {1 1 1} def /LCb {0 0 0} def /LCa {0 0 0} def @@ -95,19 +96,21 @@ gnudict begin /LC6 {0 0 0} def /LC7 {1 0.3 0} def /LC8 {0.5 0.5 0.5} def -% Default Line Types +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def /LTw {PL [] 1 setgray} def -/LTb {BL [] LCb DL} def +/LTb {PL [] LCb DL} def /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def /LT0 {PL [] LC0 DL} def -/LT1 {PL [4 dl1 2 dl2] LC1 DL} def -/LT2 {PL [2 dl1 3 dl2] LC2 DL} def -/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def -/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def -/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def -/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def -/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def -/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def /Dia {stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V @@ -329,9 +332,14 @@ gnudict begin % /languagelevel where {pop languagelevel} {1} ifelse - 2 lt - {/InterpretLevel1 true def} - {/InterpretLevel1 Level1 def} +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } ifelse % % PostScript level 2 pattern fill definitions @@ -420,6 +428,7 @@ Level1 {Level1PatternFill} {Level2PatternFill} ifelse /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop +% Level1 SuppressPDFMark or {} { /SDict 10 dict def @@ -429,14 +438,42 @@ systemdict /pdfmark known not { SDict begin [ /Title (pointprocessscetchA.tex) /Subject (gnuplot plot) - /Creator (gnuplot 4.6 patchlevel 4) - /Author (benda) + /Creator (gnuplot 5.0 patchlevel 6) + /Author (grewe) % /Producer (gnuplot) % /Keywords () - /CreationDate (Mon Nov 26 17:57:49 2018) + /CreationDate (Thu Oct 17 14:13:46 2019) /DOCINFO pdfmark end } ifelse +% +% Support for boxed text - Ethan A Merritt May 2005 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { Boxing + { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox 1 1 1 setrgbcolor fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +% redundant definitions for compatibility with prologue.ps older than 5.0.2 +/LTB {BL [] LCb DL} def +/LTb {PL [] LCb DL} def end %%EndProlog %%Page: 1 1 @@ -450,10 +487,9 @@ newpath 2.000 UL LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 1.000 UP -LTb LCb setrgbcolor -LTb 1.000 UL LTb gsave 6208 824 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill @@ -467,9 +503,11 @@ gsave 6208 824 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill stroke 2.000 UL LTb -0.00 0.00 0.00 C 10.000 UL -LT0 -LC0 setrgbcolor +0.00 0.00 0.00 C % Begin plot #1 +10.000 UL +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 910 573 M 0 503 V 1412 573 M @@ -488,11 +526,16 @@ LC0 setrgbcolor 0 503 V 5685 573 M 0 503 V -1.000 UP stroke +LTw +% End plot #1 2.000 UL LTb LCb setrgbcolor +[] 0 setdash +1.000 UP +2.000 UL +LTb 0.00 0.00 0.00 C stroke grestore end diff --git a/pointprocesses/lecture/pointprocessscetchA.pdf b/pointprocesses/lecture/pointprocessscetchA.pdf index 85e1c44c4b87f335e0f3f95feedfc52429be9f51..cb30829dcdb16889f5152b43117a14c2b0e1229c 100644 GIT binary patch delta 797 zcmaDR`doB^N4+=SAp;(l?{=;J0y)nw7cedH(#hy=a8bRY*T8yRy>qS5HjOSL1F-iW$#~7;Jd3?2^3jI@e_nl1_(9Puz2Q+C7I;N2K?hu3$U1 z@y_nAe#`$?tNwkHY0-RTzf+Hf<PD1}n^--FQYXu%MwGfVwzI71MXBYfn=RP;8Qsk_x%8cjQWHxu^YdI1 zOHwsJzVJ^jQ7|-DfO$~C$iUDNsLnS(1+2uy3M61?U}$b=VrUEr06tE0Oh1NlDnjg< zT+L}HYNh}Rd;^6%1uihdz{tqJa`Hh=VNr8*83QA8^T{tc)om>>WK4|>FvZLbF~rOa z3?}<>*~FR~7&%#3SQuJZIJvkP8X1|oxELB5xVag*8d;hcTDaKR5L6M%WoO4#T#{H+ VQc;we#${w;Y{8|f>gw;t1ppu|^dA5K delta 810 zcmaDZ`b>0!N4+B#lOd1mcS~2lfZIz>UJ>SK;y$j-!FS?}Q*1@;a$kwpVO}r)|5x45 z-=mng=J@^BOuGvYykylq`kZA>(y=)l;*2W$;e&ME*)9yKZ;FaN;r|__F zZ+X5f|Nrfi{=JE;U|dz7D!61(_Tfug3S#9J<$CW3qyq{rO)@WSAApRYkJs`=!X%)X4KljYe|iBet9VlNCbN!Q3M#L(Qz z)ZEI%Qrp0A@<-7hK5FFhUTW`kO1K4G{^K~7^fn{uE{l= zhPI{(pujg!$W!0~GYpK33@p&a3``8nFvN_^%_hI%RJS$9kTEr~#1u0(z!bBzob1PC z6KiH-;Nom-X5wh*Vq#|MWMpP+>||`4ogG(kNn%k+MNw)R QmywCFIhU%ctG^o;0P4{4ivR!s diff --git a/pointprocesses/lecture/pointprocessscetchB.eps b/pointprocesses/lecture/pointprocessscetchB.eps index 67d5c37..a04b551 100644 --- a/pointprocesses/lecture/pointprocessscetchB.eps +++ b/pointprocesses/lecture/pointprocessscetchB.eps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 %%Title: pointprocessscetchB.tex -%%Creator: gnuplot 4.6 patchlevel 4 -%%CreationDate: Mon Nov 26 17:57:49 2018 +%%Creator: gnuplot 5.0 patchlevel 6 +%%CreationDate: Thu Oct 17 14:13:46 2019 %%DocumentFonts: %%BoundingBox: 50 50 373 237 %%EndComments @@ -18,6 +18,7 @@ gnudict begin /Dashlength 1 def /Landscape false def /Level1 false def +/Level3 false def /Rounded true def /ClipToBoundingBox false def /SuppressPDFMark false def @@ -29,11 +30,11 @@ gnudict begin % /vshift -73 def /dl1 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if } def /dl2 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul add } if } def /hpt_ 31.5 def @@ -47,7 +48,7 @@ gnudict begin } if } def % -% Gnuplot Prolog Version 4.6 (September 2012) +% Gnuplot Prolog Version 5.1 (Oct 2015) % %/SuppressPDFMark true def % @@ -64,11 +65,11 @@ gnudict begin /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def /DL {Color {setrgbcolor Solid {pop []} if 0 setdash} @@ -82,7 +83,7 @@ gnudict begin /PL {stroke userlinewidth setlinewidth Rounded {1 setlinejoin 1 setlinecap} if} def 3.8 setmiterlimit -% Default Line colors +% Classic Line colors (version 5.0) /LCw {1 1 1} def /LCb {0 0 0} def /LCa {0 0 0} def @@ -95,19 +96,21 @@ gnudict begin /LC6 {0 0 0} def /LC7 {1 0.3 0} def /LC8 {0.5 0.5 0.5} def -% Default Line Types +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def /LTw {PL [] 1 setgray} def -/LTb {BL [] LCb DL} def +/LTb {PL [] LCb DL} def /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def /LT0 {PL [] LC0 DL} def -/LT1 {PL [4 dl1 2 dl2] LC1 DL} def -/LT2 {PL [2 dl1 3 dl2] LC2 DL} def -/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def -/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def -/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def -/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def -/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def -/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def /Dia {stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V @@ -329,9 +332,14 @@ gnudict begin % /languagelevel where {pop languagelevel} {1} ifelse - 2 lt - {/InterpretLevel1 true def} - {/InterpretLevel1 Level1 def} +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } ifelse % % PostScript level 2 pattern fill definitions @@ -420,6 +428,7 @@ Level1 {Level1PatternFill} {Level2PatternFill} ifelse /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop +% Level1 SuppressPDFMark or {} { /SDict 10 dict def @@ -429,14 +438,42 @@ systemdict /pdfmark known not { SDict begin [ /Title (pointprocessscetchB.tex) /Subject (gnuplot plot) - /Creator (gnuplot 4.6 patchlevel 4) - /Author (benda) + /Creator (gnuplot 5.0 patchlevel 6) + /Author (grewe) % /Producer (gnuplot) % /Keywords () - /CreationDate (Mon Nov 26 17:57:49 2018) + /CreationDate (Thu Oct 17 14:13:46 2019) /DOCINFO pdfmark end } ifelse +% +% Support for boxed text - Ethan A Merritt May 2005 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { Boxing + { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox 1 1 1 setrgbcolor fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% +% redundant definitions for compatibility with prologue.ps older than 5.0.2 +/LTB {BL [] LCb DL} def +/LTb {PL [] LCb DL} def end %%EndProlog %%Page: 1 1 @@ -450,10 +487,9 @@ newpath 2.000 UL LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 1.000 UP -LTb LCb setrgbcolor -LTb 1.000 UL LTb gsave 6208 3165 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill @@ -467,9 +503,11 @@ gsave 6208 3165 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill stroke 2.000 UL LTb -0.00 0.00 0.00 C 10.000 UL -LT0 -LC0 setrgbcolor +0.00 0.00 0.00 C % Begin plot #1 +10.000 UL +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 910 3029 M 0 272 V 502 -272 R @@ -488,18 +526,22 @@ LC0 setrgbcolor 0 272 V 5685 3029 M 0 272 V -1.000 UP stroke +LTw +% End plot #1 2.000 UL LTb LCb setrgbcolor +[] 0 setdash +1.000 UP +2.000 UL +LTb 0.00 0.00 0.00 C 2.000 UL LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 1.000 UP -LTb LCb setrgbcolor -LTb 1.000 UL LTb gsave 6208 2043 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill @@ -510,76 +552,86 @@ gsave 6208 2043 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill 0 -32 V -5680 0 R 5680 0 V +stroke 1291 1929 M 121 32 V -121 32 V --260 -64 R --121 32 V -121 32 V -910 1961 M +-260 0 R +910 1961 L +121 -32 V +-121 32 R 502 0 V -590 -32 R +stroke +2002 1929 M 121 32 V -121 32 V --469 -64 R --121 32 V -121 32 V --121 -32 R +-469 0 R +-121 -32 V +121 -32 V +-121 32 R 711 0 V -206 -22 R +stroke +2329 1939 M 84 22 V -84 22 V --122 -44 R --84 22 V -84 22 V --84 -22 R +-122 0 R +-84 -22 V +84 -22 V +-84 22 R 290 0 V -216 -23 R +stroke +2629 1938 M 88 23 V -88 23 V --128 -46 R --88 23 V -88 23 V --88 -23 R +-128 0 R +-88 -23 V +88 -23 V +-88 23 R 304 0 V -329 -32 R +stroke +3046 1929 M 121 32 V -121 32 V --208 -64 R --121 32 V -121 32 V --121 -32 R +-208 0 R +-121 -32 V +121 -32 V +-121 32 R 450 0 V -745 -32 R +stroke +3912 1929 M 121 32 V -121 32 V --624 -64 R --121 32 V -121 32 V --121 -32 R +-624 0 R +-121 -32 V +121 -32 V +-121 32 R 866 0 V -496 -32 R +stroke +4529 1929 M 121 32 V -121 32 V --375 -64 R --121 32 V -121 32 V --121 -32 R +-375 0 R +-121 -32 V +121 -32 V +-121 32 R 617 0 V -914 -32 R +stroke +5564 1929 M 121 32 V -121 32 V --793 -64 R --121 32 V -121 32 V --121 -32 R +-793 0 R +-121 -32 V +121 -32 V +-121 32 R 1035 0 V stroke 2.000 UL LTb -0.00 0.00 0.00 C 10.000 UL -LT0 -LC0 setrgbcolor +0.00 0.00 0.00 C % Begin plot #1 +10.000 UL +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 910 1907 M 0 272 V 502 -272 R @@ -598,47 +650,60 @@ LC0 setrgbcolor 0 272 V 5685 1907 M 0 272 V -1.000 UP stroke +LTw +% End plot #1 2.000 UL LTb LCb setrgbcolor +[] 0 setdash +1.000 UP +2.000 UL +LTb 0.00 0.00 0.00 C 2.000 UL LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 268 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 460 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 652 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 844 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 1036 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 1228 M -63 0 V stroke LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 2.000 UL LTb LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 1276 M 528 220 L 5801 0 R @@ -646,9 +711,7 @@ LCb setrgbcolor -5801 0 R 1.000 UP stroke -LTb LCb setrgbcolor -LTb 1.000 UL LTb gsave 6208 268 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill @@ -662,9 +725,11 @@ gsave 6208 268 N 0 -32 V 121 32 V -121 32 V 0 -32 V 1 PolyFill stroke 2.000 UL LTb -0.00 0.00 0.00 C 3.000 UL -LT0 -LC0 setrgbcolor +0.00 0.00 0.00 C % Begin plot #1 +3.000 UL +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 528 268 M 382 0 V 0 96 R @@ -685,11 +750,15 @@ LC0 setrgbcolor 1035 0 V 0 96 R 533 0 V -1.500 UP stroke +LTw +% End plot #1 +% Begin plot #2 +1.500 UP 2.000 UL -LT0 -LC0 setrgbcolor +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 910 268 CircleF 1412 364 CircleF 2123 460 CircleF @@ -699,10 +768,14 @@ LC0 setrgbcolor 4033 844 CircleF 4650 940 CircleF 5685 1036 CircleF +LTw +% End plot #2 +% Begin plot #3 1.000 UP 2.000 UL -LT0 -LC0 setrgbcolor +LTb +LCb setrgbcolor +[] 0 setdash 1.00 1.00 1.00 C 910 268 CircleF 1412 364 CircleF 2123 460 CircleF @@ -712,10 +785,14 @@ LC0 setrgbcolor 4033 844 CircleF 4650 940 CircleF 5685 1036 CircleF +LTw +% End plot #3 +% Begin plot #4 1.500 UP 2.000 UL -LT0 -LC0 setrgbcolor +LTb +LCb setrgbcolor +[] 0 setdash 0.00 0.00 0.00 C 910 364 CircleF 1412 460 CircleF 2123 556 CircleF @@ -725,10 +802,15 @@ LC0 setrgbcolor 4033 940 CircleF 4650 1036 CircleF 5685 1132 CircleF -1.000 UP +LTw +% End plot #4 2.000 UL LTb LCb setrgbcolor +[] 0 setdash +1.000 UP +2.000 UL +LTb 0.00 0.00 0.00 C stroke grestore end diff --git a/pointprocesses/lecture/pointprocessscetchB.pdf b/pointprocesses/lecture/pointprocessscetchB.pdf index d8958ae0bacded76f19ecb49bd446dbed815f954..3b50deca3aaff74af1c8dfca2e74f9f81d0ac4cd 100644 GIT binary patch delta 2785 zcma)5X*d*W8y?v@7)BJyGNrM^WL9RzHnJr;$d+t{$-Xp(vd%~yl5{K)lChl$4dFB* zVm?CFl;w;WQH?EI);XHgQRn*peEs-(|Gdw2KlgJ#&;7jDJAQQI=WZ3RT%Dk+l5lUE*GovIk9$RYi4DhaRL!td>eWPvfmzZd%h{BLB_b<}c{9 z_Va4KHg7EPZ+q3`JH*aD>lvABmAQ3z&ibYQ8er?@V#}{W%SAOiyw;i+I&aczdq;2k ztIoCUr5f_NyNHA)fz8!pWc|d^hAIx}+SQ>f$-4nUr4*ZARlSlA)~-WtiApWTEiEtw z^(S58KelnLd!)X042%)$Qt!FZ4T2M2kk99xdC^r;KCBWHrtP9X5`856*>iHH@kDP} zC_cW~f-Sis{WMai0CblvX*-x0+=`VCMcsdRiM$uR*^C&T7m_$3 zyxv}9RxjMt6@UNeZPBd(N(Jt7p5oca%}rnOm7H$0D)FA(W#Q%HG2@$a!5@((;qSN$ zFLpj^O2<~z)q=zd<5e4=qN)h5efCn# zo0gco=|7h-%is-X2vhKv^xVqV7{jtlG~6w^+AXb-fJN~D&V#bXYt-ms9DN;9!K-k% zYiQ+8D>L?tg>QVQ>`&8!4mO=xdp68n;UOo-5TADvX86vjOgQSOjUmhlJnY~fcjCgl#!Gog8A)7`?*zGwdRF$0^b zsT5Y-I}odBU*G;&KS5(R1{Z^4%m~##uVA&=$}-v|)0RY;HU?0>G;J^2x2t38#(9Z? zE&A=)@sMhAQ1*b8%;V^C-N_K`odW(aZ%fl>u&8Eq4MIcwm0yFC3i4ismfkpZMyp}K zYO*TKpx56*t+&rVp1Y%&?484Y6e2q`G1A-D@CCYN|7dby>+SYBdbz}C`(ih*;G$Si z*E=^08LQvesiSpnpWYaKI55NP9zY<^7DcZ_pLFGswOowd@$~#$)by3!yv(O~diWcF z@pCG@s!)(?>PK%Ec=TklG?9y%m-UDGInnm=C~UxLJYX$CG^1s}LRq#HOyMq=WNFr6 z-qHW)YZ*}x$PVAG)>lyhSCwtQ5~%%NE%qphFj}ssY(Tff!||WxDWB)2x;_0IAQbZX z18}?Nl4E(1xS_;cA$0mQuW)l^6-(J3 zVrJ~zKW%lImzoQ)TYA7R(Vxh7B4bttJGH1~Wq#Mg>f(ZyZG8l(u+K}`9 z)KJLcX#XkBJ-s&oWp)5}W+tO?!1upk0o(yS^y* zv5S!+V79z8F>^nR&JGclQy1{NZ`kP79A`V~o@iIEu?tP}Y^Ph%9h6N_F zI`|rXzng1v-`VkdOG@nXor+O>H)hXJ5e*890o!#7Tn%Bo7asg=%m1eJ0oTS5?!$<= zhEciJr-?aEB~x|rP^d!`?fS8t<&h|5-(+XAzxI@_3jnJu#-pH4E3prJJ0Uk8a&(D| zKU^Zc{@S2a-YG+o3tMRPz&J*8DlzB&mOfC2m5_{Ux+M9$mZLiE^w0OM1>wn0Dzc{Sg zkQPU0vOH^<0{g41n69HGV=?Am1;&?X%U-m?{iV_4{Q;*lqP}D2P4loK-z3IK4ASSc>bp!<~FL%QD0_i4O6QgyewX*5DAFq z##fpI$)CX4%HoklqRrsU2=$w&3q7N{TGwVJaGQq(`L^-lK}DdTBcxVFZX7 zR06ok9WMD?jGmU}Bqw;ssZc(1Onk|eWRoCBx(1or>8|`XS95Ha4R71@g%$LVGzN@#=7$6?^`3nU-^U_ulj7_6JsB4P1!E!BaRYCmH{T_VodT<0`1!)AF%s~KT_kU*exkw4JUFw~D25}C!6Ht;aPps*GwG{yvjMxk_3NIi2H u5{@;+=$f0OPneovj12xS!$Zu-NGyVMfk?VSBwQ5R)qsmZAm+9fV*dcRGWPxe delta 2727 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