Analysis for design

A lecture about who to analyse (board) games using statistics, probability theory and simulations.

Link to the slides if Slide Share plugin does not work: http://www.slideshare.net/lankoski/analysis-for-design

Scripts used to analyse games and visualise data:  http://www.mediafire.com/download/whucaos4v9chv40/AnalysisForDesignScripts.zip

Advertisements

Model–data comparison

I wrote some code to check my ordinal / clmm models against the data (and to learn to use ggplo2).

The function pred() is from clmm tutorial to calculate predictions based on the model. The function plot.probabilities3() is for plotting prediction and distribution form the data.

Update: changed extreme subject visualization.  Area seemed not appropriate when average player is not always inside the area.

Continue reading

R / Ordinal Scripts

Update: Added visualizations produced with the scripts
Update 2: Updated plot.probabilities() so that response variable can have arbitrary levels

I have been using ordinal package to crunch data. Tutorial for mixed models is only for clmm2 and not for clmm. Here are code for visualizing predicted probabilities for clmm. All the code is  based on  clmm2 tutorial.

Continue reading

Rpy2 and drawing pie diagram

Here is code that I come up with for drawing a pie diagram using rpy2. The function takes two lists. Function takes two lists: data contains frequencies and labels labels. The argument title set the title text of chart. Radius sets the radius of pie (max 1.0). Font size 1 is default, 1.5 is 50% bigger, 0.5 is 50% smaller. If file name is provided the chart will be saved to png file. Radius, font_size, and file name are optional parameters.

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr

def draw_pie(data, labels, title, radius=0.8, font_size=1.0, file_name=None):

    total = 0
    for x in data: total = total + x

    labels_with_percentages = []
    for td, tl in zip(data, labels):
        percentage = 100.0 * float(td)/float(total)
        labels_with_percentages.append("%s %.1f%%" % (tl, percentage))

    l = robjects.StrVector(labels_with_percentages)
    d = robjects.IntVector(data)

    grdevices = importr('grDevices')
    if file_name:
        grdevices.png(file_name)
    font = robjects.r['par'](cex=font_size)
    robjects.r.pie(d,l, main=title, radius=radius)
    if file_name:
        grdevices.dev_off()

To use this we can do:

draw_pie([10,8],["Male", "Female"], "Sex", font_size=1.5, file_name="chart.png")

Calculating correlation with rpy2

I spend some time trying to figure out how to use R via Rpy2. Here are a short python code that I used to calculate correlation using Rpy2

import rpy2.robjects as robjects

def get_rcorr(floatData, n_rows, method=”spearman”):

“””
floatData: list of floats,
number of rows in the data matrix
Hmisc library needs to be loaded before calling this
function ( rcorr() comes from there)..
Library can be loaded with command:  robjects.r(“library(Hmisc)”)
“””
v = robjects.FloatVector(floatData)
dm = robjects.r[‘matrix’](v, nrow = n_rows)
res = robjects.r.rcorr(dm, type=method)
return res

robjects.r(“library(Hmisc)”) # for rcorr()

print (get_rcorr([1.0,2.0,4.0,5.0,1.0,1.0,1.0,0.0], 4)

get_rcorr([1,2,4,5,1,1,1,0], 4) will create then matrix as follows

  1.0  1.0
  2.0  1.0
  4.0  1.0
  5.0  0.0

and calculate correlation (R, p) for that.