データのお砂場(24) R言語、Seatbelts、英国における道路交通事故の死傷者数

Joseph Halfmoon

R言語のサンプルデータセットをABC順(大文字先)で端から試してみています。今回は英国の交通事故のデータです。かなり古いシートベルトの着用が法制化される前後のもの。シートベルトの効果が分かる?時系列データで季節変動もあり、その中で法律の施行やら燃料費やらがどう影響を与えているのか処理せよと。

※「データのお砂場」投稿順Indexはこちら

いつもの通り、データセットの解説ページへのリンクを貼っておきますが、今回はちょっと訳ありな感じです。

Road Casualties in Great Britain 1969–84

ABC順に見ているので、私としては、Seatbelts というサンプルデータのつもりなのですが、上記のページには、以下の記載もあり。

UKDriverDeaths 

後で UKDriverDeaths の順番が来たら確かめますが、データの一部は重複しているみたいです。

まずは生データ

いつものように、生データの吟味から入りました。「毎月」の時系列データです。1969年から1984年にかけてのもの。フィールドは多いです。DriversKilledは死者数。drivers、front、rear は死傷者数のようです。最近みたいに3列シート車が無かったから front と rear で良いのかね?細かいツッコミはいらんよね。

kmsは「走行距離」。単位は不明です。petrolpriceはその名の通り燃料の値段みたいです。英国だからポンドなのかな?米国だと、gas ということが多いですが(実際ガソリン車ばかりだし)、欧州では petro いうのが普通ですな。最近は知らず、欧州はディーゼル車も多かったし。

その後の vankilled は van(貨物車?大きいやつじゃないよね)の死者数みたいです。何でバンが別枠?

そして最後の law が、シートベルト着用の法律の施行で1になる変数みたいです。とりあえずデータセットの頭の方を見たところが以下に。

RawData

これまた「とりあえず」時系列データ全体を時系列プロットに丸ごと投入してみました。こんな感じで。

ts.plot(Seatbelts)

しかし、ダメですな。kmsなどという単位は不明ながら1万を超えるような数字とpetrolpriceのような1以下のものまであるので丸ごと投入ではなんだか分かりません。ダメダメのグラフが以下に。ts_000

かろうじて、走行距離に年間変動というか、季節変動の波があることが分かります。走行距離と事故の件数などには素人にも相関があると想像できるので、多分、死傷者統計にも季節変動があることが予想されます。

まずは自力で

今回のデータセットの説明には処理例が記されていたのですが、まずは自力でデータの傾向を掴んでおきたいです。以下のように考えました。

  1. 法律の施行前と施工後できっと変化があるに違いない。だってそういう趣旨のサンプルデータでしょ。
  2. DriversKilled(死者数)とdrivers(死傷者数)の桁が違うので、そのままではグラフにし難いです。割ってやって死亡率?にすればグラフにしやすいのでないか。そしてシートベルト着用の法制化で率が下がるんでないかい?
  3. frontとrearとあるが、その時代法制化されたのはフロントだけだったのではないかと勝手に想像。日本でも後部座席まで必須になったのは大分後だったし。きっと効果があったのはfrontだろうから、グラフをかけば分かるんでないかい。

若者は昔から後部座席のシートベルトとか、エアバッグなどあったように思うかもしれませんが、そんなこともないです。特にエアバッグの普及は、加速度センサと半導体の進歩があったればこそ。知らんけど。

以下が自前で作成したグラフのコードです。たった5行ですが、サイズの調整などに大分試行錯誤しました。

par(mfrow=c(3,1), oma=c(1,0,1,0), mar=c(3,4,1,1))
ts.plot(Seatbelts[,1]/Seatbelts[,2]*100, gpars=list(ylab="mortality[%]", col=2), main="Seatbelts")
ts.plot(Seatbelts[,3], Seatbelts[,4], gpars=list(ylab="killed or injured", lty=c(1:2),col=(1:2)))
legend(locator(1), c("front","rear"), lty=c(1:2),col=(1:2))
ts.plot(Seatbelts[,8], gpars=list(xlab="year", ylab="Law", col=3),lwd=4)

冒頭のアイキャッチ画像と同じグラフです。一番下が法律の施行タイミングを示すもの。芸がないグラフです。一番上が、ドライバの全死傷者中の死亡率グラフ。案に相違してシートベルトが法制化されても減った感じが全然しないです。真ん中が front と rearに分けた死傷者数のグラフ。ここの front はシートベルトの効果てきめんな感じ。法律のお陰で減ったように見えます。しかし rear は変わらず。多分英国でも、この時点では rearのシートベルト については法制化されなかったという想像は当たっている?きっとこのころの車の後部座席にはシートベルトが装備されていなかったのかもしれません。 ts_002

私なんぞは、上記のグラフを見て納得してしまいました。しかし、統計としてはそんな感想では終わらせられんようです。統計的に有意と言えるのかと。

例題の処理

処理の流れとしてはこんな感じでしょうかね。

  1. 季節変動があるや否や
  2. あるのであれば季節変動分とその他変動要因を「分けられる」ようにする
  3. その上で法律の施行なりなんなりの効果をみる
季節変動などの確認

法律の施行は1983年1月末みたいです。季節変動の確認はそれ以前のデータを使って処理しているみたい。window関数使えば一部のデータを取り出せるのですな。そして生のままのデータでは変動が大きいためか、log10とってます。こういうテクは素人はよく思いつかないよなあ。そして、自己相関などとって季節変動というか年周期変動を確認しているようです。ex00opr

上記のグラフが以下に。acf(自己相関)みると、1.0(つまり1年単位)のところに山があり、点線の範囲を超えているので年を周期とする変動は有意、といえるのですかね。pacfの偏自己相関の方はどうみたらよいのでしょ?ex00

ともあれ、季節変動があることが明らかなので、これを計算することにしたみたいです。時系列で度々出てくる arimaが登場。そして法律施行前のデータから推定した季節変動を、法律施行後に向けて延長?してみせると。それと実データを比べることで、どうだ、季節変動の範囲より明確に落ちているのは別の要因あるからだ、とドヤ顔?

ex01opr

以下グラフの赤点線は多分、予想の延長。青の破線はその上限と下限(何で2倍でよいのかは不明ですが)、そして黒実線は実データです。実データは下限を下回っているようにみえます。最後、元に戻っている感じが一瞬するけれど。。。確かにこうしてみると法律の効果があったような。ex01

法律の効果だけでなく、走行距離とか石油価格とか他の要因もあるので、その計算もしているみたい。

ex02opr

素人はよう付き合いきれません。もう少し頑張らないと理解できない。

データのお砂場(23) R言語、Puromycin、酵素反応の反応速度とな? へ戻る

データのお砂場(25) R言語、Theoph、テオフィリンの薬物動態とな へ進む