Male homicide victims are 3.534 times more than famales

男性の殺人被害者は女性被害者の3.534倍!


Analysis of UNODC Homicide Statistics revealed that male homicide victims are over 3 times more than female victims according to all the countries.


I was motivated by one twipic which suggest male homicide victims looks more than female ones.
https://twitter.com/tmaita77/status/419449210363068416/photo/1

Then I reanalyzed the data from UNODC Homicide Statistics.
http://www.unodc.org/unodc/en/data-and-analysis/homicide.html

When we plot the homicide victims in two axes of male and female victims per 100,000. However, the countries of lower homicide concentrated in left bottom region of the graph.

When we show the homicide victims in the logarithmic scale, the country plot are arranged in a blue diagonal line which is calculated in least square method.

The least square values tells us that male victims are 3.534 times larger than female with exponential rate of 1.094 as in the following formula of the predicted model.

Male = 3.534 * Female ^ 1.094

On the contrary of our impression that women are frequently homicide victims, however the homicide analysis in the world revealed the opposite result that male victims are 3 times more.

データジャーナリズムの作品を完成

先日、参加したデータジャーナリズムキャンプ&アウォード2103でテームを編成し、一ヶ月間かけてオープンデータを解析し、記事を作成しました。

えっ!ごみ排出量と外国人が日本の活性化に重要?データ解析で分かった意外な日本社会の構造と安全の影響因子

チームは、ジャーナリスト、アナリスト、エンジニア、デザイナーの四人です。私はエンジニアとして、参加しましたが、かなりアナリスト寄りの仕事を担当しました。
チーム名はデータ・ギャラクシーで、解析結果の図がまるで、宇宙の銀河のように見えるので、そのように名づけました。

記事の概要は以下の通りです。

日本は国際的にも安全の国と言われているが、実は安全とはどのような要因に影響受けるのか分かっていない。安全性を示す代表的指標として、犯罪率をとり、経済、社会、教育、労働などに属する127項目の要因をとり上げて、要因間の関係性を解析してみた。

犯罪率との高い相関係数を示す要因は「人口密集度」と「分類不能の産業の従事者数」だった。外国人率との相関係数はやや高かった。全要因のネットワーク分析を行ったところ、日本全体ではきれいに都会と地方の要因群に分かれた。

中心部では「ごみ排出量」「商業従事者」「飲食店」が非常に高いbetweenness示し、ハブ(いわば太陽に)として両側の都会と地方を繋ぐパイプ的役割をしていた。しかし、東京の場合、外国人が重要な要因となっていた。

我々は犯罪を調べようとし、日本社会の全体構造の犯罪の位置を特定しようとしたが、図らずも日本社会を活性化させるハブを見つけ出すことができた。

日本全体の社会要因の相互相関係数ネットワーク図

東京の市町村の社会要因の相互相関係数ネットワーク図

最初から訳が分からないで走り続けたという感じで、まさにハッカッソン(マラソンから由来するITのイベント)でした。ゴールは全く見えない状態で走り続け、最初は筑波山、次に富士山、最後にヒマラヤ(ちょっと言い過ぎ?)に登りつめた感じです。走り詰めたあとには、ヒマラヤの絶景が見えた感じです。野山を駆け巡り、まさにデータ解析のトレイルランです。とにかく、疲れた、途中で病気にもなったし。

09再帰の海に棲むドラゴンを描いてみよう【問題と解説】

CodeIQの再帰の海に棲むドラゴンを描いてみように挑戦ありがとうございます。
今回は再帰関数に潜む美しい数学的図形を堪能してもらいたいと思って、出題しました。

問題文

再帰の海に棲むドラゴンを描いてみよう

今回の問題は再帰関数を使ってC曲線とドラゴン曲線という再帰曲線を描く問題です。

準備問題 (解答を提出する必要はありません)

この問題はタートルグラフィックスという描画方法を使って作図をします。
タートルグラフィックスとは、描画の際に描画ポイントをダイレクトに示すのではなく、
ペンの場所 (x0, y0) から右に10ピクセル、90度回転、左に10ピクセル進む等のコマンドで描画する方法です。

描画のためのクラスTurtleを定義してください。
Turtleクラスには現在の描画座標 (x0, y0) をプロパティとして持っています。

Turtleクラスには下記のメソッド(関数)を定義してください。
1)new(width, height)
  描画するキャンバスのサイズを指定して、Turtleオブジェクトを生成する。
  ここでは、width=1200, height=800としてください。
2)set_initial_point(x, y)
  描画開始の座標を指定します。
3)plot_line(length, theta)
  角度 theta でlengthピクセル描画します。
  角度 theta の単位はラジアンです。つまり、90度はπ/2。
4)save(o_file)
  ファイル名 o_file にpngまたはjpeg形式でイメージを出力する。

Turtleと同じ機能を示す関数やライブラリがある場合はTurtleを作成する必要はありません。

C曲線 (解答は図のみをPDF形式にして送ってください。プログラムは送る必要はありません)

再帰関数を利用して、C曲線を描いてみましょう。

Turtleに対して、メソッドccurve(length, theta) を再帰的に定義して曲線を描きましょう。

与えられた線の上側にπ/2ラジアン(45度)回転した線分を2つ描きます。これを何度も繰り返し行います。lengthの値が4px以下になった場合に描画するようにしてください。

描画の開始座標はset_initial_point(800, 300)。
ccurve(400, 0) で描画を開始します。

ドラゴン曲線(解答は図のみをPDF形式にして送ってください。プログラムは送る必要はありません)

C曲線を描くことができたら、次はいよいよドラゴン曲線に挑戦してみます。

メソッドdragon(length, theta, flip)を再帰的に定義してドラゴン曲線を描いてみましょう。

C曲線の場合は、新しい線は元の線の同じ側に作っていましたが、ドラゴン曲線は新しい線を作る側が交互に変わっていきます。ドラゴン曲線のステップ2では、最初の線(左)は上側に、次の線(右)は下側に作られています。同じ手順が繰り替えされ、曲線が作られていきます。

lengthの値が5px以下になった時に描画を行います。

ヒント
変数flipは+1, -1の値を取り、線を上側に描くか、下側に書くかの情報を表しています。ステップ1以降、flipの値は以下のように+1, -1が交替で現れます。
+1,-1,+1,-1,…,+1,-1,+1,-1

描画は下記の値で試してください。
set_initial_point(300, 300)
dragon(600, 0, +1)

ここでは数学の座標系を使って説明しましたが、計算機の座標系ではy軸が反転していますので、注意してください。

描画下限値lengthの値を変えてみて、綺麗に描画される値を探してみてください。

【解説】再帰の海に住むドラゴンを描いてみよう 

今回は再帰関数を用いてC曲線とドラゴン曲線を描く問題です。

準備問題は言語やOS等によって異なりますので、個々に対応してください。
タートルグラフィックスは直前の描画終了点を記憶し、描画の長さlengthと描画の方向角度thetaを入力変数として描画を行うシステムです。

C曲線
アルゴリズムが正しければ、以下のような綺麗な図形が現れます。
まるで、宮殿のようですね。
ここでは開口部が上を向いていますが、右に立てて描画することも可能です。形がCの形に似ているので、C曲線と名付けられました。

PythonによるC曲線とドラゴン曲線のプログラム例

#!/usr/bin/python
#
#                                dragon.py
#

from PIL import Image, ImageDraw
from math import cos, sin, pi, sqrt

class Turtle:

    def __init__(self, width=1200, height=800):

        mode = "RGB"        # Black and White
        bg = "#ffffff"
        self.window = Image.new(mode, (width,height), bg)
        self.dr = ImageDraw.Draw(self.window)
    
    def set_initial_point(self, x, y):

        self.x0, self.y0 = x, y

    def plot_line(self, length, theta):

        x1 = self.x0 + length*cos(theta) 
        y1 = self.y0 + length*sin(theta) ###
        #self.dr.line*1
        ### here is a bug for Hatena Diary display
        self.dr.line*2
        self.x0, self.y0 = x1, y1

    def save(self, o_file, form="PNG"):

        self.window.show()
        self.window.save(o_file, form)

    def ccurve(self, length, theta):

        if length <= 4:
            self.plot_line(length, theta)
        else:
            self.ccurve(length/sqrt(2), theta + pi/4)
            self.ccurve(length/sqrt(2), theta - pi/4)

    def dragon(self, length, theta, flip):

        if length <= 5:
            self.plot_line(length, theta)
        else:
            self.dragon(length/sqrt(2), theta + flip*pi/4, 1)
            self.dragon(length/sqrt(2), theta - flip*pi/4, -1)

if __name__ == '__main__':

    d = Turtle(1200, 800)
    d.set_initial_point(400, 300)    # C-CURVE
    d.ccurve(400, 0)
    d.save("ccurve.png")    
    
    d = Turtle(1200, 800)
    d.set_initial_point(300, 300)    # DRAGON CURVE
    d.dragon(600, 0, +1)
    d.save("dragon.png")    

C曲線の解説
C曲線を描くには元の親関数から次々に子供関数を再帰的に定義していく必要があります。
例えば、最初のステップ0では長さlength=1, 角度theta=0 (0度)とすると、次のステップ1では2つの子供関数に引き継がれます。
最初の子供関数では次のようになります。
length = length ÷ √2 = 1/√2
theta = theta + π/4 = π/4 = 45度
もうひとつの子供関数では次のようになります。
length = length ÷ √2 = 1/√2
theta = theta - π/4 = -π/4 = -45度
この操作が繰り返され、長さlengthはどんどん短くなっていきます。
length = 1, 1/√2, 1/(√2)^2, 1/(√2)^3,1/(√2)^4,…
繰り返していくと、最後に綺麗なC曲線ができます。
停止条件がないと無限に計算して止まらなくなるので、lengthがある値以下になったら終了するように設定しておきます。

ドラゴン曲線
アルゴリズムが正しければ、以下のような得体の知れない生き物のような図になります。
解答者の中にはグラデーションをつけて、より神秘的なドラゴンを描いてくれた人もいました。

ドラゴン(竜)に見えますか。ドラゴンと言うよりリーフィーシードラゴンですね。

ウィキペディアより転載)

ドラゴン曲線の解説
ドラゴン曲線の手順は少し面倒です。C曲線と似ていますが、規則的に線の上側(正の角度)と下側(負の角度)に入れ替わるように描画していきます。
親関数は2つの子供関数に引き継がれます。ここで、最初の子供関数を長男関数、二番目の子供関数を次男関数と名づけます。
flipの値を次のように決めます。
上側ならば、flip = +1
下側ならば、flip = -1
長男関数も次男関数も親関数から上側に描くか下側に描くかの情報を引き継ぎますが、必ず長男関数は上側を、次男関数は下側としてflip値を引き継ぎます。
親関数は自分が受け取ったflip値に基づいて、長男及び次男関数を上側ならば、/\の形に、下側ならば\/の形で描画するように指示します。
つまり、
上側(flip = +1) →子供関数それぞれのthetaの増減値を+π/4, -π/4
下側(flip = -1)→子供関数それぞれのthetaの増減値を-π/4, +π/4

各パラメーターをいじってみて、綺麗に描画できる値を探してみてください。

*1:self.x0, self.y0, x1, y1), (0,0,255

*2:self.x0, self.y0, x1, y1), (0,0,255

ビッグデータ人気だが、データサイエンスはまだかな

ビッグデータは相変わらず人気のようです。一方、データサイエンスの方は、わずかに上昇しています。やはり、本質的なものは認知されるのは遅いのでしょうね。

ブレーブボードのホイール交換

ブレーブボードのホイールは後輪がすぐ減ってしまうので、交換しました。


三台のブレーブボード。左が娘の、真ん中の小さいのが息子の、右が私のブレーブボード。裏にキックスケートもあります。


新しいホイールと古いホイール。かなり減っています。こんなに減っているので、乗り心地が悪かったけど、交換したらとてもスムーズで楽しくなった。車のタイヤのローテーションと同じように、前輪を後ろに、後輪に新しいホイールを付けました。

スタ沈後のテイクオフ練習2日目

スタ沈後のテイクオフ修正の為、講習場でテイクオフの練習をした(2日目)。
映像はないが、2本目でテイクオフを失敗して、アップライトが曲がり、両足膝も打ってしまった。まだまだ山飛びへの道は遠いようだ。

3本目から動画を撮った。撮影方向がちょっとずれていた。
3本目に泥だらけの所でボディーランしてしまい、ハーネスがドロドロ。

テイクオフは他の講習生の方がうまいので、ちょっと愕然とした。他の講習生にうまくなりましたよと褒められて、喜びながらも、少し落ち込んだ。

スタ沈後の講習場でのテイクオフ練習

先日のスタ沈で修理に十万以上もかかると言われ、落ち込んでいた。
落ち込みのせいか、季節替わりのせいか、風邪を引いてしまった。

今日久しぶりにショップに行った。修理代を聞いてみると、七万円だった。十四、五万円だったので、意外にも少なくてホッとした。

やはり、テイクオフに問題があるので、シミュレーターで15本位練習をしたら、汗びっしょりなってしまった。

午後の講習場での練習に参加して、テイクオフを見てもらった。ハンググライダーの学生の数が多くて、三回しか飛ぶ練習をできなかった。
テイクオフの走りは良かったが、まだまだテイクオフ直後に機体を浮かそうとする癖が残っているので、後半日練習が必要と言われた。

四日間ぐらい地上での練習が続くのかと思い、覚悟していたが、後一日でまた山飛びできるかもしれないので、心はウキウキ。でも、まだテイクオフ怖い〜