Knowledge As Practice

JAIST(東京)で Transformative Service Research に取り組んでる社会人大学院生の研究・勉強メモ

経営学でベイズ推定はどう扱われているのか

ほぼ1年ぶりの更新です。これはStanアドベントカレンダー2019の9日目のエントリーです。

 
今年の出来事しては『たのしいベイズモデリング2』の14章を担当したことでしょうか。とても簡単な分析なのですが(重回帰分析)、自分と同じフィールドの人たちに気楽にベイズ推定を知ってもらえたらいいなという動機で書きました。

 
このエントリーも同じ動機で書きます。というか、自分用メモです。タイトルに「経営学」とありますが、私の興味のある領域はサービス業の顧客の行動です。広く言えば消費者行動論ですが、サービスに限定しています。

 
さて、サービス研究ではあまりベイジアンは見かけません。しかし、少しずつ広まっていくように感じています。今年7月に研究発表大会に参加したとき、たまたま入った会場で「なんでp値ないの?」「それはベイズで分析しているからです」みたいなやり取りを聞くことができました。そして、自分がよくチェックしている論文誌でついにベイズ推定を使った論文が出ました。これです。

 
www.sciencedirect.comJournal of Retailing and Consumer Servicesはほどよいレベルの論文誌で、興味もよくかぶっている好き)

 
今回はこの論文を少し紹介しようと思います(Stanと関係なくてスミマセン)。

 
この研究ではカスタマーエクスペリエンス(CX)が顧客による口コミ(WOM:Word of Mouth)に及ぼす影響を調べています。そして、CXは顧客同士のやりとり(PTP:Peer to Peer)・サービスの結果品質(SOQ:Service Outcome Quality)・顧客の心の余裕(POM:Peace of Mind)に影響を受けている仮説を元にベイズ推定による構造方程式モデリングSEM)を行っています。超事前分布を使った階層が2つのアプローチです。

 
わかりにくいですが、図示(?)すると

PTP →
SOQ → CX → WOM
POM →

 
という感じになっていて、それぞれの潜在変数は質問票(コロンビア・ボゴタの大学生293人が対象で5件法)を使って探索的因子分析で出されています。その後のSEMもいっしょにSPSSで分析したと書かれていました。StanでもJAGSでもなくて残念・・・。

 
著者たちはベイズを使う理由を一段落を費やして書いています。メインになるところを引用します。

This approach has multiple advantages over traditional covariance based structural equation modeling, such as: (1) it does not rely on large-dimensional datasets to achieve sufficient statistical validity of the results (we model the relationships as unknown parameters, rather than estimates of an unobserved “true” value); (2) the two-hierarchy approach, where the unobserved follow the hypothesized relationships, is more aligned with reality, where declared perceptions are naturally noisy and non-homogeneous between participants; and (3) it provides a natural framework for incorporating prior information (including prior beliefs or biases and using imperfect information), which offers a more flexible approach to human psyche, learning and neural processing of information.

 
みらい翻訳を使って訳すと

(1) 結果の十分な統計的妥当性を達成するために大きな次元データセットに依存しない(観測されていない「真」値の推定値ではなく、未知のパラメータとして関係をモデル化する) (2) 観察されないものが仮定された関係に従うという2階層アプローチは宣言された知覚が必然的に参加者間でノイズが多く不均質であるという現実とより一致している (3) 事前情報(以前の信念または偏見を含み、不完全な情報を使用するさまを組み込むための自然な枠組みを提供し、人間の心理、学習、神経処理へのより柔軟なアプローチを提供する。

 
直訳ですが意味はくみ取れます。ここでいう2階層アプローチというのは、5件法のデータは多項分布から発生するとし、その超事前分布を正規分布かガンマ分布にすることらしい。

 
推定はサンプリングが40000(うちバーンイン期間が1000)、チェーン数は記述なし。収束したことを示すためにトレースプロットを見せていました(他の収束診断の指標はなし)。現時点では厳しい収束診断は求められていないようです。

 
知りたい4つのパラメータ(図の「→」)については事後分布の図を4つ載せて「ゼロになるのは無視できるレベルだから強いエビデンスがあるといえる」みたいに書かれていました("All the posterior densities for the β parameters have negligible mass below zero, indicating that there is strong evidence of significance of the relationships")。

 
その後は解釈が述べられて終わるのですが、全部で12ページの論文(実質8ページくらい)で比較的読みやすいように思いました。今後、詳しく読んでいこうと思います(一人で読むのはつらいので誰かいっしょに読んでください。遠くてもANAの便があるところだったら、どこにでも行きます)。

 
ということで自分用メモを終わります。以下、おまけの文献リスト。

 

【おまけ1】

Journal of Management では、過去2回ベイズ特集が組まれています。英語で書くときの例文探しに向いているかもしれない。

https://journals.sagepub.com/toc/joma/39/1

https://journals.sagepub.com/toc/joma/41/2

 

【おまけ2】

比較的新しい研究手法を扱うことも多い『組織科学』ではまだベイズ関連の論文が出ていないようです。時間の問題かな。

www.hakutou.co.jp

 

【おまけ3】

マーケティング・サイエンス』の近年の論文では次の3つがベイズ関連です(『マーケティング・サイエンス』はハードルが高く読みこなせない・・・)

www.jstage.jst.go.jp

www.jstage.jst.go.jp

www.jstage.jst.go.jp

M-1グランプリの結果の納得度を適切な仮説検定で調べてみる

はじめに

 
つい最近『P値 ―その正しい理解と適用』という本を読みました。

P値 ―その正しい理解と適用― (統計スポットライト・シリーズ)

P値 ―その正しい理解と適用― (統計スポットライト・シリーズ)

 
本当はベイズについて学びたいと思っているのですが,周りに理解者は少ないし,知識欲が高い人でも「学習コストが〜〜」という意見があったりして,やはり学位を取るまでは頻度主義で行くしかないかなぁと考えていたところ,ちょうどよい機会だったので手に取ってみました。

 
読みやすく薄い本で,短時間でP値の理解を深めることができます。ただ後半に進むほど数式が増えて,理解が難しくなったので8章以降は読んでいません。統計ユーザーにはそれくらいでいいかなと思います。

 
この『P値』ですが 「p値について正しく理解して統計的仮説検定を適切に行いましょう」という啓蒙書として読むことができます。p値への誤解を解く3章は「p値は小さいほどよいというのはまちがい」という基礎知識を知っている人にとっても,読めばさらにp値への理解が深まると思います。

 
5章では適切な仮説検定を行う手順が解説されています。簡単にまとめると

  • 意味ある差と見なせる基準(効果量)を決めましょう。
  • 有意水準,検出力(検定力)を設定して,サンプルサイズを決めましょう。
  • データを集めて分析し,p値を使って有意かどうか2分法(有意傾向とかいう謎ワードを使わない)で判断しましょう。

です。

 
サンプルサイズが大きいほどp値は小さくなるので,集められるならたくさんデータがあったほうがいいというわけでないわけです。

 
せっかく勉強したので実践しみようと思います。

 

本エントリーのねた

 
2018年のRアドベントカレンダー(5日目)のエントリーなので,もちろんRを使います。では,今回の分析ネタについて説明します。

 
先日(2018年12月2日)にM-1グランプリが開催されました。優勝したのは「霜降り明星」だったのですが,いっしょに視聴していた妻が「結果に納得いかない」みたいな態度だったので(妻は和牛ファン。メジャーになる前から応援していた),世の大勢がこの結果(審査員の判定)についてどう思っているのか調べてみることにしました。

 

分析手法とサンプルサイズの設計

 
M-1グランプリの結果について「納得しているか/していないか」について調査したいので,二項検定(もしくは母比率の検定)を使います。サンプルサイズを決めるために効果量を設定します。

 
効果量は「意味ある違い(インパクトの大きさ)」があると見なせる評価指標です。今回はそこそこ小さくてもOKと考えて,0.2にします。有意水準と検出力については,それぞれ一般的とされる5%と0.8に設定して両側検定を行います。

 
サンプルサイズを出すには,pwr パッケージを使います。pwr については,こちらのページでまとまっています。 http://monge.tec.fukuoka-u.ac.jp/r_analysis/effect_size_01.html

 
今回は二項検定なので,サンプルサイズを決めるために pwr.p.test() を利用します。決めたいサンプルサイズ n を NULL すればOK。

> library(pwr)
> pwr.p.test(h = 0.2, n = NULL, 
                    sig.level = 0.05, power = 0.8,
                    alternative ="two.sided")

     proportion power calculation for binomial distribution (arcsine transformation) 

              h = 0.2
              n = 196.2215
      sig.level = 0.05
          power = 0.8
    alternative = two.sided

 
結果から,サンプルサイズ(上の結果のn)は200ほど必要だとわかりました。次に,データ集めに移ります。

 

データ集めと概要

 
サンプルはM-1グランプリの結果を知っている人から無作為に集めるのがいいのでしょう。しかし,現実的に個人でやるにはムリなので,アンケート調査の「アンとケイト」を利用しました。 https://research-ssl.ann-kate.jp

 
質問は『今年(2018年)のM-1グランプリの結果をご存じの方に質問します。優勝が「霜降り明星」であることについて,あなたは納得していますか? していませんか? どちらかお答えください』です。回答は「納得している」「納得していない」の2択で,ランダムに表示されるようにしました。

 
費用は10800円でした。本年のブログで5000円ほどアマゾンアフィリエイト収益があったので,費用の半分をそれにあてたと考えています。今年もいろんな人のブログや twitter の情報にたいへん助けられた(身近に量的研究している人がいないので孤独なんです)ので,個人的歳末還元祭としました。

 
データはBOXからダウンロードできます。ご自由にお使いください(アクセス後、右上の「ダウンロード」からダウンロード可能です)。

Box
https://app.box.com/s/891kjk5adtt442wsjbgk2jyyvm4ovl3r

 
得られたデータの概要は次のとおりです。

性別 人数
女性 118
男性 82
世代 人数
15歳未満 2
15歳~19歳 11
20歳~29歳 44
30歳~39歳 41
40歳~49歳 36
50歳~59歳 32
60歳以上 34
納得している? 人数
納得していない 79
納得している 121

 
「納得していない」が79名,「納得している」が112名でした。納得している人が多いですね。帰無仮説検定に進みます。

 

分析と結果

 
今回は二項検定なので,binom.test() を使います。特別なパッケージは必要ないです。世間の結果への納得度に偏りがないならば,1人ごとの回答が「納得している/していない」のどちらかになる確率(二項分布のパラメータ)は0.5になります。

 
帰無仮説は「納得度に偏りがない(パラメータ=0.5)」,対立仮説は「納得度に偏りがある(パラメータ≠0.5)」です。データより,200人中121人が「納得している」と答えたので,分析コードは次のとおりになります。x が「納得している」と答えた人の数,n がサンプルサイズ,p がパラメータです。

> binom.test(x = 121, n = 200, p = 0.5,
           alternative = "two.sided",
           conf.level = 0.95)
           
    Exact binomial test

  data:  121 and 200
  number of successes = 121, number of trials = 200, p-value = 0.003635
  alternative hypothesis: true probability of success is not equal to 0.5
  95 percent confidence interval:
   0.5336036 0.6732350
  sample estimates:
  probability of success 
                   0.605            
           

 
分析結果より p 値が 0.05 より小さく,有意水準5%で差があると言えました(95%CI [0.53, 0.67])。

 

おわりに

どうやら世間一般では優勝の結果に納得している人が有意に多いようです。このことを妻に伝えると「ふ〜ん。それは何も考えていないから」と辛辣な答えが返ってきました・・・。現場からは以上です。

 

補足

 
なお,最近の類書としては『伝えるための心理統計』と『心理学のためのサンプルサイズ設計入門』があります。

伝えるための心理統計: 効果量・信頼区間・検定力

伝えるための心理統計: 効果量・信頼区間・検定力

心理学のためのサンプルサイズ設計入門 (KS専門書)

心理学のためのサンプルサイズ設計入門 (KS専門書)

 
『伝えるための〜』を以前読んだときは難しく感じたので,『P値』→『伝えるための〜』という順番がよさそうに思います。さらに実践していくときに『サンプルサイズ設計入門』を手に取るという流れがいいかもしれません(まだ積ん読状態)。より専門的なものには『サンプルサイズの決め方』がありますが,私には手が余るので紹介しません。

 
最後に,ブログでも許容度が過ぎたり不正確すぎる記述・まちがいがあれば教えてください。

purrr の map を使って検定を繰り返す

ずっとKJ法とかポストイットとかを使ってアンケートデータと格闘しているのでまったく統計分析はしていませんでした。少し目処が立ったので、次の研究のための予備調査を兼ねて昔のデータを見直すことにしました。

 
こんなデータがあるとします。

f:id:hikaru1122:20180918210302p:plain

 
Xが性別みたいなカテゴリカル変数で、A~Dまでは7件法のデータだとします。A~Dでそれぞれt検定を行いたいのですが

 
t.test(hoge$A ~ hoge$X)
t.test(hoge$B ~ hoge$X) ・・・

 
と繰り返すのはちょっとイヤで何か簡単にt検定を繰り返すことはできないかと方法を探しました(今回のように5回くらいならガマンしますが、今後10とか20になりそうだったから)。

 
繰り返しだから purrr を使えばなんとかなるだろうと検索しても、なかなかお目当てのものが出てこないのでここにメモします。たぶん、検索のやり方が下手だったのだろうと思います。

 

実行

str(hoge) # データを確認
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':  12 obs. of  5 variables:
$ X: num  1 2 2 1 1 2 1 1 2 2 ...
$ A: num  4 2 1 1 4 2 3 5 3 4 ...
$ B: num  7 7 3 3 1 2 3 5 3 6 ...
$ C: num  7 4 6 7 3 5 6 7 6 1 ...
$ D: num  1 4 7 4 5 3 2 3 2 7 ...

hoge$X <- as.factor(hoge$X) # Xを因子化

 
ここまでで下準備OK。流れとしては

 
1. データからXをいったん省いて分析対象A~Dに絞り、
2. map にA~Dを流し込み、
3. t検定を繰り返し実行し、
4. 結果を kekka に保存する。

library(tidyverse) # library(purrr)もOK

kekka <- hoge %>% 
  select(-X) %>% 
  map(~t.test(. ~hoge$X))  # t.test( の次の . が流し込まれるデータ)

 
無事できました。これでデータが10とか20になっても大丈夫。もっと上手な(オシャレな)方法があるのだと思います。あれば教えてください。

参考(やっぱりあった)

https://sebastiansauer.github.io/looping-purrr/

【追記あり】マルコフ連鎖の収束診断の基準と書き方メモ

マルコフ連鎖の収束って、どうやって書けばいいのかわからないので、ざっと調べることにしました。事の発端は、ShinyStanで収束診断(DIAGNOSE)をするとき3つの指標が示されるのですが、3つの指標全部が None じゃないといけないか、と r-wakalang で質問したことです。回答もいたただけて、もう少し書き方も含めて調べてみようとなりました。

 
r-wakalang はこちら。 github.com

 
ShinyStan の使い方は↓の33ページ以降が役立ちます。

www.slideshare.net

 
cinii で検索したり、twitter で流れてきたものをかいつまんで読んでいます。全部で4つです。

 
●浅田他(2014)では「収束診断方法は複数あり~」「Gelman-Rubin統計量(R-hat)は1.1未満となっているときに、連鎖が定常状態に収束していると判断した」「Gelman-Rubin統計量(R-hat)の点推定値は~~のいずれも1.1以下であった」とあり、R-hatの計算方法として古谷(2010)、マッカーシー(2007)を参考せよとある。

 
●Namba et al.(2018)には「The value of Rhat for all parameters equalled 1.0, indicating convergence across the four chains.」とあります。

 
●清水(2017)には「サンプリング回数を1万回、バーンイン期間を5000回、マルコフ連鎖の数を4に指定して推定したところ、すべてのパラメータのR_hatが1となり、収束が確認された」とあり、脚注に「1に近いと収束したと判断される指標。1.05以下が目安とされる(Gelman, Carlin, Stern, &Rubin, 2004)」とBDAの第2版が引用されていました。

 
ちなみに、こちらではBDA第2版で「1.1より下」という基準が引用されています。ん~、とりあえず出張から帰ったら最新版のBDA3を確認する。 takehiko-i-hayashi.hatenablog.com

 
●渡辺他(2017)では「計算の結果,Gelman-Rubin 統計量はすべてのパラメータに対して1.01以下となり,各マルコフ連鎖が定常状態に収束していることを目視で確認した」とあり、BDA第3版が引用されていました。

 
ざっと調べたところ書き方も含め、1.1未満、1.0になってる、1.05以下と思ったよりいろいろありました。みどり本も帰ったら確認してみよう。

Bayesian Data Analysis, Third Edition (Chapman & Hall/CRC Texts in Statistical Science)

Bayesian Data Analysis, Third Edition (Chapman & Hall/CRC Texts in Statistical Science)

  • 作者: Andrew Gelman,John B. Carlin,Hal S. Stern,Donald B. Rubin,David B. Dunson
  • 出版社/メーカー: Chapman and Hall/CRC
  • 発売日: 2011/12/15
  • メディア: ハードカバー
  • この商品を含むブログを見る

 

参考文献

浅田正彦, 長田穣, 深澤圭太, & 落合啓二. (2014). 状態空間モデルを用いた階層ベイズ推定法によるキョン (Muntiacus reevesi) の個体数推定. 哺乳類科学, 54(1), 53-72.

Namba, S., Kabir, R. S., Miyatani, M., & Nakao, T. (2018). Dynamic displays enhance the ability to おりdiscriminate genuine and posed facial expressions of emotion. Frontiers in Psychology, 9, 672.

清水裕士. (2017). 二者関係データをマルチレベル分析に適用した場合に生じる諸問題とその解決法. 実験社会心理学研究, 56(2), 142-152.

渡辺 憲, 高麗 秀昭, 小林 功, 柳田 高志, 鳥羽 景介, 三井 幸成, 階層ベイズモデルを用いた丸太の天然乾燥における乾燥時間の推定および丸太の諸形質が乾燥性に及ぼす影響の評価, 木材学会誌, 公開日 2017/03/30, Online ISSN 1880-7577, Print ISSN 0021-4795, https://doi.org/10.2488/jwrs.63.63, https://www.jstage.jst.go.jp/article/jwrs/63/2/63_63/_article/-char/ja

 

追記(2018年6月16日)

BDA3を確認。Rhat ついては287ページに「閾値として1.1の設定で一般的によしとしてきた」と書いてあった。犬4匹本では,Rhat について(Gelman-Rubin統計量として)184ページで言及されている。みどり本では,206ページで言及されている。犬4匹本もみどり本もRhatの目安は1.1。豊田先生編著『基礎からのベイズ統計学』には190ページでGelman(1996)を引用して,Rhatが1.1ないしは1.2より小さいことが収束の判断として紹介されている。

ベイズ統計モデリング: R,JAGS, Stanによるチュートリアル 原著第2版

ベイズ統計モデリング: R,JAGS, Stanによるチュートリアル 原著第2版

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

基礎からのベイズ統計学: ハミルトニアンモンテカルロ法による実践的入門

 
というわけで,収束の判断のRhatについては1.1より小さいことが目安でよさそう(もちろんRhatだけで判断していいかどうかは別問題ということで)。

博士後期課程に入って2年経ちました

「もうブログ終わっちゃったんですか?」ときかれたので書きます。書かなかったのは、ここ最近は質的研究に取り組んでいて、特に書くネタがなかったからです。たぶん、かなりRの操作を忘れています・・・。

 
さて、JAIST 東京の社会人博士後期課程に入ってから丸2年経ちます。私は情報科学ではなくて、知識科学系(ザックリいうと経営学のほう)に属しています。あまり社会人学生の情報がない、という声も聞くので、すこし感想を書いておきます。

 
1.研究はどう進めているのか
2.ここ2年間の成果報告

の2点です。

 

1.研究はどう進めているのか

 
基本は平日の夜と土日にやっています。毎日、論文書いたり研究できたりするわけではありません。しかし、1段落でも論文を読んだり、1文字でも何か書く努力はしています。社会人院生は研究が進まないときに「仕事に逃げる」ということができ(仕事が夜遅くなるときがあるし、バタバタするのも日常茶飯事)、「仕事が忙しくて研究が進まなかった」と言い訳が立ちます。

 
こういうことはなるべく避けたいなと思い、防止策として今年初めから社会人学生どうしで「研究進捗部」を作り、みんなでコツコツ進捗を出しています。

 
f:id:hikaru1122:20180330123152j:plain
↓のアイデア丸パクリ参考にしました。

www.buzzfeed.com

 

2.ここ2年間の成果報告

 
1年目(2016年)は特に成果なし。授業を取ったり(5~6科目を取らないといけない)、研究に関係ありそうな書籍や論文にあたってみたり、新生活への対応に追われていた気がします。月に1回のゼミ前に有志で行う統計分析の勉強会で、半年間ほど統計的因果推論を学んだことがいちばん印象に残っています。

 
※資料はこのへんにあります。

https://www.slideshare.net/hikaru/1-62476733

Presentations by Hikaru Goto // Speaker Deck

 
2年目(2017年)は国際会議(大会? conference)に4つ投稿して、1つめはOK、2つめはNGが出ました。3つめと4つめは結果待ち、またはあさってに投稿です。OKが出たところは小規模ながら、質の高い場所で参加してよかったと思います。「研究がんばったで賞」もいただくことができ(なぜかその場で賞金400ドルまで出た)、黒字になって帰国しました。

f:id:hikaru1122:20170803141519j:plainf:id:hikaru1122:20170803183130j:plain
海外の学会ってお金持ちなんでしょうか。

https://www.irssm8atyonsei.com

 
NGが出たところは査読コメントに「理解してくれてない」というネガティブな印象を持ってしまったものの、英語力不足・準備不足があいまった結果だと思っています。

https://www.ieseg.fr/en/faculty-and-research/research-events/servsig-2018/

 
国内の大会でも1つポスター発表しました。個人的にはポスター発表のほうが好きです。質問の受け答えやフォローが口頭発表より濃くできるので。

第5回国内大会(2017/3/27-28) - サービス学会(Society for Serviceology)

 
あと、上海にある大学でも発表を行いました。話すことで自分のアイデアも固まるので、こういうのって大事ですね。

f:id:hikaru1122:20180330113121j:plain
上海、勢いある。

他に、すうがくぶんかの統計分析のセミナーに出たり、国際公共経済学会のサマースクールに1日だけ参加したり、行動計量学会春の合宿セミナーに1日だけ行ったり、マーケティング学会の研究会をのぞいてみたりしました。

 
結果、次の修了要件のうち、ほぼ半分は達成できたかと思います。大学には長期履修(目標は4年)を申請済みなので、残り期間もあと半分です。

 
国際会議で発表→○
授業11単位→△(あと1つ)
査読付論文→×
副テーマ研究→×

 
3年目の2018年度が正念場ですね。

iPad 上で RStudio を動かす(小ネタ)

RStudio Advent Calendar 2017 の20日目です。先月の Hijiyama.R で RStudio.Cloud について少し報告したのですが,よく考えれば,ネットがつながれば使えるわけです。実際,iPhone で RStudio.Cloud を使ってみた,という報告も Twitter で見かけたことがあります(出典を探せませんでした)。だったら,iPad ならどうだろう,ということでやってみました。

 
Hijiyama.R についてはこちらに詳しいです。
niszet.hatenablog.com

 
使用したのは,iPad Pro 12.9インチ(SIMフリー楽天モバイルのSIMを差しています)。まず,RStudio.Cloud にアクセスして,ログイン。私は Google アカウントでいつも接続しています。

https://rstudio.cloud/

f:id:hikaru1122:20171225223852j:plain

 
以前作ったプロジェクトを開いてみると……

f:id:hikaru1122:20171225232751j:plain

 
できた!!

 
まあ,当たり前ですね。

 
しかし,困ったことがあります。いざスクリプトを書こうとすると,キーボードの表示によって,画面半分がおおわれてしまいます。そのため,実行時にコンソールが見えず,いちいちキーボードを隠せねばなりません。こんな感じ。

f:id:hikaru1122:20171225224136j:plain

 
物理のキーボードがあればなんとかなるんじゃないかと思い,Smart Keyboard を買ってきました。今日もアップルストア心斎橋は混雑してましたね。セッティングしたらこんな感じです。

f:id:hikaru1122:20171225224810j:plain

 
これで通常の使い方(?)に近づいた感があります。気をつけたい点は,スクリプト実行のショートカットは Cmd + return ではなく,option + return であることです。

 
なんでしょう,利便性は乏しいんですが,「Rってこんなんだよ」って披露するときに使えるんじゃないでしょうか。すごくコスパ悪いです。

 
画像が暗いのは,宿泊先のホテルで撮ったたためです。すみません。

極私的Rの使い方5選(2017年版)

今年「このスライドはRで作っています」と言ったら「ええ!?」とドン引きされる経験を私もしたのを思い出し、「今年Rでやったこと」を書くのをやめて、自分のR環境と使い方について書きます。対象とするのは、Rを使うのが月に10回以下の方です(それ以上使っている人はきっと達人レベルに違いないので・・・)。

 
周りにRを使ったりする人がいないので、かなり効率の悪い方法になっていると思います。もっといい方法があれば、ぜひ教えてください。なお、本エントリーは2017年 R AdventCalender 21日目のものです。

 

1. %>% をショートカットキーなしで入力する

 
Ctrl + Shift + M、無意識に出せますか? 私はできません。でも、パイプ演算子のようによく使うものはすぐに出せるようにしておきたい。

 
3つのキーを組み合わせたショートカットは難しい(覚えるほど頻繁にRを使うわけではない。ほぼ1ヶ月使わないこともある)ので、スニペットツールで解決しています。

 
私の場合は、;;(セミコロン2つ)で %>%が入力されるように設定しています。普段は Mac なので、ツールはランチャーアプリの「Alfred」です。パワーパックにするとスニペットの機能が使えます。

 
【あとで動画を載せる】

 

www.alfredapp.com

 

2.BetterTouchTool で Rmarkdown を使いやすく

 
Rmarkdownのコードチャンク(下のようなもの)を出すときのショートカットも同じように楽な設定をしています。具体的には、指3本で下に動かすとチャンクが挿入されます。

 
【あとで動画を載せる】

 
Cmd + Option + I はなんとか覚えられそうですが、このショートカットを使うときは、いちいちキーボードに目を落とせねばならず(タッチタイプがそのレベル)、それがストレスだったのです。

 
もちろん、これもスニペットツールでやればいいのですが、なぜか私は BetterTouchTool のジェスチャーでチャンクが出るようにしています。どうしてそうしたのは思い出せません。

 

www.boastr.net

 

3.いちいち library()するのが面倒なときにWコロン

 
「このパッケージのこの関数だけを1回だけ使いたい」ということがありますよね。たぶん。そういうときに::(Wコロン)です。

 
どのパッケージかはっきりさせるため ::+関数があるのでしょうが、私の場合はどちらかというと不純な動機で「ちょっと1度だけ、各変数の平均と標準偏差をざっと見たい」なんてときに psych::describe(hogehoge) とかやっています。

 

4.パッケージ管理は GUI

 
install.packages() はほぼ使わなくなりました。基本、RStudio でパッケージ管理しています。

 
f:id:hikaru1122:20171221195943j:plain

 
「Install」ボタンを押して、インストールしたいパッケージを頭から数文字入れるとサジェスチョンを出してくれます。だから、スペルミスが減りました。あと、だいたい月に1回くらい「Update」ボタンを押します。一気にアップデートされるときは気持ちいいです。

 
実はここ最近、Jupyter Notebook も使おうとしていたのですが、パッケージのインストール・管理の機能がないので、使うのをやめたくらい。

 

5.データを渡すときは .xlsx のファイルで

 
なんとか周りにRを使う人を増やそうと、今年は月1のゼミ前に1時間ほど有志で統計分析の勉強会を3月から11月まで毎月行いました。経営学に近い分野の社会人学生は文系が多いので、あまり量的分析を好みません。しかし、それではいけないので、みんなでがんばりました。

 
はじめは例題として分析するデータをCSVやテキストファイルで渡していました。しかし、Windows の人や Mac の人が混在しているので、それぞれ対応する文字コードにしたファイルを渡すことになり、まず「文字コード???」となってつまずきます。

 
だったら、「もうエクセルでいいじゃない、RStudio のGUIだとエクセルファイル読み込めるし(正確にはread_excel()を使っているけど)、文字コードの問題も起きない」ということでエクセルで配布するようになりました。

f:id:hikaru1122:20171221211241j:plain

 
それ以来、文字コードのトラブルは起きず、インポート前に自主的にエクセルファイルの中身を見て(だいたい Office が入っていて、無意識にダブルクリックするみたい)、分析前に確認する習慣も付きそうです。

 
以上、ご意見があるかと思いますが、極私的なRの使い方でした。もっといいものがあれがお教えください。よろしくお願いします。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。