【初心者向け】10行以内のスクリプト(9.bashから実行するR)
pythonで色々なライブラリを使えば、「少ないコードでもちょっとした事が出来て、少なければ5行程でもちょっとしたスクリプトが作れ、便利だな。」と思ったので、pythonやその他、コマンドを羅列しただけのものも出てくるかも知れませんが、10行程のスクリプトを不定期で投稿してみようと思います。
第9回として、bashから実行するRを投稿したいと思います。
pythonも便利だと思うのですが、統計やデータの分析に関しての情報を色々と探す過程で、Rのコードも見る機会があり、Rの環境も試してみたいと思い、環境を準備、様々なサイトを参考にスクリプトを書いてみました。
統計やデータ分析に特化しているという事で、まだ日が浅いながら、コーディングだけを考えるとやはり使いやすいと感じました。
Rを使えば、データを読み込んで、プロットして画像を保存する等の事も割と簡単に出来ました。
Rstudioで記述した為替相場のデータを欠損値の処理等をして、プロットするスクリプトを、bashで呼んでみました。
データは、以前ダウンロードしてあった、dexjpusのcsvを使用しました。
https://fred.stlouisfed.org/series/DEXJPUS
【環境】
Linux: debian10.4
bash: 5.0.3
R: 3.5.2
TTR: 0.23-6
xts: 0.12-0
quantmod: 0.4.17
imputeTS: 3.0
1.Rのスクリプトを呼ぶ様に、ファイルに記述
スクリプトはターミナルから実行しました。
# !/bin/env bash
Rscript dexjpus_plot.r
2.Rのスクリプトを実行
【1】「read.csv('ファイル名.csv')」で、csvを読み込んで、データフレームに格納
コード) daily_data <- read.csv('./dexjpus_20200417.csv')
【2】「as.xts(read.zoo(データフレーム))」で、データフレームをxtsオブジェクトに変換して、格納
コード) daily_xts <- as.xts(read.zoo(daily_data))
【3】「na_interpolation(xtsオブジェクト ,option = "linear")」で、欠損値を補完して処理済みデータとして、xtsオブジェクトを変更
コード) daily_xts <- na_interpolation(daily_xts ,option = "linear")
【4】「chart_Series(xtsオブジェクト)」で、チャートをプロット
コード) chart_Series(daily_xts)
ライブラリのインポート等を除けば、csvを読み込み・欠損値の補完・グラフのプロット・保存まで、わずか4行というシンプルさです。
# simpe mooving average sample
daily_data <- read.csv('./dexjpus_20200417.csv')
# names(daily_data)
# class(daily_data)
# import TTR package
library(TTR)
library(xts)
library(imputeTS)
# library(forecast)
library(quantmod)
daily_xts <- as.xts(read.zoo(daily_data))
# head(daily_xts)
# NA
daily_xts <- na_interpolation(daily_xts ,option = "linear")
# ma_daily5 <- SMA(daily_xts ,5)
# plot(ma_daily5)
jpeg("dexjpus_daily.jpg")
chart_Series(daily_xts)
dev.off()
様々なサイトの情報を参考にライブラリも追加しながら、ひとまず移動平均のプロット等が出来ました。
このスクリプトでは実行していませんが、期間毎のテクニカルチャートを重ねたり、上昇・下降のポイントで色を変更したりといった事も割と少ないコードで出来ました。
データ分析初心者からみた、pythonとRの比較
Rは環境構築が終わればコードは書きやすく、統計や金融のライブラリが充実。
pythonは、Rよりコードが多くなる事もあるが、情報源等も含めた環境が優位。
Rの優位だと思う事
・pythonと比較してもデータの分析やプロット等が少ないコードで実現しやすい様です。
・Rstudioが使い易い。
・予測や分析の他、金融向けにチャートプロットする等が手軽に導入出来る。
pythonが優位だと思う事
仮想環境・パッケージ管理・開発環境の選択がRより、恵まれている。
・pip3・venv、condaの環境の完成度が高い
・jupyterの他、IDE等もある。
・参考になるwebや書籍といった情報が多い。
まとめるてみると
pythonはパッケージを混在しなければ、pip3・venv、若しくはcondaの完成度が高くパッケージの導入で、エラーが起こる事は少ないと思います。
またコーディングの環境もjupyter、その他IDE等、環境の完成度が高い
RStudioは使い易いのですが、パッケージ導入で、エラーが頻発する端末もありました。
エラーを見ながら、解決しますが、出来れば仮想環境が良いと思い、condaがRにも対応している事を思い出し、minicondaを別の端末に導入。
Rstudioがcondaから検索出来る事を確認後、仮想環境にRをインストール(Rの実行は未確認)、Rstudioもインストールしようとしましたが、インフラが遅いせいか、或いは環境に起因するものなのか不明ですが、ダウンロードが始まらないので、諦めてしまいました。
次策という事で、eclipse、これは自分の環境では、重くて止めてしまいました。
この辺りで、結構な時間を要しました。
linuxのパッケージである程度まで、インストールして、その上で依存するパーッケージを導入出来る様に、「gdebi」コマンドでRStudioを導入・使うかもしれないパーッケージも導入、不要・重複しているものもあるかも知れません。
現在、この記事を書いている端末にも、重複しているパッケージがありそうです。
この環境で、R、python、shellスクリプト、その他BIツール等も併用していく想定です。
以上、【初心者向け】10行以内のスクリプト(9.bashから実行するR)でした。
