Introduction to Python 2

Similar documents
Data Structures. Lists, Tuples, Sets, Dictionaries

Lists How lists are like strings

GIS 4653/5653: Spatial Programming and GIS. More Python: Statements, Types, Functions, Modules, Classes

Python Review IPRE

Part I. Wei Tianwen. A Brief Introduction to Python. Part I. Wei Tianwen. Basics. Object Oriented Programming

Python Programming: Lecture 2 Data Types

Collections. Lists, Tuples, Sets, Dictionaries

python 01 September 16, 2016

Bayesian Workflow. How to structure the process of your analysis to maximise [sic] the odds that you build useful models.

8.1 fake data simulation Chris Parrish July 3, 2016

Python Review IPRE

CIS192: Python Programming Data Types & Comprehensions Harry Smith University of Pennsylvania September 6, 2017 Harry Smith (University of Pennsylvani

Python and Bioinformatics. Pierre Parutto

Interactive use. $ python. >>> print 'Hello, world!' Hello, world! >>> 3 $ Ctrl-D

CS 1110 Prelim 2 November 12th, 2015

Python Lists. What is not a Collection. A List is a kind of Collection. friends = [ 'Joseph', 'Glenn', 'Sally' ]

There are four numeric types: 1. Integers, represented as a 32 bit (or longer) quantity. Digits sequences (possibly) signed are integer literals:

: Intro Programming for Scientists and Engineers Final Exam

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines.

Beyond Blocks: Python Session #1

Interactive use. $ python. >>> print 'Hello, world!' Hello, world! >>> 3 $ Ctrl-D

GE PROBLEM SOVING AND PYTHON PROGRAMMING. Question Bank UNIT 1 - ALGORITHMIC PROBLEM SOLVING

Webgurukul Programming Language Course

All programs can be represented in terms of sequence, selection and iteration.

CMPT 120 Lists and Strings. Summer 2012 Instructor: Hassan Khosravi

GLM Poisson Chris Parrish August 18, 2016

Teaching London Computing

CS 1110 Final, December 8th, Question Points Score Total: 100

Types, lists & functions

MUTABLE LISTS AND DICTIONARIES 4

PYTHON CONTENT NOTE: Almost every task is explained with an example

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

Announcements for this Lecture

CIS192 Python Programming

Python in 10 (50) minutes

Introduction to Python

Computer Sciences 368 Scripting for CHTC Day 3: Collections Suggested reading: Learning Python

Question 1. December 2009 Final Examination Marking Scheme CSC 108 H1F

CS 1110 Final, December 8th, Question Points Score Total: 100

The Practice of Computing Using PYTHON

LECTURE 3 Python Basics Part 2

Download Python from Any version will do for this class

Dictionaries. Looking up English words in the dictionary. Python sequences and collections. Properties of sequences and collections

APT Session 2: Python

Slicing. Open pizza_slicer.py

Python I. Some material adapted from Upenn cmpe391 slides and other sources

Lists, loops and decisions

OOP and Scripting in Python Advanced Features

Python for Non-programmers

Topic 7: Lists, Dictionaries and Strings

PLEASE HAND IN UNIVERSITY OF TORONTO Faculty of Arts and Science

Lecture 7: Python s Built-in. in Types and Basic Statements

COMP1730/COMP6730 Programming for Scientists. Sequence types, part 2

Sequence types. str and bytes are sequence types Sequence types have several operations defined for them. Sequence Types. Python

Functions, Scope & Arguments. HORT Lecture 12 Instructor: Kranthi Varala

Python Training. Complete Practical & Real-time Trainings. A Unit of SequelGate Innovative Technologies Pvt. Ltd.

Compound Data Types 2

Chapter 8 Dictionaries. Dictionaries are mutable, unordered collections with elements in the form of a key:value pairs that associate keys to values.

brms: An R Package for Bayesian Multilevel Models using Stan

ENGR (Socolofsky) Week 07 Python scripts

CS2304: Python for Java Programmers. CS2304: Sequences and Collections

Data Science with Python Course Catalog

Abstract Data Types Chapter 1

Compound Data Types 1

ECE 364 Software Engineering Tools Laboratory. Lecture 4 Python: Collections I

1 Strings (Review) CS151: Problem Solving and Programming

CS 2316 Exam 1 Spring 2014

Quiz 1 Practice Problems

The Pyth Language. Administrivia

Sage Reference Manual: Python technicalities

CS Prelim 2 Review Fall 2018

Here n is a variable name. The value of that variable is 176.

Fundamentals of Programming (Python) Object-Oriented Programming. Ali Taheri Sharif University of Technology Spring 2018

The Big Python Guide

MEIN 50010: Python Data Structures

Iterators & Generators

CS Lecture 26: Grab Bag. Announcements

Today: Revisit some objects. Programming Languages. Key data structure: Dictionaries. Using Dictionaries. CSE 130 : Winter 2009

CIS192 Python Programming

Sequences and iteration in Python

University of Washington CSE 140 Introduction to Data Programming Winter Midterm exam. February 6, 2013

ENGR 102 Engineering Lab I - Computation

Lecture Agenda. Objects. But First... Immutable Types and Nesting. Immutable Types and Nesting

A Little Python Part 2

PYTHON. Cheat Sheet.

TUPLES AND RECURSIVE LISTS 5

Computational Integer Programming. Lecture 4: Python. Dr. Ted Ralphs

Python Intro GIS Week 1. Jake K. Carr

PLEASE HAND IN UNIVERSITY OF TORONTO Faculty of Arts and Science

Programming in Python

Python Tutorial. CSE 3461: Computer Networking

Flow Control: Branches and loops

University of Texas at Arlington, TX, USA

Introduction to Scientific Python, CME 193 Jan. 9, web.stanford.edu/~ermartin/teaching/cme193-winter15

ENGR 102 Engineering Lab I - Computation

Python a modern scripting PL. Python

CS 1110 Prelim 2 November 13th, 2014

More Data Structures. What is a Dictionary? Dictionaries. Python Dictionary. Key Value Pairs 10/21/2010

At full speed with Python

somedata = { } somedata[ cheese ] = dairy somedata[ Cheese ] = dairy items = ( ( 3, 2 ), ( 5, 7 ), ( 1, 9 ), 0, ( 1 ) )

Transcription:

Introduction to Python 2 Chang Y. Chung Office of Population Research 01/14/2014

Algorithms + Data Structures = Programs Niklaus Wirth (1976)[3] 1 / 36

Algorithms + Data Structures = Programs Niklaus Wirth (1976)[3] Python s built-in data structures include: Lists Dictionaries Tuples 1 / 36

Algorithms + Data Structures = Programs Niklaus Wirth (1976)[3] Python s built-in data structures include: Lists Dictionaries Tuples We will also briefly talk about: Classes Exception Handling 1 / 36

List Ordered (indexed) collection of arbitrary objects. Mutable may be changed in place. 2 / 36

List Ordered collection of arbitrary objects. 1 L = [ ] # a new empty list 2 L = l i s t ( ) # ditto 3 4 L = [1, 2.5, "abc", [56.7, 78.9]] 5 print len ( L ) # 4 6 print L[1] # 2.5 (zero-based) 7 print L [3][0] # 56.7 8 9 for x in L : 10 print x 11 # 1 12 # 2.5 13 # "abc" 14 # [56.7, 78.9] 15 16 print "abc" in L, L. count ( "abc" ), L. index ( "abc" ) 17 # True 1 2 3 / 36

List Mutable may be changed in place. 1 L = [ ] 2 L.append(5) 3 print L # [5] 4 5 L[0] = 23 6 print L # [23] 7 8 M = [87, 999] 9 L. extend(m) # or L += M 10 print L # [23, 87, 999] 11 12 del L[2] 13 print L # [23, 87] 4 / 36

List More examples. 1 def squares ( a _ l i s t ) : 2 s = [ ] 3 for el in a _ l i s t : 4 s.append( el ** 2) 5 return s 6 7 sq = squares ([1,2,3,4]) 8 print sq, sum( sq) 9 # [1, 4, 9, 16] 30 5 / 36

List More examples. 1 def squares ( a _ l i s t ) : 2 s = [ ] 3 for el in a _ l i s t : 4 s.append( el ** 2) 5 return s 6 7 sq = squares ([1,2,3,4]) 8 print sq, sum( sq) 9 # [1, 4, 9, 16] 30 Aliasing vs copying 1 L = [1,2,3,4] 2 M = L # aliasing 3 L[0] = 87 4 print M # [87, 2, 3, 4] 5 6 L = [1,2,3,4] 7 M = l i s t ( L ) # (shallow) copying. M = L[:] also works 8 L[0] = 87 9 print M # [1,2,3,4] 5 / 36

Quiz Given a list, 1 L = [1, 2, [3, 4], 5, "xyz" ] evaluate the following expressions: 1 L[1] == 1 2 len ( L ) == 5 3 L[2] == 3, 4 4 5 [3] in L 6 L. index ( "xyz" ) == 4 7 L [-1] == "xyz" 8 L [-1 ] [ -1] == "z" 9 10 any([1, 2, 3]) == True 11 L[9] == None 12 len ([0,1,2,]) == 3 6 / 36

Quiz Write a function that, given a list of integers, returns a new list of odd numbers only. For instance, given the list, [0,1,2,3,4], this function should return a new list, [1,3]. (Hint: Create a new empty list. Loop over the old one appending only odd numbers into the new one. Return the new one.) 7 / 36

Quiz Write a function that, given a list of integers, returns a new list of odd numbers only. For instance, given the list, [0,1,2,3,4], this function should return a new list, [1,3]. (Hint: Create a new empty list. Loop over the old one appending only odd numbers into the new one. Return the new one.) An answer. 1 def only_odd ( a _ l i s t ) : 2 L = [ ] 3 for el in a _ l i s t : 4 i f el % 2 == 1: 5 L.append( el ) 6 return L 7 8 print only_odd ([0, 1, 2, 3, 4]) 9 # [1, 3] 7 / 36

Quiz (cont.) (tricky) Write a function similar to the previous one. This time, however, do not return a new list. Just modify the given list so that it has only the odd numbers. (Hint: del L[0] removes the first element of the list, L) 8 / 36

Slice index Applies to any sequence types, including list, str, tuple,.... Has three (optional) parts separated by a colon (:), start : end : step, indicating start through but not past end, by step; Indices point in-between the elements. 1 + + + + + + + 2 p y t h o n 3 + + + + + + + 4 0 1 2 3 4 5 6 5 6 5 4 3 2 1 Examples: 1 L = [ "p", "y", " t ", "h", "o", "n" ] 2 print L [ : 2 ] # ["p", "y"] first two 3 print L[1:3] # ["y", "t"] 4 print L [0:5:2] # ["p", "t", "o"] 5 print L [-1] # n the last element 6 print L [ : ] # ["p", "y", "t", "h", "o", "n"] a (shallow) copy 7 print L [ 3 : ] # ["h", "o", "n"] 8 print L [-2 : ] # ["o", "n"] last two 9 print L [ : : -1] # ["n", "o", "h", "t", "y", "p"] reversed 9 / 36

Quiz Suppose that you collect friendship network data among six children, each of whom we identify with a number: 0, 1,..., 5. The data are represented as a list of lists, where each element list represents the element child s friends. 1 L = [[1, 2], [0, 2, 3], [0, 1], [1, 4, 5], [3, 5], [3]] For instance, the kid 0 friends with the kids 1 and 2, since L[0] == [1, 2] Calculate the average number of friends the children have. (Hint: len() returns the list size.) 10 / 36

Quiz Suppose that you collect friendship network data among six children, each of whom we identify with a number: 0, 1,..., 5. The data are represented as a list of lists, where each element list represents the element child s friends. 1 L = [[1, 2], [0, 2, 3], [0, 1], [1, 4, 5], [3, 5], [3]] For instance, the kid 0 friends with the kids 1 and 2, since L[0] == [1, 2] Calculate the average number of friends the children have. (Hint: len() returns the list size.) An answer: 1 total = 0.0 # make total a float type 2 for el in L : 3 total += len ( el ) 4 avg = total / len ( L ) 5 print avg 6 # 2.1666 10 / 36

Quiz (cont.) (tricky)write a function to check if all the friendship choices are reciprocated. It should take a list like previous one and return either True or False. (Hint: You may want to use a utility function below.) 1 def mutual( a _ list, ego, alter ) : 2 return alter in a _ l i s t [ego] and ego in a _ l i s t [ alter ] 11 / 36

List Comprehension A concise way to create a list. An example: 1 [x for x in range(5) i f x % 2 == 1] # [1, 3] An equivalent code using the for loop: 1 L = [ ] 2 for x in range ( 5 ) : 3 i f x % 2 == 1: 4 L.append(x) # [1, 3] More examples. 1 [x - 5 for x in range (6)] # [-5, -4, -3, -2, -1, 0] 2 [abs(x) for x in [-2,-1,0,1]] # [2, 1, 0, 1] 3 [x for x in range(6) i f x == x**2] # [0, 1] 4 [1 for x in [87, 999, "xyz" ] ] # [1, 1, 1] 5 [x - y for x in range(2) for y in [7, 8]] # [-7, -8, -6, -7] 12 / 36

Dictionary A collection of key-value pairs. Indexed by keys. Mutable. 13 / 36

Dictionary A collection of key-value pairs. Indexed by keys. Mutable. Also known as associative array, map, symbol table,... Usually implemented as a hash table. 13 / 36

Dictionary A collection of key-value pairs, indexed by keys. 1 D = {} # an empty dictionary. D=dict() also works 2 3 D[ "one" ] = 1 # {"one": 1} 4 D[ "two" ] = 2 5 print D # {"one": 1, "two": 2} 6 7 print D. keys ( ) # ["two", "one"] arbitrary order! 8 print "three " in D. keys ( ) # False. "three" in D also works 9 10 D = {"Apple" : 116, "Big Mac" : 550} 11 12 for key in [ "Apple", "Orange", "Big Mac" ] : 13 i f key in D: 14 value = D[key] 15 print "{0} has {1} calories ". format (key, value ) 16 else : 17 print "{0} is not found in the dictionary ". format (key) 18 # Apple has 116 calories 19 # Orange is not found in the dictionary 20 # Big Mac has 550 calories 14 / 36

Dictionary More Dictionary examples. 1 D = {"China" : 1350, " India ":1221, "US":317} 2 for key in D. keys ( ) : 3 print "Pop of {0}: {1} mil ". format (key, D[key ] ) 4 # Pop of India: 1221 mil 5 # Pop of China: 1350 mil 6 # Pop of US: 317 mil 7 8 D = {[1,2]: 23} 9 # TypeError: unhashable type: list 10 11 D = {2: [2, 3], 200: [3, 4], 95: [4, 5]} # OK 12 print D[2] # [2, 3] 13 print D[200] # [3, 4] 15 / 36

A Data Structure SAT has three subsections: Critical Reading, Mathematics, and Writing. A result of taking an SAT exam is three scores. 1 # data 2 SAT = {" cr " :780, "m" :790, "w":760} 3 # usage 4 print SAT[ "m" ] # 790 16 / 36

A Data Structure SAT has three subsections: Critical Reading, Mathematics, and Writing. A result of taking an SAT exam is three scores. 1 # data 2 SAT = {" cr " :780, "m" :790, "w":760} 3 # usage 4 print SAT[ "m" ] # 790 You can take SAT exams more than once. 1 # data 2 SATs = [{ " cr " :780, "m" :790, "w":760}, 3 {" cr " :800, "m" :740, "w":790}] 4 # usage 5 print SATs[0] # {"cr":780, "m":790, "w":760} 6 print SATs[0][ " cr " ] # 780 16 / 36

More Complicated Data Structure Hypothetical SAT data for two people: Jane and Mary. 1 SAT = {"Jane" : {"lastname" : "Thompson", 2 " test " : [{ " cr " : 700, "m" : 690, "w":710}] }, 3 "Mary" : {"lastname" : "Smith", 4 " test " : [{ " cr " : 780, "m" : 790, "w":760}, 5 {" cr " : 800, "m" : 740, "w":790}] }} 6 7 print SAT[ "Jane" ] 8 # {"test": ["cr": 700, "m": 690, "w": 710], "lastname": "Thompson"} 9 10 print SAT[ "Jane" ] [ "lastname" ] # Thompson 11 print SAT[ "Jane" ] [ " test " ] # [{"cr": 700, "m": 690, "w":710}] 12 print SAT[ "Jane" ] [ " test " ][0] # {"cr": 700, "m": 690, "w": 710} 13 print SAT[ "Jane" ] [ " test " ] [ 0 ] [ " cr " ] # 700 14 15 mary1 = SAT[ "Mary" ] [ " test " ][1] 16 print mary1[ " cr " ] # 800 17 / 36

Quiz Make a dictionary of 2012 SAT percentile ranks for the scores from 660 to 700 and for all three subsections. The full table is available at http://tinyurl.com/k38xve8. Given this dictionary, say D, a lookup, D[660]["cr"] should be evaluated to 91. 18 / 36

Quiz Make a dictionary of 2012 SAT percentile ranks for the scores from 660 to 700 and for all three subsections. The full table is available at http://tinyurl.com/k38xve8. Given this dictionary, say D, a lookup, D[660]["cr"] should be evaluated to 91. An answer. 1 D = {700: {" cr " : 95, "m" : 93, "w" : 96}, 2 690: {" cr " : 94, "m" : 92, "w" : 95}, 3 680: {" cr " : 93, "m" : 90, "w" : 94}, 4 670: {" cr " : 92, "m" : 89, "w" : 93}, 5 660: {" cr " : 91, "m" : 87, "w" : 92}} 6 7 print D[660][ " cr " ] # 91 18 / 36

Quiz (cont.) (tricky) Write a new dictionary DD such that we look up the subsection first and then the score. That is, DD["cr"][660] should be evaluated to 91. (Hint: Start with a dictionary below.): 1 DD = {" cr " : {}, "m" : {}, "w" : {}} 19 / 36

Tuples A sequence of values separated by commas. Immutable. Often automatically unpacked. 20 / 36

Tuples A sequence of values separated by commas. Immutable. 1 T = tuple ( ) # empty tuple. T = () works also 2 N = (1) # not a tuple 3 T = (1, 2, "abc" ) # a tuple (1, 2, "abc") 4 print T[0] # 1 5 T[0] = 9 # TypeError. immutable Often automatically unpacked. 1 T = (2, 3) 2 a, b = T # a is 2, b is 3 3 a, b = b, a # a and b swapped. 4 5 D = {"x" : 23, "y" : 46} 6 D. items ( ) # [("y", 46), ("x", 23)] 7 for k, v in D. items ( ) : 8 print "%s ==> %d" % (k, v) # y ==> 46 9 # x ==> 23 21 / 36

Class class defines a (user-defined) type, a grouping of some data (properties) and functions that work on the data (methods). An object is an instance of a type. Examples: int is a type; 23 is an object. str a type; "abc" an object. "word document file" a type; "my_diary.docx" is an object We have been using objects. 22 / 36

Examples of Built-in Types The str type has a bunch of methods. 1 "abc". upper ( ) # ABC 2 "abc". find ( "c" ) # 2 3 "abc". s p l i t ( "b" ) # ["a", "c"] open() function returns a file object (representing an opened file). 1 with open( " test. txt ", "w" ) as my_file : 2 my_file. write ( " f i r s t line \n" ) 3 my_file. write ( "second line \n" ) 4 my_file. write ( " third line " ) 5 6 print type ( my_file ) # <type "file"> 7 print dir ( my_file ) # properties and methods 8 9 my_file. write ( "something" ) # error. I/O on closed file 23 / 36

Class Let s create a bank account type. 1 class BankAccount : 2 3 def init ( self, initial_balance =0): 4 self. balance = initial_balance 5 6 def deposit ( self, amount) : 7 self. balance += amount 8 9 def withdraw ( self, amount) : 10 self. balance -= amount Usage examples. 1 my_account = BankAccount(100) 2 my_account. withdraw(5) 3 print my_account. balance # 95 4 5 your_account = BankAccount ( ) 6 your_account. deposit(100) 7 your_account. deposit (10) 8 print your_account. balance # 110 24 / 36

Quiz Implement a Person type(or class) which has three properties (first_name, last_name, and birth_year); and two methods: full_name() and age(). The age() method should take the current year as an argument. You may use the template below. 1 class Person : 2 def i n i t ( self, f i r s t, last, year ) : 3 pass 4 def full_name ( s e l f ) : 5 pass 6 def age( self, current_year ) : 7 pass 8 9 # check 10 mr_park = Person ( " Jae sang", "Park", 1977) 11 print mr_park. full_name ( ) # Jae sang Park 12 print mr_park. age(2014) # 37 25 / 36

Inheritance A mechanism for code reuse in object-oriented programming (OOP). A subtype is a specialized basetype. 1 import webbrowser 2 3 class CoolPerson ( Person ) : 4 def init ( self, name, birth_year, video ) : 5 Person. init ( self, name, None, birth_year ) 6 self. video = video 7 def full_name ( s e l f ) : 8 return self. first_name 9 def show_off ( s e l f ) : 10 url = " http : / /www. youtube.com/ watch?v={0}" 11 webbrowser.open( url. format ( s e l f. video ) ) 12 13 # check 14 psy = CoolPerson ( "PSY", 1977, "9bZkp7q19f0" ) 15 print psy. full_name ( ) # PSY 16 print psy. age(2012) # 35 17 psy. show_off ( ) # show off the style 26 / 36

Exception Handling An exception is raised when a (run-time) error occurs. By default, the script stops running immediately. 1 L = [0, 1, 2, 3] 2 print L[5] 3 # IndexError: list index out of range try:... except:... let us catch the exception and handle it. 1 L = [0, 1, 2, 3] 2 try : 3 print L[5] 4 5 except IndexError : 6 print "no such element" 7 8 print "next" 9 # no such element 10 # next 27 / 36

Throwing Exception We can raise (or throw) an exception as well. 1 def fetch ( a _ l i s t, index ) : 2 i f index >= len ( a _ l i s t ) : 3 raise IndexError ( "Uh, oh! " ) 4 return a _ l i s t [ index ] 5 6 print fetch ( L, 5) 7 # IndexError: Uh, oh! Script can keep going if you catch and handle the exception. 1 L = [0, 1, 2, 3] 2 try : 3 print fetch ( L, 5) # this raises an exception 4 except IndexError : 5 print "an exception occurred" 6 print "next" 7 # an exception occurred 8 # next 28 / 36

An Example urlopen() in urllib2 module raises an exception when the web page is not found. 1 import u r l l i b 2 2 3 L = [ " http : / / google.com", 4 " http : / / google.com/ somethingfantastic ", 5 " http : / / yahoo.com" ] 6 7 # we want to open each page in turn 8 for url in L : 9 try : 10 page = u r l l i b 2. urlopen ( url ) 11 print page. getcode ( ) 12 except urllib2. HTTPError : 13 print " failed to open: {0}". format ( url ) 14 15 # 200 (a return code of 200 means OK) 16 # failed to open: http://google.com/somethingfantastic 17 # 200 29 / 36

A Data Structure Usage Example STAN (http://mc-stan.org) is a C++ library / language implementing Markov chain Monte Carlo sampling (NUTS, HMC). STAN provides three application programming interfaces (or API s): R, Python, and shell This is an example of using the Python API, which is provided in a Python module, PyStan[1]. In order to run this, you need to install: Cython (http://cython.org), NumPy (http://www.numpy.org), and STAN itself. From PyStan doc (http://tinyurl.com/olap8sx), fitting the eight school model in Gelman et al. [2, sec 5.5]. 30 / 36

Data Structure Usage Example (cont.) Import PyStan module and put STAN code in a string. 1 import pystan 2 schools_code = """ 3 data { 4 int<lower=0> J ; / / number of schools 5 real y[ J ] ; / / estimated treatment effects 6 real<lower=0> sigma[ J ] ; / / s. e. of effect estimates 7 } 8 parameters { 9 real mu; 10 real<lower=0> tau ; 11 real eta [ J ] ; 12 } 13 transformed parameters { 14 real theta [ J ] ; 15 for ( j in 1: J ) 16 theta [ j ] <- mu + tau * eta [ j ] ; 17 } 18 model { 19 eta ~ normal(0, 1); 20 y ~ normal( theta, sigma ) ; 21 } 22 """ 31 / 36

Data Structure Usage Example (cont.) cont. 1 schools_data = {" J " : 8, 2 "y" : [28, 8, -3, 7, -1, 1, 18, 12], 3 "sigma" : [15, 10, 16, 11, 9, 11, 10, 18]} 4 5 f i t = pystan. stan (model_code=schools_code, 6 data=schools_data, iter=1000, chains=4) 7 8 la = f i t. extract (permuted=true ) 9 mu = la [ "mu" ] 10 # do something with mu here 11 12 print str ( f i t ) # (nicely) print fit object 13 f i t. plot ( ) # requires matplotlib Notice that: Input data are supplied in a dictionary. stan() function in the module runs the model. The function returns a fit type object, which has several methods including extract() and plot(). 32 / 36

Data Structure Usage Example (cont.) Output, in part 1 INFO : pystan :COMPILING THE C++ CODE FOR MODEL anon_model NOW. 2 Inference for Stan model: anon_model. 3 4 chains, each with iter=1000; warmup=500; thin=1; 4 post warmup draws per chain=500, total post warmup draws=2... 5 6 mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff... 7 mu 7.8 0.2 5.1 2.0 4.4 7.9 11.3 17.2 515.0... 8 tau 6.4 0.3 5.4 0.4 2.6 5.1 8.6 20.5 362.0 9 eta [0] 0.4 0.0 0.9 1.5 0.2 0.4 1.0 2.2 597.0 10 eta [1] 0.0 0.0 0.9 1.8 0.6 0.0 0.5 1.7 582.0 11... 12 theta [6] 10.4 0.3 6.9 1.9 5.7 9.8 14.3 25.8 594.0 13 theta [7] 8.3 0.3 7.5 6.2 3.7 8.0 12.7 25.0 604.0 14 lp 4.9 0.1 2.6 10.5 6.5 4.7 3.2 0.3 318.0 15 16 Samples were drawn using NUTS( diag_e ) at Thu Jan 9 17:53: 17 For each parameter, n_eff is a crude measure of effective 18 and Rhat is the potential scale reduction factor on s p l i t 19 convergence, Rhat=1). 33 / 36

Data Structure Usage Example (cont.) Plots 34 / 36

Summary List An ordered collection of objects. Mutable. Dictionary A collection of key-value pairs. Mutable. Tuple A sequence of values separated by commas. Immutable. Class Defines a type, a grouping of properties and methods. try:... except:... Catch and handle exceptions. 35 / 36

References Stan project team site. http://mc-stan.org/team.html. Andrew Gelman, John B. Carlin, H. S. S. D. B. R. Bayesian Data Analysis, 2nd ed. Chapman & Hall/CRC Texts in Statistical Science. Chapman and Hall/CRC, July 2003. Wirth, N. Algorithms + Data Structures = Programs, 1st ed. Prentice Hall Series in Automatic Computation. Prentice-Hall, February 1976. 36 / 36