R

"相関係数の標準誤差"の計算について

R

掲題の件、そういうことです。ここのCrossValidated 、及び参照されている論文を見ると、相関係数の標準誤差は として計算されるらしい。記号の意味はお察し。これをRで愚直にシミュレーションした結果とチェックしたら大体あってた(下図)ので、これでいい…

長めのID(数値)を持つ場合は明示的に文字列で読む

R

例えばこういうファイル(hoge.csv)があったとする id, value 31274832974983278756, 1.22これをRで読み込と「あ、アレ?IDの下の桁変わってない???」となるわけだ。 > library("readr") > df <- read_csv("hoge.csv") > as.character(df$id) [1] "3127483…

tibbleを下まで表示するには option('tibble.print_max')を指定する

R

これも.Rprofileなんかに突っ込んでおいたほうがいいと思うんだよな。 options('tibble.print_max' = 1000)

パッケージの”中”で使ってるパッケージはDESCRIPTIONのImportsに書けばOK

R

いろいろふわふわしていて危ういので、助けをもとめた。 DESCRIPTIONにImportsは書いておいて、パッケージ内部では常に :: を用いて他のパッケージの関数を呼び出すスタイルでやっているらしい。Wicham Hadleyのここを読むのが一番まとまっているとは思う。 …

ggplot2の軸の目盛りを10のべき乗で書く

R

ggplot2で、軸を”10のほげほげ乗”で描画するのに苦労したので、メモ。 ググった感じ、自作で関数作るしかないっぽい。必要なライブラリと適当なデータを用意。 library("ggplot2") library("scales") library("stringr") df <- data.frame(x=10^(-2:1),y=10^…

関数のイコールをチェックしたいといはidentical関数

R

結構長くR書いてエル気がするが、よくよく考えるとidenticalが必要になる場面に初めてぶつかった気がするのでメモ。 今までは別のやり方で回避していたのだろうか? > #適当な関数を定義 > f <- function(){print("hoge")} > g <- function(){print("hage")}…

lubridateパッケージで月初・月末日を取る

R

こんなん。 > library(lubridate) > floor_date(as.Date("2017-03-03"), "month") [1] "2017-03-01" > ceiling_date(as.Date("2017-03-03"), "month") - 1 [1] "2017-03-31"

確率変数を変数変換した場合の確率分布

昔やった気もするが、すぐ忘れる&頭の体操もかねてもう一度 算数 適当な確率分布に従う確率変数x(面倒なので[0, 1]区間の一様分布想定)とそれを2乗した変数yを考える。 このときyの従う確率分布はより となる。 Rでやる 0, 1区間の一様な乱数x, 及びそれを…

use_testthat()でテスト用のディレクトリ・ファイルを一発で作る

R

昔devoolsにあったと思った関数が、いつの間にかusethisという新しいパッケージに移っていたので、そのメモ。 こいつに入っている use_testthat()を用いると、Rのパッケージを作る際のテストディレクトリ・ファイルを一発で作ってくれる。 > devtools::inst…

値を動的に生成して、動的に取得する

R

assignで動的に値を生成して、getをうまく活用すれば取れる、が、あまりきれいではない。 > f <- function(){ + for(i in 1:10){ + assign(paste0("variable_", i), i) + } + variable_names <- ls(pattern="^variable_.*") + sapply(variable_names, functi…

captionerパッケージで図・表に対する参照(レファレンス)を取得する

R

http://datascienceplus.com/r-markdown-how-to-number-and-reference-tables/にあった話。 captionerパッケージを用いると、R Markdownの中での図表の参照を簡単に書くことができるというお話。以下、簡単な例だが、こんな様に書けば図表に対する参照もでき…

リストに名前を付けるのは最後にした方がいいっぽい(へんなのR)

R

へんなのRというハッシュタグがある。 そこに投げつけるための話。 適当な関数の用意 3の時だけNULLであとはirisデータの頭を返す関数を用意する。 これはNULLを返す場合があるってのが本質で、あとは適当でよい。 #3の時だけNULLほかは適当 f <- function(…

Rcpp内で日付(Date)を取り扱う

R C++

Rcpp内でDate型を取り扱いたいときにはDateVectorクラスを使用する。 ただ、 c++ - Subsetting Rcpp::DateVector using IntegerVector that contains indices? Operator [] overload - Stack Overflow によると、Rcpp内で日付を扱うためのDateVectorクラスは…

三連ドット(..., dot-dot-dot, ellipsis)の取り扱い

R

これもr-wakalangに投げ込んで教えてもらった話なので、まずは簡単にまとめる。 基本的な使い方 適当な...を持つ関数を定義する。 f1 <- function(x, ...) { dots <- list(...) print(dots) } これに対して以下の実行結果からわかるように、引数にマッチしな…

金融市場が混乱する間隔を日経平均ボラティリティー・インデックス(日経平均VI)から推定したい

日経平均ボラティリティー・インデックス(日経平均VI)の半減期が知りたい - My Life as a Mock Quant 日経平均ボラティリティー・インデックス(日経平均VI)を高速フーリエ変換したが、なんもなかった - My Life as a Mock Quant 日経ボラティリティー・…

日経平均ボラティリティー・インデックス(日経平均VI)の半減期が知りたい

日経平均ボラティリティー・インデックス(日経平均VI)を高速フーリエ変換したが、なんもなかった - My Life as a Mock Quant 引き続き日経VIネタ。 日経VIの挙動は、株価のような対数幾何分布に従うような確率過程(そうは見えないけどそうだと思っておく…

dplyrで時系列データの処理

R

dplyrを拡張してデータフレームっぽい俺俺クラスを動かす - My Life as a Mock Quant で書いた、”dplyrでの時系列処理ってどうするんじゃい”というのの簡単な例。 下で示したようなやり方で大半は片付くのではないだろうか(たぶん)。まず、ライブラリ&サ…

dplyrを拡張してデータフレームっぽい俺俺クラスを動かす

R

みんな大好きデータフレームのハンドリング用ライブラリdplyrを拡張して、時系列データのxts型も同じように操作できるtplyrパッケージを作ろうと思ったんだが、よくよく考えるとdplyrままでいいんじゃないかなって思って辞めた。 その際に試行錯誤した残骸を…

パッケージ作ってて、そのパッケージの中のある関数中で他のパッケージの関数呼ぶ場合、DESCRIPTIONのImports書いてるだけじゃだめぽなんですが、 これちゃんとNAMESPACEにImport書かないとダメなんでしたっけ…?

R

完全備忘録。 hoxo_n パッケージ作ってて、そのパッケージの中のある関数中で他のパッケージの関数呼ぶ場合、DESCRIPTIONのImports書いてるだけじゃだめぽなんですが、 これちゃんとNAMESPACEにImport書かないとダメなんでしたっけ…? 聖書にちゃんと書いて…

日経平均ボラティリティー・インデックス(日経平均VI)を高速フーリエ変換したが、なんもなかった

なんもなかった。が、なんもなかったなりの備忘録。 データの取得 Quandle経由で取得。元のソースはコメントに記載。 PLOTを見る限り、ちゃんとした元の値っぽい。 library("Quandl") # Sorce: https://www.quandl.com/data/NIKKEI/VLTL-Nikkei-Stock-Averag…

foreachでprogressbarを表示しても進行状況は正しくないケースが多い

R

foreachでprogressbarを表示する - J's blog Rでプログレスバー - 驚異のアニヲタ社会復帰への道 の辺でやられているforeach系パッケージでプログレスバーを出す方法だが、これは進捗を正しく表すものではないケースが多い*1。例えば、 library(foreach) lib…

各グループごとにXXX(標準化など)したデータを作成する

R

今までは、例えば、下記のようなあるデータフレームのデータを、日付ごとにスケーリング(scale())し、その結果をデータフレームとして返すような処理として、以下のように書いていた。 これは「各日付ごとに全IDのデータ(r)列が存在し、それを日付ごとにスケ…

0, 1でやっときゃFactor型と同じ結果になる

R

回帰の時あえて変数をFactorにする必要あるのかな?ってのを確かめておいた。 Factorが0,1の場合だけだけど。 > set.seed(71) > x <- 1:100 > z <- rep(0:1, 50) > y <- 1.2*x + 2.3*z + 3.4 + rnorm(100) これで普通に回帰すると > glm(y ~ . , data=data.f…

data.frame, cbindは文字列(character)ではなく因子(Factor)がデフォルトだった・・・っけ?

R

掲題の件、どうやらそうだったらしい。 なので、毎回stringsAsFactorsを設定すると(Hadleyverseはあえてつかわない) お元気で。 > df <- data.frame(x=1:3, y=letters[1:3]) > str(df) 'data.frame': 3 obs. of 2 variables: $ x: int 1 2 3 $ y: Factor w…

全体の設定は $R_HOME/etc/Rprofile.site に書く

R

~/.Rprofileでユーザ個別の設定になる一方、$R_HOME/etc/Rprofile.siteが全体の設定だったんだなぁ。 参考 http://www.agr.nagoya-u.ac.jp/~seitai/document/R2009/Rsettings.pdf http://www.cwk.zaq.ne.jp/fkhud708/files/R-intro/R-stat-intro_01.pdf http…

ないパッケージはインストールして、残りは全部読み込む

R

pacman使えよって話だが。 # ほしいパッケージ全部書いとく packages <- c("ggmap", "dplyr", "tidyr", "data.table", "rgl", "stringr", "R.utils", "scales") # ないやつはインストール new_packages <- packages[!(packages %in% installed.packages()[,"…

dplyrでデータをグループごとに分けた状態でデータを持つ

R

要するに、”あるグループごとのデータフレームに分解してデータを持つ”ということをしたいんだ、そしてこんなんでた。 > x <- iris %>% + group_by(Species) %>% + do(val=data.frame(.)) > x Source: local data frame [3 x 2] Groups: <by row> Species val (fctr)</by>…

ggplot2で中が塗りつぶされていない長方形を描く

R

使うたびにはまる系なのでめもる&答えはgeom_rect()でfill=NAとする。 library("ggplot2") ggplot(mtcars, aes(qsec, mpg)) + geom_point()+ geom_rect(aes(xmin=18, xmax=20, ymin=21, ymax=23), fill=NA, color="red")

dplyr でグループごとに複数カラムを追加したい

R

dplyr でグループごとに複数カラムを追加したい #rstatsj に対する1回答。 > library("dplyr") > library("tidyr") > probs <- seq(0, 1, by=0.25) > iris %>% group_by(Species) %>% + summarize(tmp=list(data.frame(prob=probs, quantile=quantile(Sepal…

ggplot2の軸を上付きのべき乗で書きたい

R

そういうことです。今のところの私の答えは以下で breaksでちゃんとX軸のどれを書くかを指定 trans_formatでべき乗表示に変換 です。 ggplot(data=data.frame(x=10^(1:4), y=1:4), aes(x=x, y=y)) + scale_x_log10(breaks=10^(1:4), labels=trans_format('lo…