【更新中】Rに関する個人的メモ
Published:
最終更新:2023年3月2日
以下、大幅に更新予定
はじめに
このメモはRの利用に関しての個人的な備忘録です。著者と似たような以下のバックグラウンドの方にも役立つ内容かもしれません。
- STATAやMatlabを使ってきたものの、諸々の事情によりRを使う必要性が出てきた
- 経済学においてマイクロデータを活用した実証研究を行っている。特に因果推論や構造推定など。
あくまで備忘録ですので、リンクやメモの羅列になっています。気が向いたら整理してもう少しノートらしくするかもしれません。
この資料に従って発生した損害等についてはいかなる責任も負いませんのでご了承ください。
不完全な点、誤り、そしてSuggestionなどあれば、メール頂けると大変喜びます。
Rリソースへのリンク集
データの加工
- To be added.
記述統計
- To be added.
- 著者は
stargazer
をずっと使ってましたが、最近Updateされない&tibble()
を受け付けないので、他のものに移ろうかなと思っています。オススメがあればこっそり教えて下さい。
回帰分析
- “Comparing tidyverse R to Stata”
- RとStataの比較。
lfe
パッケージfelm
コマンド を使えば、線形モデルの大抵のことはできる。(固定効果、操作変数、クラスター標準誤差)
fixest
パッケージfelm
よりも速いfeols
が利用可能。
- “Data Science for Economists Lecture 8: Regression analysis in R”
- U OregonのData Scienceコースの回帰分析。
lm
から始まり、felm
やfeols
なども解説。Rでの回帰分析は、とりあえずこれ読んでおけばOK。 - 本コースの他のマテリアルもオススメ https://github.com/uo-ec607/lectures
- U OregonのData Scienceコースの回帰分析。
- “Is the file drawer too large? Standard Errors in Stata Strike Back”
- クラスタリング標準誤差を使う場合のSmall sample correctionが、Stataでの
reghdfe
やxtreg fe
とRのfelm
などで若干異なっており、その結果Standard errorの値も異なるという点について。 - なお、最近のアップデートで
felm
において、reghdfe
と同様のCorrectionを行うオプションが追加されたらしい。LINK
- クラスタリング標準誤差を使う場合のSmall sample correctionが、Stataでの
RCPP
- “Should I prefer Rcpp::NumericVector over std::vector?”
- “Basic C++ through Rcpp”
- “Chapter 20 Integrating with C++ using Rcpp and RcppEigen”
- “EconR: Solving a simple 2-period Consumption problem with RcppGSL
- RCPP内でOptimizationをしたいときに、RcppGSLを使ってどのようにやるかという例。
- ただし、RcppGSLをインストールすること自体がトリッキー(Windowsの場合)。以下を参照。
- Install R packages: RcppGSL
- WindowsでRcppGSLをインストールする方法。パッケージ自体は
install.packages("RcppGSL")
でいけるが、RCPP内でGSLの関数や変数を使うためには、GSLのヘッダーファイルなどを別途入れる必要がある。 - 同じページ内の下部にあるサンプルプログラムもIntroの解説としてとても良さそう。
- WindowsでRcppGSLをインストールする方法。パッケージ自体は
- 【加筆予定】Rcpp内部でOptimizationする場合のコツ。functorとか。
並列計算
- “Using Rstudio Jobs for training many models in parallel”
- Rstudio のJob Panelを使うと、Script複数を同時に回せる。
- 【加筆予定】foreachで乱数を使う際にはdoRNGを使いましょう。
- https://htmlpreview.github.io/?https://github.com/berkeley-scf/tutorial-parallel-basics/blob/master/parallel-basics.html の Section 5.1.2を参照
- https://s3.amazonaws.com/assets.datacamp.com/production/course_6245/slides/chapter4.pdf from Parallel Programming in R
SQL
- “巨大なデータがSQLサーバーにあるときに、Rでどう立ち向かうかマニュアル”
- 手前味噌。
dbplyr
パッケージの使い方について。適宜加筆予定。
- 手前味噌。
Rmarkdown
RCPPをパッケージ化する。
RCPPをパッケージ化し、インストールする方法です。RCPPで書いた関数を並列計算(例えばforeach
のループの中)で使うためには必須です。
- 下準備として以下のものをインストールする。
- Windowsの場合は
Rtool
をインストールします。 Rcpp
パッケージをインストールします。devtools
パッケージをインストールする。
- Windowsの場合は
Rcpp::Rcpp.package.skeleton("PackageName")
をコンソールにタイプする。そうすると、PackageName
という名前のフォルダができる。- 当該フォルダの中にある
src
フォルダに行く。そこに.cppファイルを追加する。もしくは、rcpp_hello_world.cpp
ファイルを編集する。 - R上で、
Rcpp::compileAttributes("PackageName")
をする。 - R上で
devtools::build("PackageName")
を実行する。そうすると、PackageName_XXX.tar.gz
ファイルができる。XXX
にはバージョン番号が入る。この圧縮ファイルはポータブル。 devtools::install_local("PackageName_XXX.tar.gz")
として自作パッケージをインストールする。使う際には、require()
やlibrary()
で通常のパッケージと同様に扱ってやればOK。