医療統計学を学ぶ大学生のブログ

医療統計学、因果推論を専攻しています。R, SASユーザーです。

SASによる解析:CORRプロシジャでの相関係数の算出

2つの量的データの関係を視覚的にみる方法としては、散布図や回帰直線などがありますが、それ以外に関係性を見る一つの指標に相関係数があります。今回はSASのCORRプロシジャを使った相関係数の算出についてまとめます。

 

相関係数について

相関(correlation)は、二つの量的データ、確率変数が線形関係にあるという条件の下で、どれほど関係しているのかを数量的に見たものです。そのため直線的な関係以外が考えられる場合にはその利用には注意が必要です。ここでは、CORRプロシジャで算出可能な2つの相関係数についてまとめます。

 

ピアソンの相関係数(Peason's coefficient of correlation)

ピアソンの相関係数は最も一般的に使われており、単に相関係数という場合にはこれを指しているケースがほとんどです。ピアソンの相関係数rは、2つの変数xi, yi(i=1, ・・・, n)が観測された場合次のように算出されます。

f:id:NorihiroSuzuki:20210827164637p:plain

 

この共分散をそれぞれの標準偏差で割った式を見てもわかるように、分母分子の次元が一致し単位がキャンセルされるため、相関係数は単位を持たない無名数となります。また、コーシー・シュワルツの不等式より容易に、-1≦ r ≦1 となることが証明できます。2つの変数が直線的な関係にある場合には、rの絶対値の値は1に近づき、逆に直線的な関係がみられない場合には0に近づきます。rの絶対値が1の時は、得られたxとyの値は完全な直線関係にあることを意味しており、散布図と回帰直線を書くとすべての(x,y)の組は直線に乗ります。

 

また、xの値が増加したとき、yの値も増加する傾向がある場合には、相関係数は正の値をとり、回帰直線は右上がりになります。この場合にxとyの間には正の相関(positive correlated)があると言います。それに対して、xが増加したときyが減少がする傾向がある場合には、回帰直線は右下がりになり、xとyの間には負の相関(negative correlated)があると言えます。

 

ピアソンの相関係数の限界

このピアソンの相関係数rには大きく3つの限界があります。

第一に、あくまでこの相関係数は直線的な関係を見ているため、xとyが非線形な関係を持つ場合には妥当な指標ではなくなることです。

第二に、データに外れ値が含まれている場合にはその扱いに注意しなければならない点です。つまり、相関係数rは、極端な値の影響を大きく受けてしまうということです。(外れ値に敏感)

そして第三に、相関係数は得られたデータでのxとyの関係性を述べたものであり、広く一般化できるものではないことです。(外装NG)

また、相関関係と因果関係をごちゃまぜにしないことも非常に重要です。

 

スピアマンの順位相関係数(Spearman's rank correlation coefficient)

スピアマンの順位相関係数は、ノンパラメトリックな手法の一つであり、外れ値に対してより頑健な手法です。xとyについてそれぞれ順位付けすることにより、以下の式で算出可能です。また、diはxiの順位とyiの順位との間の差を、nはサンプルサイズを意味しています。

 

f:id:NorihiroSuzuki:20210827172136p:plain

 

このスピアマンの相関係数も、ピアソンの相関係数と同じく-1から1までの範囲をとり、絶対値が1に近い場合には直線的な関係があることを、0に近い場合には直線関係がないことを意味します。

また、順位付けを行うにあたってはタイ(同率)となる場合は考えられますが、その場合、タイの観測地については平均順位を割り付けます。

ただこのスピアマンの順位相関係数は外れ値に対して頑健であるというメリットを持ちますが、逆に分布が分かっている場合にはその情報をすべて使わないというデメリットも持ちます。

 

SASでの実行

corrプロシジャの基本的なステートメントはこのようになっています。

PROC CORR ;
 BY variables ;
 FREQ variable;
 ID variables;
 PARTIAL variables;
 VAR variables;
 WEIGHT variable;
 WITH variables;
run;

 

それぞれの、ステートメントについては以下の通りです。

 

各項目のオプションについてはこちらのガイドの3P以降を参考にしてください。

 

解析例

SASHELP内にある、CARSデータを使って、変数間の相関係数を求めてみます。CARSデータに含まれる変数についてはこんな感じ。

f:id:NorihiroSuzuki:20210827181505p:plain

 

今回は分析変数を馬力と、エンジンサイズ、相関変数をシリンダとMPG_Highwayとしています。

 

 

f:id:NorihiroSuzuki:20210827182411p:plain

結果はこんな感じ

f:id:NorihiroSuzuki:20210827180706p:plain

 

相関分析もこのプロシジャで実行可能なので、それもまた別でまとめます。

 

以下コピペ用

ods noproctitle;

ods noproctitle;

ods graphics / imagemap=on;
proc corr data=SASHELP.CARS pearson nosimple noprob plots=none;

 var EngineSize Horsepower;

 with Cylinders MPG_Highway;

run;