Presentation is loading. Please wait.

Presentation is loading. Please wait.

2010-03-01 851-0585-04L – Modelling and Simulating Social Systems with MATLAB Lesson 2 – Statistics and plotting Anders Johansson and Wenjian Yu © ETH.

Similar presentations


Presentation on theme: "2010-03-01 851-0585-04L – Modelling and Simulating Social Systems with MATLAB Lesson 2 – Statistics and plotting Anders Johansson and Wenjian Yu © ETH."— Presentation transcript:

1 2010-03-01 851-0585-04L – Modelling and Simulating Social Systems with MATLAB Lesson 2 – Statistics and plotting Anders Johansson and Wenjian Yu © ETH Zürich |

2 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 2 Lesson 2 - Contents  Repetition  Creating and accessing scalars, vectors, matrices  for loop  if case  Solutions for lesson 1 exercises  Statistics  Plotting  Exercises

3 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 3 Contents of the course 22.02. 01.03. 08.03. 15.03. 22.03. 29.03. 12.04. 26.04. 03.05. 10.05. 17.05. 31.05. Introduction to MATLAB Introduction to social-science modeling and simulation Working on projects (seminar theses) Handing in seminar thesis and giving a presentation

4 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 4 Repetition  Creating a scalar: >> a=10 a = 10

5 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 5 Repetition  Creating a row vector: >> v=[1 2 3 4 5] v = 1 2 3 4 5

6 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 6 Repetition  Creating a row vector, 2 nd method: >> v=1:5 v = 1 2 3 4 5

7 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 7 Repetition  Creating a row vector, 3 rd method: linspace(startVal, endVal, n) >> v=linspace(0.5, 1.5, 5) v = 0.50 0.75 1.00 1.25 1.50

8 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 8 Repetition  Creating a column vector: >> v=[1; 2; 3; 4; 5] v = 1 2 3 4 5

9 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 9 Repetition  Creating a column vector, 2 nd method: >> v=[1 2 3 4 5]’ v = 1 2 3 4 5

10 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 10 Repetition  Creating a matrix: >> A=[1 2 3 4; 5 6 7 8] A = 1 2 3 4 5 6 7 8

11 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 11 Repetition  Creating a matrix, 2 nd method: >> A=[1:4; 5:8] A = 1 2 3 4 5 6 7 8

12 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 12 Repetition  Accessing a scalar: >> a a = 10

13 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 13 Repetition  Accessing an element in a vector: v(index) (index=1..n) >> v(2) ans = 2

14 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 14 Repetition  Accessing an element in a matrix: A(rowIndex, columnIndex) >> A(2, 1) ans = 5

15 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 15 Repetition - operators  Scalar operators: Basic: +, -, *, / Exponentialisation: ^ Square root: sqrt()

16 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 16 Repetition - operators  Matrix operators: Basic: +, -, *  Element-wise operators: Multiplication:.* Division:./ Exponentialisation:.^  Solving Ax=b: x = A\b

17 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 17 Repetition – for loop  Computation can be automized with for loops: >> y=0; for x=1:4 y = y + x^2 + x; end >> y y = 40

18 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 18 Repetition – if case  Conditional computation can be made with if : >> val=-4; if (val>0 ) absVal = val; else absVal = -val; end

19 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 19 Lesson 1: Exercise 1  Compute: a) b) c)

20 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 20 Lesson 1: Exercise 1 – solution  Compute: a) >> (18+107)/(5*25) ans = 1

21 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 21 Lesson 1: Exercise 1 – solution  Compute: b) >> s=0; >> for i=0:100 s=s+i; end >> s s = 5050

22 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 22 Lesson 1: Exercise 1 – solution  Compute: c) >> s=0; >> for i=5:10 s=s+i^2-i; end >> s s = 310

23 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 23 Lesson 1: Exercise 2  Solve for x:

24 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 24 Lesson 1: Exercise 2 – solution >> A=[2 -3 -1 4; 2 3 -3 2; 2 -1 -1 -1; 2 -1 2 5]; >> b=[1; 2; 3; 4]; >> x=A\b x = 1.9755 0.3627 0.8431 -0.2549 >> A*x ans = 1.0000 2.0000 3.0000 4.0000 Ax=b

25 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 25 Lesson 1: Exercise 3  Fibonacci sequence: Write a function which compute the Fibonacci sequence until a given number n and return the result in a vector.  The Fibonacci sequence F(n) is given by :

26 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 26 Lesson 1: Exercise 3 – solution fibonacci.m: function [v] = fibonacci(n) v(1) = 0; if ( n>=1 ) v(2) = 1; end for i=3:n+1 v(i) = v(i-1) + v(i-2); end >> fibonacci(7) ans = 0 1 1 2 3 5 8 13

27 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 27 Statistics functions  Statistics in MATLAB can be performed with the following commands: Mean value: mean(x) Median value: median(x) Min/max values: min(x), max(x) Standard deviation: std(x) Variance: var(x) Covariance: cov(x) Correlation coefficient: corrcoef(x)

28 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 28 Plotting functions  Plotting in MATLAB can be performed with the following commands: Plot vector x vs. vector y: Linear scale: plot(x, y) Double-logarithmic scale: loglog(x, y) Semi-logarithmic scale: semilogx(x, y) semilogy(x, y) Plot histogram of x: hist(x)

29 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 29 Plotting tips  To make the plots look nicer, the following commands can be used: Set label on x axis: xlabel(‘text’) Set label on y axis: ylabel(‘text’) Set title: title(‘text’)

30 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 30 Details of plot  An additional parameter can be provided to plot() to define how the curve will look like: plot(x, y, ‘key’) Where key is a string which can contain: Color codes: ‘r’, ‘g’, ‘b’, ‘k’, ‘y’, … Line codes: ‘-’, ‘--’, ‘.-’ (solid, dashed, etc.) Marker codes: ‘*’, ‘.’, ‘s’, ’x’ Examples: plot(x, y, ‘r--’) plot(x, y, ‘g*’) * * * *

31 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 31  Two additional useful commands:  hold on|off  grid on|off >> x=[-5:0.1:5]; >> y1=exp(-x.^2); >> y2=2*exp(-x.^2); >> y3=exp(-(x.^2)/3); Plotting tips

32 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 32 Plotting tips >> plot(x,y1); >> hold on >> plot(x,y2,’r’); >> plot(x,y3,’g’);

33 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 33 Plotting tips >> plot(x,y1); >> hold on >> plot(x,y2,’r’); >> plot(x,y3,’g’); >> grid on

34 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 34 Datasets  Two datasets for statistical plotting can be found on the course web page http://www.soms.ethz.ch/matlab you will find the files: countries.m cities.m

35 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 35 Datasets  Download the files countries.m and cities.m and save them in the working directory of MATLAB.

36 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 36 Datasets – countries  This dataset countries.m contains a matrix A with the following specification:  Rows: Different countries  Column 1: Population  Column 2: Annual growth (%)  Column 3: Percentage of youth  Column 4: Life expectancy (years)  Column 5: Mortality

37 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 37 Datasets – countries  Most often, we want to access complete columns in the matrix. This can be done by A(:, index) For example if you are interested in the life- expectancy column, it is recommended to do: >> life = x(:,4); and then the vector life can be used to access the vector containing all life expectancies.

38 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 38 Datasets – countries  The sort() function can be used to sort all items of a vector in inclining order. >> life = A(:, 4); >> plot(life)

39 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 39 Datasets – countries  The sort() function can be used to sort all items of a vector in inclining order. >> life = A(:, 4); >> lifeS = sort(life); >> plot(lifeS)

40 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 40 Datasets – countries  The histogram hist() is useful for getting the distribution of the values of a vector. >> life = A(:, 4); >> hist(life)

41 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 41 Datasets – countries  Alternatively, a second parameter specifies the number of bars: >> life = A(:, 4); >> hist(life, 30)

42 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 42 Exercise 1  Statistics: Generate a vector of N random numbers with randn(N,1) Calculate the mean and standard deviation. Do the mean and standard deviation converge to certain values, for an increasing N? Optional: Display the histogram with hist(randn(N,1)) and compare with the histogram of rand() Slides/exercises: www.soms.ethz.ch/matlab (use Firefox!)

43 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 43 Exercise 2  Demographics: From the countries.m dataset, find out why there is such a large difference between the mean and the median population of all countries. Hint: Use hist(x, n) Also sort() can be useful.

44 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 44 Exercise 3  Demographics: From the countries.m dataset, see which columns have strongest correlation. Can you reason why these columns have stronger correlations? Hint: Use corrcoef() to find the correlation between columns.

45 2010-03-01 A. Johansson & W. Yu/ andersj@ethz.ch yuwen@ethz.ch 45 Exercise 4 – optional  Zipf’s law: Zipf’s law says that the rank, x, of cities (1: largest, 2: 2 nd largest, 3: 3 rd largest,...) and the size, y, of cities (population) has a power-law relation: y ~ x b Test if Zipf’s law holds for the three cases in the cities.m file. Try to estimate the b parameter. Hint: Use log() and plot() (or loglog() )


Download ppt "2010-03-01 851-0585-04L – Modelling and Simulating Social Systems with MATLAB Lesson 2 – Statistics and plotting Anders Johansson and Wenjian Yu © ETH."

Similar presentations


Ads by Google