www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

東京都の新型コロナ陽性者数のデータ分析9 - R言語のglm関数で退院済フラグを性別と年代でロジスティクス回帰分析

 

www.crosshyou.info

 の続きです。

今回は、R言語のglm関数で退院済フラグをresponse variableに、性別と年代をexplanatory variablesにしてロジスティクス回帰分析をしてみます。

まず、退院済フラグ、性別と年代だけのデータフレームを作ります。

f:id:cross_hyou:20200613083350j:plain

head関数、str関数でデータフレームを確認します。

f:id:cross_hyou:20200613083444j:plain

table関数で年代を整理してみます。

f:id:cross_hyou:20200613083541j:plain

不明が8人います。これをデータフレームから削除します。

f:id:cross_hyou:20200613083640j:plain

100歳以上を90代以上にします。

f:id:cross_hyou:20200613083737j:plain

90代を90代以上にします。

f:id:cross_hyou:20200613083820j:plain

10歳未満を5、10代を15、20代を25と数字だけにします。

f:id:cross_hyou:20200613083927j:plain

この年代を数値型に変換します。

f:id:cross_hyou:20200613084024j:plain

これで年代の下準備はおわりました。

次は性別です。

f:id:cross_hyou:20200613084117j:plain

factor型だと処理が面倒なので、文字列型にしました。

調査中と不明をデータフレームから削除します。

f:id:cross_hyou:20200613084251j:plain

性別をfactorに戻して、データフレーム全体をsummary関数で確認します。

f:id:cross_hyou:20200613084407j:plain

年代を横軸、退院済フラグを縦軸にして散布図を描きます。女性は赤、男性は緑で表します。

f:id:cross_hyou:20200613084616j:plain

f:id:cross_hyou:20200613084634j:plain

jitter関数で微妙に値をずらしています。

 

それではglm関数でロジスティクス回帰分析をします。

f:id:cross_hyou:20200613084828j:plain

年代:性別の交互作用は必要ないようです。

f:id:cross_hyou:20200613084929j:plain

anova関数で年代:性別のあるglm1と無いglm2を比較しました。Pr(>Chi)が0.4675と0.05よりも大きいですから、glm1とglm2では有意な差はないです。単純なほうのglm2を採用します。

f:id:cross_hyou:20200613085135j:plain

年代の係数の符号はマイナスです。つまり年代が上がるほど退院済フラグが0になるということです。

また、男性の係数の符号はプラスです。つまり男性のほうが女性よりも退院済フラグが1になるということです。

今回は以上です。

 

東京都の新型コロナ陽性者数のデータ分析8 - R言語のfisher.test関数で性別と退院済フラグのクロス表分析をする。

 

www.crosshyou.info

 の続きです。

今回は、性別と退院済フラグのクロス表分析をします。

f:id:cross_hyou:20200607171117j:plain

性別の調査中と不明を削除しましょう。

f:id:cross_hyou:20200607171222j:plain

table関数でクロス表を作ります。

f:id:cross_hyou:20200607171319j:plain

男性のほうが退院済フラグが1の比率が多いようです。

prop.table関数で見てみましょう。

f:id:cross_hyou:20200607171428j:plain

男性は90%, 女性は86%が退院済フラグが1です。

今回は 2x2 のクロス表なので、カイ二乗検定ではなくて、Fisher's Exact Testをします。

f:id:cross_hyou:20200607171632j:plain

p-value = 4.514e-05と0.05よりも小さいです。性別と退院済フラグは関連性があります。

退院済フラグは年代と関連性があり、女性のほうが年代が高い人が多いからかもしれないです。

退院済フラグは、性別と年代の2つの変数で分析しないといけないような気がします。

今回は以上です。

 

東京都の新型コロナ陽性者数のデータ分析7 - R言語のchisq.test関数で年代と退院済フラグのクロス表分析とglm関数で回帰分析をする。

 

www.crosshyou.info

 の続きです。

今回は年代と退院済フラグでクロス表を作成します。

f:id:cross_hyou:20200607145950j:plain

年代の不明を削除して、100歳以上を90代と一緒にして、90代以上にしましょう。

f:id:cross_hyou:20200607150701j:plain

クロス表を作成します。

f:id:cross_hyou:20200607150851j:plain

prop.table関数で比率をみてみます。

f:id:cross_hyou:20200607151058j:plain

年代が上がるほど、退院済フラグが0の比率が高くなっています。

chisq.test関数でカイ二乗検定をしてみます。

f:id:cross_hyou:20200607151333j:plain

p-value < 2.2e-16と0.05よりも小さいですから、年代と退院済フラグは関連性があります。

年代が上がるほど退院済フラグが0の比率が高く、逆に言えば退院済フラグが1の比率が低くなっていますので、

 

Statistics: An Introduction Using R

Statistics: An Introduction Using R

 

 を参考にして、Proportion Dataの分析をしてみます。

まず、年代x退院済フラグの1列目と2列目をresponse variablesにします。

f:id:cross_hyou:20200607152112j:plain

次にexplanatory variableを用意します。10歳未満を5, 10代を15, 20代を25、というようにしましょう。

f:id:cross_hyou:20200607152313j:plain

plot関数で横軸に年代, 縦軸に退院済フラグが0の比率のグラフを描いてみます。

f:id:cross_hyou:20200607152726j:plain

f:id:cross_hyou:20200607152735j:plain

glm関数で回帰分析をしてみます。

f:id:cross_hyou:20200607152953j:plain

x の係数の符号はプラスです。xが大きくなるほど、yの比率は大きくなるということですね。

さきほどの散布図にモデルの予測値を追加してみます。

f:id:cross_hyou:20200607153402j:plain

f:id:cross_hyou:20200607153418j:plain

10代未満から20代のフィットが今一つですね。

xの2乗項を追加したモデルを試してみます。

f:id:cross_hyou:20200607153807j:plain

anova関数で、model1とmodel2を比較しました。model1とmoel2は有意に違います。

そして、model2のほうがResid. Devが小さいのでよさそうです。

summary関数で見てみましょう。

f:id:cross_hyou:20200607154026j:plain

xの2乗項も係数のp値は0.05以下で有意です。AICは86.662とmodel1の143.64よりも小さいです。

散布図にmodel1の予測値、model2の予測値を重ねて描きましょう。

f:id:cross_hyou:20200607154825j:plain

f:id:cross_hyou:20200607154838j:plain

model2のほうがフィットしています。

今回は以上です。

東京都の新型コロナ陽性者数のデータ分析6 - R言語のchisq.test関数で年代と性別のクロス表分析をする。

 

www.crosshyou.info

の続きです。

今回は、年代と性別でクロス表分析をします。

f:id:cross_hyou:20200607093710j:plain

性別の調査中と不明、年代の不明を削除しましょう。

f:id:cross_hyou:20200607094010j:plain

まず、年代の不明を削除しました。

次に、性別の調査中と不明を削除します。

f:id:cross_hyou:20200607095606j:plain


性別の100歳以上を90代と合計して、90代以上とレベル名を変更します。

f:id:cross_hyou:20200607094717j:plain

集計用_年代、集計用_性別の不要なレベル名を削除します。

f:id:cross_hyou:20200607094956j:plain

これでデータの整理はできました。

table関数でクロス表を作ります。

f:id:cross_hyou:20200607095722j:plain

prop.table関数で比率で表示しましょう

f:id:cross_hyou:20200607100230j:plain

女性のほうが比率が高いのは、10代、20代、80代、90代以上です。80代と90代以上はそもそも女性のほうが人口多いからでしょうが、10代、20代が多いというのは何故でしょうね。

chisq.test関数でカイ二乗検定をします。

f:id:cross_hyou:20200607100523j:plain

p-value < 2.2e-16と0.05よりも小さい値です。年代と性別は関連性があると言えます。

$stdresで調整済み残差を見ましょう。

f:id:cross_hyou:20200607100750j:plain

女性のほうが有意に多い年代は、10代、20代、80代、90代以上です。逆に有意に少ないのは40代、50代、60代です。

今回は以上です。

 

東京都の新型コロナ陽性者数のデータ分析5 - R言語のchisq.test関数で曜日と退院済フラグのクロス表分析をする。

 

www.crosshyou.infoの続きです。

今回は曜日 x 退院済フラグでクロス表を作ります。

 

f:id:cross_hyou:20200606194906j:plain

これは、不要なデータを削除する必要はないですね。

prop.table関数で比率を見ましょう。

f:id:cross_hyou:20200606195141j:plain

金曜日が退院済フラグが0、退院していない人が多いです。

barplot関数でグラフにします。

f:id:cross_hyou:20200606195448j:plain

f:id:cross_hyou:20200606195459j:plain

prop.table(曜日退x院済フラグ, margin = 2)[ , 1]と[ , 1]を付けて1列目だけをグラフにしています。金曜日が高いのがよくわかります。

chisq.test関数でこの金曜日の比率の高さは偶然の範囲なのかどうか検定します。

f:id:cross_hyou:20200606195815j:plain

p-value = 0.0005599と0.05よりも小さいです。金曜日の比率の高さは偶然とは言えないです。

$stdresで調整済み残差を見ます。

f:id:cross_hyou:20200606200033j:plain

月曜日と金曜日が有意に0が多く、土曜日は有意に0が少ないです。

今回は以上です。

 

東京都の新型コロナ陽性者数のデータ分析4 - R言語のchisq.test関数で曜日と性別のクロス表分析をする。

 

www.crosshyou.infoの続きです。

今回は、曜日と性別でクロス表分析をします。

まずは普通にtable関数で集計します。

f:id:cross_hyou:20200606120942j:plain

調査中と不明は削除しましょう。

f:id:cross_hyou:20200606121031j:plain

集計用に作成した曜日と性別で集計します。

f:id:cross_hyou:20200606121141j:plain

prop.table関数で男女の比率を見てみます。

f:id:cross_hyou:20200606121241j:plain

prop.table関数でmargin = 1 とすると行ごとに比率を計算します。火曜日は女性の比率が他の曜日と比べて低く、日曜日は高いです。

barplot関数でグラフにしてみます。

f:id:cross_hyou:20200606121437j:plain

f:id:cross_hyou:20200606121447j:plain

それほど大きな違いとは見えないです。

chisq.test関数でカイ二乗検定をします。

f:id:cross_hyou:20200606121656j:plain

p-value =0.2172と0.05よりも大きいです。曜日によって性別に違いがあるとは言えないです。

今回は以上です。

 

東京都の新型コロナ陽性者数のデータ分析3 - R言語のchisq.test関数で曜日と年代のクロス表分析をする。

 

www.crosshyou.info

 の続きです。

前回は、1変数について陽性者数を集計しました。

今回は、2変数で集計してみます。

曜日 x 年代、曜日 x 性別、曜日 x 退院済、年代 x 性別、年代 x 退院済、性別 x 退院済、の6つです。

f:id:cross_hyou:20200606093330j:plain

10歳未満と10代を統合、90代と100歳以上を統合、不明は削除しましょう。

f:id:cross_hyou:20200606094020j:plain

!= "不明" で不明のデータは削除して、集計用_年代のファクターレベルを書き替えました。

このデータで集計してみます。

f:id:cross_hyou:20200606094337j:plain

よくわからないですね。。prop.table関数で比率にしてみます。

f:id:cross_hyou:20200606094551j:plain

どこも0.00 ~ 0.03までで突出して多いところは無さそうですね。

chisq.test関数で、曜日と年代は関連があるかどうか検定します。

f:id:cross_hyou:20200606094850j:plain

p-value = 0.0001412と0.05よりも低いです。どこかの組合せは偶然よりも多い(少ない)患者数ということですね。

$stdresで調整済み残差をみてみます。

f:id:cross_hyou:20200606095347j:plain

調整済み残差は絶対値で2よりも大きいところが有意に違いがあるところです。

10代以下は木曜日が多く、金曜日が少ない

20代は無し、30代は無し、40代は無し、

50代は木曜日と日曜日が少なく、土曜日が多い

60代は無し、70代は無し、

80代は火曜日が少なく、金曜日が多い、

90代以上は水曜日が少なく、日曜日が多い、
ということがわかりました。

今回は以上です。