医療職からデータサイエンティストへスマートフォン用の表示で見る医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。実はとても奥深いことを知りました。今回はRとPythonの算出方法の違いについても触れていきます。(pythonを使ったのはいつぶりだろうか...)データセットの作成まずはデータセットを作成します。50m走のタイムとしましょう。続いて、RとPythonそれぞれで相関行列を算出してみます。1.000000身長、体重、年齢はそれぞれ正の相関、50mタイムは負の相関です。これは、直感的に分かりやすいですね。RもPythonも結果は同じになりましたそれでは、データに欠損を作ってみましょう。1.000000おや、どうやら結果が違うようです。Rのcor関数についてこれは、欠損値の扱い方がRとPythonでは違うために起こります。Rでは欠損を除いて関数を適応する際にna.rm=Tと指定することがあるかと思います。(meanなど)しかし、cor関数にはna.rmが指定できず、代わりにuseという引数を使って、欠損の扱いを指定できます。useにはeverything(デフォルト)all.obscomplete.obspairwise.complete.obsが指定できます。試しにやってみましょう。1.0000000順番にいきましょう。デフォルトのeverythingですが、これは変数に欠損が一つでもあれば、その変数とその他の変数との相関係数を算出しません。all.obsはさらに厳しくて、全てのデータが完璧に揃っていた場合のみ相関行列を算出します。complete.obsをpairwise.complete.obsが少しややこしいですが、下の図をご覧ください。complete.obsは、欠損のある行を全て除いて相関係数を算出しているのに対して、pairwise.complete.obsは欠損のある変数との相関係数のみcomplete.obsを使って相関係数を算出しています。weightとtime50mの時は真ん中3人分だけが使われているため、complete.obsと同じ結果になっています。逆にheightとageは欠損がないので、everytingと同様の結果になっています。Pythonの場合はpairwise.complete.obsと同じことを行なっています。ちなみにRでは共分散を算出するcov関数でも同様の引数を指定できます!相関行列の注意点ここでpairwise.complete.obsの相関係数、もしくはpythonの相関係数に注目してみてください。本来、0.92と高い相関にあったheightとweightの相関係数が0.52と小さな相関になっています。これは本来相関関係にあるはずのペアデータが欠損しているためです。大量のデータかつ完全ランダムな欠損であれば、pairwise.complete.obsやpythonのデフォルトでも問題ありませんが、欠損に規則性があった場合、(例えば高学年は体重を測定していないとか)重要な相関関係を見逃す可能性もあります。12:52以外に奥深いR,Pythonでの相関行列の計算方法Tweet関連記事2019-07-20facebookの時系列予測パッケージ{prophet}を使って、ブログアクセス数を予測する。はてなブログPro大学院で疫学統計を学んでいます。データサイエンティストを目指して、初心者目線から統計学、機械学習など学んだことをまとめていきます。パッケージ{prophet}を使って、ブログアクセス数を予測する。medi_data0826スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。