crosshyou

主にクロス表(分割表)分析をしようかなと思います。

社会保障費用統計の分析5 - 減少と増加のシーケンスの連検定をする。(runs.test関数)

今回は、社会保障費用統計のデータを使って、連検定をしてみましょう。連検定とは、データがYesとNo、増加と減少、0と1のように二値からなるデータあって、その並び方がランダムなのか規則性があるのかどうかを調べるものです。

まずは、CSVファイルのデータをread.csv関数で呼び出し、summary関数でデータを要約してみます。

f:id:cross_hyou:20180906144315j:plain

head関数ではじめの6行を表示します。

f:id:cross_hyou:20180906144436j:plain

いままでの分析で、社会保障費用はほとんど増額してきていることが分かっています。

なので、全体に対する比率を計算して、その比率の増減で連検定しましょう。

f:id:cross_hyou:20180906144959j:plain

高齢者に対する社会保障費用は、1980年度は全体の29.17%であるとわかります。

この比率の増減を計算します。diff関数です。

f:id:cross_hyou:20180906145158j:plain

diff関数はデータフレームでは動かず、マトリックスでないと動かないので、as.matrix関数でマトリックスに変換してから、diff関数を使っています。

これを減少と増加の二値のデータに変換します。

f:id:cross_hyou:20180906145443j:plain

as.data.frame関数でマトリックスをデータフレームに変換しなおしてから、ifelse関数で>=0ならば"増加", そうでなければ”減少"の二値のデータにしています。

高齢Cを見てみましょう。

f:id:cross_hyou:20180906145708j:plain

このようになります。

この増加と減少のシークエンスはランダムなのか規則性があるのかどうか、runs.test関数で検定してみます。

f:id:cross_hyou:20180906150357j:plain

runs.test関数は、tseriesパッケージの関数なので、library(tseries)と入力してパッケージを呼び出します。as.factor関数で高齢Cをファクターに変換してからruns.test関数を走らせます。p-valur = 0.006955 < 0.05 ですから、ランダムとは言えないようです。

遺族Cはどうでしょうか?

f:id:cross_hyou:20180906150954j:plain

p-value = 0.05521 > 0.05 なので、遺族Cの増加、減少はランダムな並びと言えます。

障害Cはどうでしょうか?

f:id:cross_hyou:20180906151411j:plain

p-value = 0.5094 > 0.05 なので、障害Cの増加、減少はランダムな並びと言えます。

保険Cはどうでしょうか?

f:id:cross_hyou:20180906151658j:plain

p-value = 0.2676 > 0.05 なので、保険Cの増加、減少はランダムな並びといえます。

家族Cはどうでしょうか?

f:id:cross_hyou:20180906151929j:plain

p-value = 0.1017 > 0.05 なので、家族Cの増加、減少はランダムな並びといえます。

労働Cはどうでしょうか?

f:id:cross_hyou:20180906152231j:plain

p-value = 0.0003149 < 0.05 ですから、労働Cの増加、減少はランダムな並びとはいえません。

失業Cはどうでしょうか?

f:id:cross_hyou:20180906152527j:plain

p-value = 0.04042 < 0.05 ですから、失業Cの増加、減少はランダムな並びとはいえません。

住宅Cはどうでしょうか?

f:id:cross_hyou:20180906152814j:plain

p-value = 0.0001084 < 0.05 ですから、住宅Cの増加、減少はランダムな並びとはいえません。

さいごの項目、その他Cはどうでしょうか?

f:id:cross_hyou:20180906153043j:plain

p-value = 0.01847 < 0.05 なので、その他Cの増加、減少はランダムな並びとは言えません。

以上の結果をまとめると、

ランダムな並びなのは、遺族C、障害C、保険C、家族Cです。

ランダムな並びとは言えないのは、高齢C、労働C、失業C、住宅C、その他Cです。

今回は、runs.test関数で連検定をしてみました。