モチベーション
データ解析をしていると、ちょっとしたタイミングで回帰分析をしたくなると思います。バイオや経済などの分野を専攻している人なら特にそうでしょう。そんな時にいちいちRstudioやPycharmなどの統合開発環境を開くのは少々骨が折れます。そこで、そんな面倒くさがりな人向けに、コマンド一発で回帰分析ができるスクリプトを用意しました。
忙しい研究者の皆様の一助になれば幸いです。
CSVをRに読み込ませ、lm関数を適用
処理の内容は、タイトルの通りです。メインの部分はRが動いています。重回帰分析にも対応するために、3番目以降の引数を読み込ませるところが少し難しかったです。それ以外は普通のshell scriptとRのscriptです。
{lm.sh}
#! /bin/bash
csv_path=$1
Y_col=$2
X_cols=(${@:3:($#-2)})
echo Target Variables : $Y_col
X_cols_quoted=()
for ((i=0 ; i < ${#X_cols[*]} ; i++)) ; do
X_cols_quoted+=(\'${X_cols[i]}\')
done
X_cols_quoted=`echo ${X_cols_quoted[@]} | tr " " ","`
echo Explanatory Variables : $X_cols_quoted
Rscript -e "\
df <- read.csv('$csv_path', row.names=1);\
X <- df[, c($X_cols_quoted)];\
y <- df[, '$Y_col'];\
analyze_df <- data.frame(cbind(y, X));\
colnames(analyze_df) <- c('$Y_col', $X_cols_quoted);\
res <- lm($Y_col~., data=analyze_df);\
summary(res);\
"
準備
コマンドラインを開き、下記。
vim /usr/local/bin/lm
lm.sh
の内容をコピペしましょう。コピペし終わったら、Escキー+wq:
chmod
も忘れずに。
chmod 700 /usr/local/bin/lm
使い方
これだけです。y-name
は目的変数の名前、X-name1
,X-name2
,...,は、説明変数の名前を入れてください。
lm [path-to-csv] [y-name] [X-name1] [X_name2] ・・・
Bashで叩く必要があります。Zshの場合はインクリメントの部分や配列のインデックス関係で修正が必要です。
動かない等あったらコメントください。
また、もっと効率的な処理等思いつく人は教えていただけると幸いです。