※R言語入門のトップページはこちら今回から、いよいよR言語を使って行う解析に入ります。最初の解析は、線形モデルによる回帰分析です。次の3種類がR言語で回帰分析用の関数として用意されているものです。......最小二乗法を用いた回帰分析。......線形モデルを用いた回帰分析。......一般線形モデルを用いた回帰分析。今回はこのうちの2つ目。”lm()”という関数を用いて、線形モデルによる回帰分析を行う方法について、説明してきます。“lm()”関数を用いて、回帰分析を行う場合は以下のように記述します。#yは目的変数のベクトル。#yは目的変数のベクトル。datは解析用に使うデータフレームというように記述しても構いません。このプログラムは何を示しているのでしょうか。$$における,目的変数yと説明変数xをベクトルで指定して、lm関数の引数にします。※¥(ε¥)は誤差項。R上でのlm関数の使い方は、lm(目的変数のベクトル~説明変数のベクトル)もしくは、lm(目的変数~,.目的変数と説明変数が格納されたデータ)ということになるわけです。して、Rが回帰係数の予測値を自動で算出してくれます。回帰係数\(β=0\)のt検定も自動で行い、p値やt値を簡単に出力できます。この”lm()”関数を実際に使って解析をしてみます。”lm()”関数を用いて、単回帰分析では実際に関数”lm()”を使って回帰分析をしてみましょう。そのために、適当な数値を入れたベクトル、x,yを用意します。今回はこのxとyの関係について解析していきます。yを目的変数、xを説明変数に指定します。c(10,20,10,40,50,10,10,20,70)これにlm関数を適用させてその結果をansという変数に代入します。0.2360すると、こんな感じになります。先ほどの結果だと回帰係数しか表示できていませんでしたね。ここで回帰分析の結果に”summary()”という関数を適用させると回帰分析のより詳細なデータをチェックすることができます。summary関数の結果をs.ansという変数に代入して結果を確認してみます。0.01861この結果の見方を表にまとめました。その回帰分析による、回帰係数の推定値(推定値の実現値)。決定係数R^2であり、単回帰分析の場合は、xとyの相関係数の2乗がこれを表している。回帰係数が0(説明変数は目的変数に影響を与えない)であるという帰無仮説に対する仮設検定結果のp値。誤差項の標準偏差の推定値。各回帰係数の推定量の標準誤差。回帰係数=0(説明変数は目的変数に影響を与えない)であるという帰無仮説に対するt検定によって計算される値。回帰分析した結果をR上で見るだけならいいのですが、出来れば保存しておきたいですよね。後々解析結果を確認したり、ほかの人に見せたりするかもしれません。そんな時にはエクセル(csv)ファイルに結果を出力しましょう。その前に体裁を整える必要があります。これはエクセルファイルに見やすい結果を出力するためです。それが以下のプログラムになります。体裁を整えた結果をresultという変数に代入しています。#2行目の5列目と6列目は、上の行と同じなので空にする。ここでは回帰係数とAICとデータの総数を抽出して変数に格納したあと、resultという変数に全てまとめています。そこで”cbind()”という関数を使っています。この関数は、行数が同じ行列同士を横にしてくっつけて新しい行列を作るというものです。ここではcoe,aic,Nをくっつけています。これでエクセルファイルに出力するためのデータresultが出来上がりました。エクセルファイルに出力するときには関数”write.table()”というのが用意されているのでそれを使います。write.table(出力変数,出力ファイル名,オプション)という形で使います。今回はresultという変数を”回帰分析.csv”というファイルに出力します。......列名も出力を使っています。※T,FはTURE,FALSEでも可。列名とresultの中身を別々に出力しているので、write.tableを2回使用しています。プログラムwrite.table(matrix(c(“”,colnames(result)),nrow=1),”回帰分析.csv”,append=T,quote=F,sep=”,”,row.names=F,col.names=F)write.table(result,”回帰分析.csv”,append=T,quote=F,sep=”,”,row.names=T,col.names=F)これで、今作業しているディレクトリに新しく”回帰分析.csv”というファイルが作成されているはずです。中身を見るとかこんな感じ。p値,t値、aicなどももきちんと出力されています。実データを用いた重回帰分析lmを用いた回帰分析の方法は、ご理解いただけたでしょうか。ここからは、説明変数を複数使う、重回帰分析を実データを用いて紹介していきます。重回帰分析と言っても、使う関数も単回帰分析と変わらず、プログラムの書き方も単回帰分析とほぼ同じです。↓このデータを使って、解析するので一緒にやる方は是非ダウンロードを!sample-data今回は、目的変数に肺活量、説明変数に血圧と体重を入れて重回帰分析をしてみます。データをデータフレームに読み込みましょう。read.csv(“sample-data.csv”,header=T,row.names=1)このdfに回帰分析の関数”lm()”を使います。以上が重回帰分析のプログラムです。単回帰分析とほとんど変わりありませんよね。違いは説明変数のところに変数が2種類入っていることくらいでしょうか。重回帰分析をする場合、関数”lm()”はlm(目的変数のベクトル~説明変数1のベクトル+説明変数2のベクトル+説明変数3ベのクトル)というような具合で使います。説明変数は複数入れることが可能で、そのときは”+”によって区切るようにして下さい。結果を整理してエクセルファイルに出力するプロセスは、単回帰分析と全く一緒です。標準誤差、t値やp値aic等を出力しましょう。“重回帰出力test1.csv”write.table(matrix(c(“”,colnames(result)),nrow=1),filename,append=T,quote=F,sep=”,”,row.names=F,col.names=F)write.table(result,filename,append=T,quote=F,sep=”,”,row.names=T,col.names=F)このような結果が出力されました。重回帰分析プログラムのもう一つの形lm()関数を用いて重回帰分析する場合、ほかにも書き方があります。その一つがこれから紹介するものです。変数dfに読み込んだエクセルファイルの中から重回帰分析に使いたい列だけをピックアップします。その結果を新しい変数datに代入します。df[,c(3,2,1)]今回の重回帰分析にはdfの1,2,3列目だけを使用します。目的変数は3列目の肺活量、説明変数に1,2列目の年齢と血圧を使います。するとこのようなプログラムで重回帰分析できます。lm(df$肺活量~.,data=dat)つまり、lm(目的変数の列~.,data=解析に使うデータ)というような具合で使います。目的変数以外の全てが説明変数として利用されます。説明変数が多くなる場合、こちらのほうが完結なプログラムを書けるので便利です。まとめと復習用コピペプログラムR言語での回帰分析いかがでしたでしょうか。回帰分析の方法は、分析したいデータをベクトルでまとめてlm(目的変数~説明変数)とするだけです。回帰分析の理屈などがあまり分かっていなくても、この第3回の通りにやればRでは回帰分析が出来てしまいます。非常に簡単に出来るのでぜひ覚えておきましょう。ちなみに今回やったようなことをPythonでやりたい方はこちらを参考にしてください。→Python3で線形モデルによる回帰分析とプロット今回使ったプログラムを全文おいていきますので、復習用に使ってください。G検定を取得するメリットを解説!最弱オセロを初めて攻略した天才オセロ高校生。TrendCOMMENTコメントを残すコメントをキャンセルメールアドレスが公開されることはありません。コメント*お名前*メールアドレス*プライバシーポリシーはこちら上に表示された文字を入力してください。