RとSPSSで重回帰分析の結果を比較してみた

R/Rstudio

Rで分析をやったはいいけど、出力結果があっているかいつも心配なので、今回は重回帰分析を例に、RとSPSSの結果をダミーデータを用いて比較します。

なお、Rは ver.4.0.5(2021-03-31)、SPSSはver.23を使用しています。

重回帰分析の結果をRとSPSSで比較する

まずは、重回帰分析について、RとSPSSで結果を比較します。

Rで重回帰分析を行う際に関数はいくつかありますが、今回はlm関数を使って実施します。

重回帰分析はどんなときに使うか

重回帰分析は、1つの量的な目的変数に対し、複数の説明変数を用いて予測式を立てる際に使用します。

例えば、家賃の値段(万円)について、駅からの距離(m)、部屋の広さ、築年数(年)、から予測するみたいなときに使用します。

Rで重回帰分析をやってみる

Rで重回帰分析を行うにはデフォルトで入っているlm関数を使います。

以下のような形で入力することで結果を出力できます。

reg  <- lm( 目的変数 ~ 説明変数1 + 説明変数2 + 説明変数3 + … 説明変数n ) 
summary(reg)  #結果を出力

ダミーデータは以下のような値にしました。
(某賃貸物件の掲載サイトで出ていた物件の情報をもとに作ってみました)

物件駅からの時間部屋の広さ築年数家賃
A840.291410.2
B720.0327.4
C1029.74138.1
D1019.87146.3
E922.48156.4
F530.73197
G854.473810.79
H1043.94910.9
I1038.031410.3
J1065.392612.8

このデータを変数datに入れたうえで以下のように分析します。

reg<-lm(家賃~駅からの時間+部屋の広さ+築年数, data=dat)
summary(reg)

結果としては以下のような値が出ます。

偏回帰係数はEstimateのところに書かれている値です。

目的変数のうち、部屋の広さ、築年数の偏回帰係数が有意なようですが、駅からの時間は有意じゃないっぽい。

なお、R2は0.9645、調整済みR2も0.9467です。

SPSSで重回帰分析をやってみる

続いて同じ分析をSPSSでやってみます。

SPSSでは、<分析>→<回帰>→<線形>と進んでいって、以下のように入れて、OKを押すと分析が実行できます。

出力される結果は以下のような内容です。

RとSPSSの重回帰分析の出力結果の比較

出力の見た目は若干異なりますが、RとSPSSではだいたい同じ結果が出力されているようです。

SPSSではじめに出力される「モデルの要約」は、Rでは、最後の3行のうちの上2行に出力されています。

なおSPSS上の「推定値の標準誤差」という値は、Rの”Residual standard error”の箇所にあります。

SPSSの「分散分析」として出力されている結果は、重回帰分析で入れた式のモデルに対する評価ですが、こちらは、Rの出力結果の最後の行、F-statistic:の箇所に記載されています。

続いて、SPSS上で係数として出力されている部分ですが、こちらは、R上でのCoefficients:が対応するようです。

ただし、R上で出力されている係数のEstimateはSPSSでいうところの非標準化係数(B)だけであり、標準化係数(β)は出力されないようです。

標準化係数(β)をRで出力させたい場合は、元のデータセットの得点を一度標準化しておく必要があるようです。

R上で以下のように標準化を実施します。

#標準化
dat2<-scale(dat[,c(2:5)]) #datの2列目~5列目(駅からの時間~家賃)を標準化
dat2<-data.frame(dat2) #データフレームの形に戻す

データセットを標準化したうえで再度、lmを使えば今度はEstimateの場所に標準化された偏回帰係数が出力されます。

Estmateの「駅からの時間」を見てみると、 7.672e-02 (e-02は、10-2乗)=0.07672なので、SPSS上で出力されていた標準化係数(β)の.077と一致していることがわかります。また、他の変数のEstimateも同様に、値が一致していることがわかります。

なお、標準化前の結果と比較してわかるように、標準化してもR2の値や、偏回帰係数のt値やp値といった値は変わりません。

まとめ

今回は、RとSPSSで重回帰分析を行った際の出力結果の比較を行いました。

  • 見た目や表示順序は異なるが、基本的に出力される結果は一致している
  • SPSSでは標準化係数(β)も一緒に出力されるがRでは出力されない
  • Rで標準化係数を出力したい場合は、scale()を用いて標準化したうえで重回帰分析を行う

論文に載せるときなどは、標準化係数(β)を出すことが多いと思うので、一度標準化しないといけないのは面倒だなと感じましたが、なんかいい方法あるのかな。

(最初から標準化するのもなんかわかりづらいし…)

わかり次第追記したいと思います。

SPSSの勉強に分かりやすい書籍として、心理学や教育学を勉強している方は、こちらの書籍がおすすめです。

タイトルとURLをコピーしました