Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

Shellコマンド一発で線形回帰

$
0
0

モチベーション

データ解析をしていると、ちょっとしたタイミングで回帰分析をしたくなると思います。バイオや経済などの分野を専攻している人なら特にそうでしょう。そんな時にいちいちRstudioやPycharmなどの統合開発環境を開くのは少々骨が折れます。そこで、そんな面倒くさがりな人向けに、コマンド一発で回帰分析ができるスクリプトを用意しました。

忙しい研究者の皆様の一助になれば幸いです。

CSVをRに読み込ませ、lm関数を適用

処理の内容は、タイトルの通りです。メインの部分はRが動いています。重回帰分析にも対応するために、3番目以降の引数を読み込ませるところが少し難しかったです。それ以外は普通のshell scriptとRのscriptです。

lm.sh
#! /bin/bash csv_path=$1Y_col=$2X_cols=(${@:3:($#-2)})echo Target Variables : $Y_colX_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の場合はインクリメントの部分や配列のインデックス関係で修正が必要です。
動かない等あったらコメントください。
また、もっと効率的な処理等思いつく人は教えていただけると幸いです。


Viewing all articles
Browse latest Browse all 2722

Trending Articles