[初心者レクチャー] R言語を学ぶメリット

Rレクチャー

はじめに

この記事について
この記事は私が職場で実施した、初心者向けRレクチャーの資料をブログ向けに加筆したものです✏️

当時のレクチャーがバイオインフォマティシャン育成を趣旨としていたため、以下のような情報に偏っているかもしれません。

– ✅ 基本的なデータ分析スキルの習得
– ✅ 基本的な統計解析の利用
– ✅ 短期集中でtidyverseを前提としたR学習
– ✅ ゲノム解析などのバイオインフォ解析スキルの習得
– ✅ Webアプリを利用したデータ共有
– ⛔ 高度な統計技術知識や数学的知識を解説する予定はありません
– ⛔ 私はデータサイエンティストでもエンジニアでもなく、生物学研究者です

この記事では、Rを学ぶとどんないいことがあるか?とか、Rをどんなことに使えるか?といった内容を紹介して、勉強のモチベをあげてもらえたら嬉しいな~ということを趣旨としています。

そもそもRって何? 何ができるの🤔?

この記事にたどり着いてくださった方はほぼ間違いなくRがプログラミング言語であることをご存じの上、学びたいという意思がある方だと思います。それを前提にして話を進めます。

私が思うRは、データ分析に強い一風変わったプログラミング言語です。

他のプログラミング言語のようにWebサイトを作ったり、デスクトップアプリを作ったりするのは苦手ですが[1]Shinyというパッケージを使うことで限りなく近いことは実現可能です。 、その代わりにテキストデータや巨大なSQLデータベースの表データを分析したり、グラフを作成する用途では様々なプログラミング言語と比べてずば抜けて優れています。特に、統計解析に関しては全てのプログラミング言語に対して優位に立っています

プログラミングはできないけど統計学は分かるという方(SAS出身者?)は勉強法さえ間違えなければ、いとも容易くRで統計解析を実行できるようになるでしょう。

ここまでの情報はほとんどの人が持っていると思いますが、意外と知られていない点としてめちゃくちゃ表計算が直感的にできるtidyverseという優れたフレームワークがRにはあります。
私はこれ一つとっても十分にRを学ぶ価値があると思っていて、全世界の初心者がtidyverseに入門して、神エクセルをこの世から粛正できる日を待ち望んでいます🐥

あ、あえて言うことでも無いかもしれませんが、Rは無料で使うことができます🆓

📆らくらくデータ集計

ここからは、実際のRコードをお見せしながら出来ることを紹介していきます⭐

tidyverseというRのフレームワークを使うと、直感的なデータ集計・分析が可能になります

たとえば、デジタル庁からワクチン接種数のデータを取得し、以下のような表を入手したとします。(出典)

都道府県    地域  1回目接種数  2回目接種数  3回目接種数
北海道 北海道 3988534 3958824 3306705
青森県 東北  1025136 1017567 848759
岩手県 東北  986186  977986  834446
宮城県 東北  1782219 1769784 1457213
秋田県 東北  796955  791475  691314
山形県 東北  873769  867908  744027
福島県 東北  1489565 1476549 1257337
茨城県 北関東・甲信  2327563 2310224 1887504
栃木県 北関東・甲信  1545966 1533887 1250958
群馬県 北関東・甲信  1508270 1497541 1250620
(以下省略)

🗾地域ごとの集計をしたければ、以下のように「地域」でグルーピング、「平均」と「SD」で要約することができます。

|>マークは連続した処理を表す記号です。正式にはパイプ演算子

vaccine_data |> 
    group_by(地域) |> 
    summarise(三回目平均 = mean(`3回目接種数`),
              三回目sd = sd(`3回目接種数`))

出力結果は以下です。

地域  三回目平均   三回目sd
近畿  1949582.2   1686414.9       
九州  1059592.2   798533.2        
四国  585840.8    193754.2        
中国  888084.4    540277.5        
東海  2271741.0   1499927.5       
東北  972182.7    310391.5        
南関東 5555782.0   1896713.8       
北海道 3306705.0   NA      
北関東・甲信  1254319.2   489042.4        
北陸  854560.0    464969.5    

どうでしょうか? 原理はさておき、とても直感的な操作ではありませんか?

これはあくまで一例ですが、Excelではできないような操作もRでは可能な場合があり、データ分析目的のExcel用途はRにより効率化できると思います。

もしあなたが全くのR初心者なら、西田先生の以下の書籍から入門されると良いと思います。 初めてのプログラミング言語学習でExcel作業を置き換えたいなら、非常にわかりやすく最初の一歩を踏み出すことが出来ると思います。

📈グラフ作成もかなり自由にできる

Rでは高品質なグラフを作成することができます。

たとえば、先ほどの集計データを棒グラフにした例が以下です。

vaccine_data |> 
    group_by(地域) |> 
    summarise(三回目平均 = mean(`3回目接種数`),
              三回目sd = sd(`3回目接種数`)) |> 
    # 以下グラフ作成操作
    ggplot(aes(x = 地域, y = 三回目平均, fill = 地域)) +
    geom_col()
Elephant at sunset
ggplot2の作図例。灰色の背景に虹色のカラーテーマはお馴染みのggplot2デフォルトテーマだ。

他にも様々な美しいグラフを作成することができます📈🌍

Info

年に数回、NewYork TimesやBBCなどの大手メディアが「めっちゃかっこいいチャートをRのggplot2で描いて本誌に掲載しました」みたいな話も見かけます。

作成可能なグラフについては、R Graph Galleryを是非ご覧ください。

The R Graph Gallery – Help and inspiration for R charts
The R graph gallery displays hundreds of charts made with R, always providing the reproducible code.

🗒️レポート作成

RにはRmarkdownという高品質なドキュメント作成パッケージがあります。

Rmarkdownを使用すれば、通常の文章の中にRでの分析結果を埋め込んだドキュメントを作成することができます🗒️

Elephant at sunset
Rmarkdownを使ったレポート作成例。リアルタイムでプレビューを見ながら作業することも出来るし、WYSIWYGエディタもある。

作成できるドキュメントはpdf, htmlだけではなくdocx(Microsoft Word)にも対応しています。

データ共有用途や研究ノートとしての用途だけではなく、報告書としても活用されています。

私が会社で実施したRレクチャーでは、学習効率や再現性の観点から原則Rmarkdownを使って勉強することをオススメしています

🛳️動的なWebアプリ

Shinyというパッケージを使用すれば、一種のアプリケーションを作成することも可能です。

先ほどのコードを少しいじれば、以下のように、ユーザーからの入力によって動的に変化するコンテンツを簡単に作成することもできます。

Elephant at sunset
5分で作ったShinyアプリの例。正直、そんなにShiny得意じゃない。

Shinyの使用例も非常に面白いので、是非見てみてください。

Shiny - Gallery

Shinyについては、オライリーからR界の神であるハドレー・ウィッカム先生の解説書が出版されています(2021年4月)。やや上級者向けですが、既にJavaScriptやHtmlなどを学習された方にはちょうど良い一冊だと思います。(私には理解しきれない部分もちょこちょこありました)

Rを使うのは医療統計学者・データサイエンティスト・バイオインフォマティシャン

Rがよく使用される職業は、医療統計学者・データサイエンティスト・バイオインフォマティシャンあたりだと思います。私見ですが、どの職業でRをどんな用途で使いたいかによって、学ぶべき内容は大きく変わると思います

この記事をここまで読んでくださった貴方は、このうちのどれかに当てはまりますか? 当てはまらなかったら、データサイエンティストを指向されると良いかと思います。

医療統計学者

統計が扱いやすいという性質から、特に統計解析を含む研究用途でRは非常によく使われています🏥

医療系(臨床試験等)では特によく使われ、FDA(米国食品安全保障省)[2]日本でいうところの厚生労働省。医療機器や薬の審査や認可を行う機関。の申請資料に使うことも可能です。

主に使用するRの機能は、統計関連の関数と思います。

データサイエンティスト

間違いなく私はデータサイエンティストではないので、間違っていたら非常にごめんなさい。私の認識では「機械学習をはじめとするデータサイエンス技術を利用し、データ分析を通じてビジネスや研究を行う人」をデータサイエンティストと認識しています。

機械学習ではpythonというプログラミング言語が有名ですが、Rでも一般的な機械学習・深層学習は実行可能です。なんなら表形式の行列データの取り回しや簡単ながら美しいレポート出力が可能なRはpythonよりも部分的にやりやすいかもしれません。

データサイエンティストが主に使用するRの機能は、データ整形・機械学習・統計解析といった幅広い分野だと思います。

Info

reticulateというパッケージを使用すれば、一つのRmarkdownドキュメント内でRとPythonを併用することも可能です。Python既修者の方はデータ整形部分だけでもRを使ってみたらQOLが上がるかもしれません😙

注意

R vs python論争はずーっと絶えないですが、私は「どちらか一方が優れていることはなく、時と場合によって向き不向きがある」と思っています。この議論自体不毛なので、悩む暇があったら好きな方を選ぶと良いと思います。

バイオインフォマティシャン

私がこれです。 バイオインフォマティシャンはバイオインフォマティクス(生命情報学)に根ざした、生命科学系の研究者です。

研究対象は様々ありますが、十中八九遺伝子解析に集約されます

ここでいう遺伝子解析とは、以下のようなものがあります。

  • ゲノムDNA配列の解析 ・・・ DNAに刻まれた情報を紐解く
  • mRNA発現量の解析 ・・・ リアルタイムな生命応答を理解する
  • メタゲノムの解析 ・・・ 環境中や腸内の多種バクテリアのごちゃまぜDNAを解析する

これらの業界はRとともに進歩してきた側面があり多くの機能はBioConductorというRパッケージレポジトリにおいて提供されています

多くのゲノム解析手法について、現状BioConductorパッケージ以外の選択肢が無いため、バイオインフォマティシャンはRを避けて通ることができません。

主に使用するRの機能は、BioConductorで提供される解析パッケージ・データ整形・統計解析などです。

でも待った。Rは統計だけじゃない。統計を使わない人にもオススメしたい。

「統計を使いたいからRに入門する」という動機から始まる人が多いようですが、私は統計を一切使う用事がなくてもRはオススメしたいと思います。

先ほど紹介した「tidyverseというフレームワーク」だけに限れば他のプログラミング言語に比べると習得が極めて容易で、これを使ってエクセル仕事を自動化するだけでも十分勉強量に見合ったリターンが得られるからです。

  • 毎日の業務報告書記入を自動化できないか?
  • なるべく売り上げデータの集計の手作業を減らせないか?

といった疑問は大概Rで解決することができます。

また、最近では小学校でプログラミングが必修になりました

今後はプログラミング的思考ムキムキな新卒ばっかりが入社してくる時代になる・・・と思うと少々怖いですが、こうしたトレンドに乗り遅れまいとプログラミングを勉強する際にもRはオススメです。tidyverseなら簡単なので。

R言語で基本的なプログラミング的思考(条件分岐、ループ、アルゴリズムなど)を養えば、その知識は他のプログラミング言語にも一部応用可能ですので、Rを第一言語として学ぶことに無駄は無いと思います。

このブログではtidyverseの使い方をメインに紹介していますが、何かの本を読みながら勉強したいのであれば、以下の書籍が決定版です。

通称「宇宙本」、日本のR界隈にもとても評判が良いです。私も読ませていただきましたが、この本買えばこのブログいらなく無いか?っていうレベルでわかりやすい解説本です

さいごに

ということで、今回は「これからRを学ぶ人たち向け」の記事を書いてみました。これで皆さんの学習モチベーションが上がれば幸いです😄

脚注

脚注
1 Shinyというパッケージを使うことで限りなく近いことは実現可能です。
2 日本でいうところの厚生労働省。医療機器や薬の審査や認可を行う機関。

コメント

タイトルとURLをコピーしました