1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-11-24

モチベーション

データ解析をしていると、ちょっとしたタイミングで回帰分析をしたくなると思います。バイオや経済などの分野を専攻している人なら特にそうでしょう。そんな時にいちいち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の場合はインクリメントの部分や配列のインデックス関係で修正が必要です。
動かない等あったらコメントください。
また、もっと効率的な処理等思いつく人は教えていただけると幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?