-->

Wednesday, January 2, 2013

Welcome to my blog

This is my first blog post using the iPython notebook. I am very excited about the things it can do. Here is what I want to cover:

  • Who I am
  • What the blog will cover
  • Why I named it Measure of Justice

Evan Misshula

I am a PhD student in Criminal Justice. I try to use social networks and data mining to help people make rational decisions about public safety. I care passionately about people that the world writes off. It is no shock. There have been many times when I have been written off.

Math, Computing, Causality, Networks, Security and Ethics

Early in my graduate career, I was struck that we spend a great deal of effort policing minority communities for drug use which has little effect on the non-involved but spend way less effort protecting the banking system from hackers. I also thought that there was a lot to learn about managing threats from inside by looking at both intrusion detection and counter- intelligence. Not suprisingly, I believe in second chances. Who gets those chances and when they come are an area of great interest.

What's in a name?

When I studied Stochastic Control, Girsanov's Theorem governed which measures were deformable into each other. Two measures needed to have the same sets of measure zero, to equivilent. In other words it is what we think that is impossible, not unlikely that is important.

My favorite new toy

I am excited about blogging again because I can now put code and math in the blog. I have spent a lot of time in graduate school learning new tools. This blog will hopefully document some of the challenges and help others find their way. Others blogs have certainly helped me.

We can assign variables in the ipython notebook.

In [28]:
a=5
print a
5
In [30]:
a=5
b=9
a+b
Out[30]:

But you can also reach into the operating system and execute bash commands.

In [31]:
pwd
Out[31]:
u'/home/evan/Documents/ipython/blog/blog'
In [32]:
ls
120907-Blogging with the IPython Notebook.ipynb  EvanNB1.html   old/
121120-Back from PyCon Canada 2012.ipynb         EvanNB1.ipynb
EvanNB1_header.html                              fig/

This is a markdown cell

You can italicize and use boldface. It allows us to comment code and create interactive presentations. You can build lists of your favorite tools. Here are mine.

  • linux
  • emacs
  • r statistical language
  • Emacs Speaks Statistics
  • Org-mode
  • LaTeX
  • Sweave
  • Ggplot

What is most important is to LaTeX support. My favorite math equation is $e^{i\pi}+1=0$. It can also render math numbered equations: $$e^x=\sum_{j=0}^{\infty}\frac{x^j}{j!}$$

The browser displays

The program can display the numeric or character output of programs.

In [33]:
print "hi Doug"
x=3
hi Doug
In [9]:
x
Out[9]:
3

It can also display graphs:

In [34]:
%pylab inline
plot(rand(100))
Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.
Out[34]:
[Line2D(_line0)]
In [35]:
x = linspace(0, 3*pi)
plot(x, 0.5*sin(x), label=r'$\sin(x)$')
plot(x, cos(x), 'ro', label=r'$\cos(x)$')
title(r'Two familiar functions')
legend()
Out[35]:
Legend

Symbolic Manipulation

The ipython notebook can also make symbolic calculations and solve complex algebraic equations:

In [36]:
%load_ext sympyprinting
import sympy as sym
from sympy import *
x, y, z = sym.symbols("x y z")
The sympyprinting extension is already loaded. To reload it, use:
  %reload_ext sympyprinting
In [37]:
Rational(3,2)*pi + exp(I*x) / (x**2 + y**2)
Out[37]:
$$\frac{3}{2} \pi + \frac{e^{\mathbf{\imath} x}}{x^{2} + y^{2}}$$
In [38]:
eq = ((x+y)**3 * (x+3))
eq
Out[38]:
$$\left(x + 3\right) \left(x + y\right)^{3}$$
In [39]:
expand(eq)
Out[39]:
$$x^{4} + 3 x^{3} y + 3 x^{3} + 3 x^{2} y^{2} + 9 x^{2} y + x y^{3} + 9 x y^{2} + 3 y^{3}$$

Ipython can even calculate the derivative!!

In [40]:
diff(cos(x**2)**2 / (1+x)**2, x)
Out[40]:
$$- 4 \frac{x \operatorname{sin}\left(x^{2}\right) \operatorname{cos}\left(x^{2}\right)}{\left(x + 1\right)^{2}} - 2 \frac{\operatorname{cos}^{2}\left(x^{2}\right)}{\left(x + 1\right)^{3}}$$

It can also display pictures and videos...

In [19]:
from IPython.display import Image
Image(filename='/home/evan/Pictures/Evan.jpg')
Out[19]:
In [20]:
from IPython.display import YouTubeVideo
YouTubeVideo('ystkKXzt9Wk')
Out[20]:

We can even use other languages (including R)!!

This is because ipython communicates between the kernel and the browser so it knows how to send data to another interpreter.
In [41]:
%%ruby
puts "Hello from Ruby #{RUBY_VERSION}"
Hello from Ruby 1.9.3
In [42]:
%%bash
echo "hello from $BASH"
hello from /bin/bash
In [23]:
import rpy2;
from rpy2 import robjects; robjects.r("version")
Out[23]:
               _                            
platform       x86_64-unknown-linux-gnu     
arch           x86_64                       
os             linux-gnu                    
system         x86_64, linux-gnu            
status                                      
major          2                            
minor          15.2                         
year           2012                         
month          10                           
day            26                           
svn rev        61015                        
language       R                            
version.string R version 2.15.2 (2012-10-26)
nickname       Trick or Treat               
In [24]:
%load_ext rmagic 
The rmagic extension is already loaded. To reload it, use:
  %reload_ext rmagic
In [25]:
X = np.array([0,1,2,3,4])
Y = np.array([3,5,4,6,7])
In [26]:
%%R -i X,Y -o XYcoef
XYlm = lm(Y~X)
XYcoef = coef(XYlm)
print(summary(XYlm))
par(mfrow=c(2,2))
plot(XYlm)
Call:
lm(formula = Y ~ X)

Residuals:
   1    2    3    4    5 
-0.2  0.9 -1.0  0.1  0.2 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   3.2000     0.6164   5.191   0.0139 *
X             0.9000     0.2517   3.576   0.0374 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.7958 on 3 degrees of freedom
Multiple R-squared:  0.81, Adjusted R-squared: 0.7467 
F-statistic: 12.79 on 1 and 3 DF,  p-value: 0.03739 

In [27]:
XYcoef
Out[27]:
[ 3.2  0.9]

There is more to come. Ipython does d3 interactive graphs but I have not been able to get them to work. It also handles cython (python wrapped c-code) and mpi parallel code. More later. It is time for bed.

No comments:

Post a Comment