Top Banner
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 |
45

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

Jan 03, 2016

Download

Documents

Margaret Park
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 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.

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 |

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 2

Lesson 2 - Contents

Repetition Creating and accessing

scalars, vectors, matrices for loop if case

Solutions for lesson 1 exercises

Statistics

Plotting

Exercises

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 3

Contents of the course22.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 simulationWorking on

projects (seminar theses)

Handing in seminar thesis and giving a presentation

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 4

Repetition

Creating a scalar:

>> a=10

a =

10

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 5

Repetition

Creating a row vector:

>> v=[1 2 3 4 5]

v =

1 2 3 4 5

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 6

Repetition

Creating a row vector, 2nd method:

>> v=1:5

v =

1 2 3 4 5

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 7

Repetition

Creating a row vector, 3rd method:

linspace(startVal, endVal, n)

>> v=linspace(0.5, 1.5, 5)

v =

0.50 0.75 1.00 1.25 1.50

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 8

Repetition

Creating a column vector:

>> v=[1; 2; 3; 4; 5]

v =

1 2 3 4 5

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 9

Repetition

Creating a column vector, 2nd method:

>> v=[1 2 3 4 5]’

v =

1 2 3 4 5

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 10

Repetition

Creating a matrix:

>> A=[1 2 3 4; 5 6 7 8]

A =

1 2 3 4 5 6 7 8

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 11

Repetition

Creating a matrix, 2nd method:

>> A=[1:4; 5:8]

A =

1 2 3 4 5 6 7 8

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 12

Repetition

Accessing a scalar:

>> a

a =

10

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 13

Repetition

Accessing an element in a vector:

v(index) (index=1..n)

>> v(2)

ans =

2

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 14

Repetition

Accessing an element in a matrix:

A(rowIndex, columnIndex)

>> A(2, 1)

ans =

5

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 15

Repetition - operators

Scalar operators:

Basic: +, -, *, /

Exponentialisation: ^

Square root: sqrt()

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 16

Repetition - operators

Matrix operators:

Basic: +, -, *

Element-wise operators:

Multiplication: .*

Division: ./

Exponentialisation: .^

Solving Ax=b: x = A\b

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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

4

1

2 )(x

xxy

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 18

Repetition – if case

Conditional computation can be made with if:

>> val=-4;if (val>0 ) absVal = val;else absVal = -val;end

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 19

Lesson 1: Exercise 1

Compute:

a) b)

c)

255

10718

100

0i

i

10

5

2 )(i

ii

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 20

Lesson 1: Exercise 1 – solution

Compute:

a)

255

10718

>> (18+107)/(5*25)

ans =

1

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 21

Lesson 1: Exercise 1 – solution

Compute:

b)

100

0i

i

>> s=0;>> for i=0:100s=s+i; end>> s

s =

5050

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 22

Lesson 1: Exercise 1 – solution

Compute:

c)

10

5

2 )(i

ii

>> s=0;>> for i=5:10s=s+i^2-i; end>> s

s =

310

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 23

Lesson 1: Exercise 2

Solve for x:

4522

32

22332

1432

4321

4321

4321

4321

xxxx

xxxx

xxxx

xxxx

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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*xans = 1.0000 2.0000 3.0000 4.0000

4522

32

22332

1432

4321

4321

4321

4321

xxxx

xxxx

xxxx

xxxx

Ax=b

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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 :

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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’)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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*’) * * * *

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 32

Plotting tips

>> plot(x,y1);

>> hold on

>> plot(x,y2,’r’);>> plot(x,y3,’g’);

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 33

Plotting tips

>> plot(x,y1);

>> hold on

>> plot(x,y2,’r’);>> plot(x,y3,’g’);>> grid on

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 35

Datasets

Download the files countries.m and

cities.m and save them in the working

directory of MATLAB.

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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.

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 38

Datasets – countries

The sort() function can be used to sort all

items of a vector in inclining order.

>> life = A(:, 4);

>> plot(life)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 40

Datasets – countries

The histogram hist() is useful for getting the

distribution of the values of a vector.

>> life = A(:, 4);

>> hist(life)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 41

Datasets – countries

Alternatively, a second parameter specifies the

number of bars:

>> life = A(:, 4);

>> hist(life, 30)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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!)

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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.

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 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.

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

2010-03-01 A. Johansson & W. Yu/ [email protected] [email protected] 45

Exercise 4 – optional

Zipf’s law: Zipf’s law says that the rank, x, of

cities (1: largest, 2: 2nd largest, 3: 3rd largest, ...)

and the size, y, of cities (population) has a

power-law relation: y ~ xb

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())