読者です 読者をやめる 読者になる 読者になる

ggplot2-2.0.0 の拡張

ggproto と export ggplot2 の v2.0.0 では OO の機構が ggproto というパッケージ内に含まれた独自のものに変更され、他のパッケージからの拡張が容易になったようです。 詳しくは、Extending ggplot2 に公式の解説があるので、これを熟読すると良いでしょ…

ggplot2の最新版(1.1.0?)ではまった点のメモ

そろそろ ggplot2 の最新版が CRAN にリリースされるようなので、自分のパッケージのメンテナンスをしました。 メンテナンス中に困った点をメモしておこうと思います。 stat_summary fun.args でパラメータを渡さないとエラー。 # <= 1.0.1 stat_summary(fun…

Recoding a factor variable in a data.frame by the levels() function

R

When you want to change the coding of a factor variable in R, you can use the levels() function. Recoding z as 1 = A, 2-6 = B, 7 = C d <- data.frame(z = gl(7, 1, 14)) d$zc <- factor(d$z) levels(d$zc) <- list(A = 1, B = 2:6, C = 7) d Result…

R Commander による Kaplan-Meier プロットの作図手順

R

R のインストール バージョン 2.15.0 以上の R をインストールします。ソフトウェアのインストールをした経験がある方なら特に困ることはないでしょう。 Windows の場合 Download R-3.2.3 for Windows. The R-project for statistical computing. Mac の場合…

記号微分

R

deriv を利用して、R で記号微分してみます。 正規分布の対数尤度関数を記号微分してみよう 正規分布の対数尤度関数は、 \[ l(\mu, \s; x)=-\frac{\log(2\pi\s^2)}{2}-\frac{(x - \mu)^2}{2\s^2} \] ですので、これを偏微分すると、 \[ \begin{align*} \frac…

"..count.. + facet_grid" の挙動について

追記 ggplot-0.9.1 で修正されていました! ggplot-0.9.1 での実行結果 メモ スクリプトの書き方が良くないのかもしれませんが、..count.. と facet_gridを併用したときの挙動をメモっておきます。 バージョンは R-2.15.0 + ggplot-0.9.0 です。 こう書くと…

New 'ByteCompile' field in the DESCRIPTION file

R

R 2.14.0 から DESCRIPTION ファイルに 'ByteCompile' フィールドを指定できるようになったらしい。 パッケージ中の R コードを自動的にバイトコンパイルしてくれるため、ものによっては高速化が見込めるという感じ。 試してみようかな。 The `ByteCompile' …

Reference class に roxygen2 用のコメントを入れる方法

R

先日 Reference class に roxygen 用のコメントを入れる方法 という記事を書いたのですが、実は全然ドキュメントを作れていなかったことに今更気づいたので、せっかくなので roxygen2 用の場合を作ってみました。 基本的には変わっていませんが、@section で…

箱ひげ図に横棒を追加する

以下のようにすると簡単に横棒付きの箱ヒゲ図を作成できます。 require("ggplot2") df <- data.frame( x = rep(1:5, each = 50), y = rt(2500, 3) ) ggplot(df, aes(x = factor(x), y = y)) + stat_boxplot(geom = "errorbar", stat_params = list(width = 0…

Rcmd Rd2dvi が失敗する

R TeX

Rcmd Rd2dvi で PDF マニュアルを作成することがあるのですが、いつの間にか失敗してしまうようになっていて困っていました。 しかし、単に Rcmd Rd2dvi の実行には MikTeX が必要 (推奨) だったようで、インストールすると問題無く PDF マニュアルを作れる…

コピペでデータ読み込み

R

R で Excel などに入力されたちょっとしたデータを読み込む時、データ整形に結構手間がかかってめんどくさいと思っていましたが、 How to read space delimited data into a data frame from your script/document file? (Stack Overflow) ではコピペだけで…

Reference class に roxygen 用のコメントを入れる方法

R

お詫び 下記の内容は不十分だったため、roxygen2 について記事を書きました。 Reference class に roxygen2 用のコメントを入れる方法 内容 Reference class を用いたパッケージの R スクリプトに roxygen 用のコメントを入れる方法を模索してみました。 S4 …

Reference class の initialize メソッドについて

R

initialize メソッドの挙動 を調べていたら、R devel の ML (Ref Classes: bug with using '.self' within initialize methods?) と TractoR というパッケージのコードを見つけ、これを参考に uninitializedField に初期値を与えてみるコードを書きました。 …

About the RcmdrPlugin.KMggplot2

I aim to make a brief version of a ggplot2 GUI-frontend "with Japanese translation (I am Japanese)." I think that the Deducer and the yeroon.net/ggplot2 is pretty good software. Currently, I'm trying to find bugs and to restructure impleme…

RcmdrPlugin.KMggplot2 について

日本語化済みの ggplot2 用の GUI フロントエンドはたぶん無いと思うので、簡易版ですがパッケージを作ってみました。 Deducer や yeroon.net/ggplot2 の様に、もっとしっかりとした良いソフトもありますので、そちらもお試しください。 しばらくはバグ探し…

RcmdrPlugin.KMggplot2_0.0-3 is on CRAN now

RcmdrPlugin.KMggplot2 (CRAN) I posted an Rcmdr plug-in for a "ggplot2" GUI front-end on CRAN. This version supports Kaplan-Meier plot and other plots as follow: Kaplan-Meier plot Show no. at risk on inside Show no. at risk table on outside…

An alternative of the base:setdiff(x, y) for list objects

Using the base::unique(x), the base::setdiff(x, y) has the same problem as follow: > unique(list(a=1,b=2,c=3,a=1)) [[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 So, I wrote an alternative of the base::setdiff(x, y) function, too. lsetdiff <- functio…

An alternative of the base:unique(x) for list objects

The base::unique(x) function returns a vector, data frame or array that were removed duplicate elements/rows. When the x is a list object, the base::unique(x) returns an unnamed list object as follow: > unique(list(a=1,b=2,c=3,a=1)) [[1]] …

リストを ... (dot-dot-dot) 引数に変換して関数を実行する方法

R

tkgrid にリストを投げるとエラーを頂戴するので、足掻いてみました。 この場合は単に do.call で OK、勉強不足でした。 require(tcltk) tt <- tktoplevel() b1 <- tkbutton(tt, text = "OK 1", command = function() tkdestroy(tt)) b2 <- tkbutton(tt, tex…

R の model.frame オブジェクトについて

R

model.frame オブジェクト model.frame オブジェクトは、R でデータとモデル式を統一的に扱うためのオブジェクトです。 実体は data.frame クラスのデータに、モデル式を含むいろいろな attributes が付加されたものです。 d <- e <- rep(1, 10) c <- 1:10 b …

reorder 関数を使って横軸の順序の並べ替えを行う方法

ggplot2 で geom_bar(stat = "identity") を利用して棒グラフを作成するときに、横軸の順序を変える方法をまとめてみます。 特に要約データなどを持っていて、ヒストグラムをプロットしたい時などに利用できるかと思います。 方法としては、データフレームに…

やっつけ jitter 関数 (箱ひげ図用)

R

ある本を読んでいたら、箱ひげ図に jitter を付加した散布図を重ねて描いていたので、再現してみようと思い適当に作りました。 散布図のプロットの際に、 近くに点があり重なりそうな場合には、jitter を強めに付加する 特に tie になる場合はちゃんと重なら…

passing parameters to ggplot

おもしろそうなコードを 教えてもらった。 require(ggplot2) DS <- data.frame(speed=rnorm(10), dist=rnorm(10)) f <- function(DS, x, y) { aes <- eval(substitute(aes(x, y), list(x = substitute(x), y = substitute(y)))) p <- ggplot(DS, aes) + geom…

RcmdrPlugin.KMggplot2_0.0-2

追記 最新バージョン (R commander 用プラグイン) が CRAN から利用できます! RcmdrPlugin.KMggplot2_0.0-3 is on CRAN now 旧バージョン RcmdrPlugin.KMggplot2_0.0-2.zip: Windows 用バイナリ (Dropbox) RcmdrPlugin.KMggplot2_0.0-2.tar.gz: Linux & Mac…

ggsave をいじって viewport で layout したファイルを保存してみよう

論文風な Kaplan-Meier plot を書いてみよう で試してみましたが、grid package の viewport を使うと、柔軟な感じにレイアウトを決めることができました。 普通に png や pdf でファイルを保存することもできますが、ggplot2 pacakge の ggsave が便利なの…

R 2.13.0 の OpenMP 関連 make マクロ

R

R 2.13.0 から OpenMP 用のマクロ SHLIB_OPENMP_CFLAGS SHLIB_OPENMP_CXXFLAGS SHLIB_OPENMP_FCFLAGS SHLIB_OPENMP_FFLAGS が Makevars ファイル中で使えるようになっていたらしい (Writing R Extensions)。パッケージの src ディレクトリ中に OpenMP に対応…

論文風な Kaplan-Meier plot を書いてみよう

追記 マウス操作のみで作図が可能な R commander 用プラグインが CRAN から利用できます! RcmdrPlugin.KMggplot2_0.1-0 is on CRAN now - Triad sou. テスト版 require(ggplot2) require(survival) `kmg2.theme_gray` <- function (base_size = 12, base_fa…

ggplot2 の geom_text() 関数で fontfamily をいじってみよう

ggplot2-0.9.x では修正済です require(ggplot2) t <- c("a", "b", "c") x <- c(1, 2, 3) y <- c(2, 2, 2) d <- data.frame(x, y, t) windowsFonts(serif = "Times New Roman") p <- ggplot(data = d, aes(x = x, y = y, label = t)) + geom_text(size = 16 …

グループ変数が沢山ある場合の統計量の計算

R

グループ変数が複数セットあり、測定値が 1 セットある様なデータに対して、標本平均、総和、標本分散、偏差平方和をたぶん高速に計算できる関数を作りました。 以前作った 高速 tapply(X, INDEX, var) もどき関数 (グループ変数が1セットで、測定値が複数セ…

R で OpenMP を使ってみよう

R

R で OpenMP を使って並列演算できるかどうか試してみたのでメモを書いておこうと思います。 まず、Windows 環境では、RTools (MinGW) で OpenMP が使えなさそう (Re: Missing libpthread in RTools) でした。 しかし、R devel - gomp library with Rtools21…

第5回 R ユーザ会に行ってきた

R

togetter Rユーザー会2010 初日 Professor Hadley Wickham の発表資料 Rユーザー会2010 二日目 Professor Uwe Ligges の発表資料 Rユーザー会2010 三日目 鈴木 了太 (株式会社ef-prime) 「Rによるデータ解析ツールの新提案」 R Analytic Flow。 SAS EG みた…

試作品 (ggplot2 を使った RcmdrPlugin) のファイル

追記 最新バージョン(R commander 用プラグイン) が CRAN から利用できます! RcmdrPlugin.KMggplot2_0.1-0 is on CRAN now - Triad sou. 旧バージョン RcmdrPlugin.KMggplot2_0.0-2.zip: Windows 用バイナリ (Dropbox) RcmdrPlugin.KMggplot2_0.0-2.tar.gz:…

試作品のつづき

R

Windows7 での動作確認のついでに、日本語切り替えを追加してみた。

試作品 (ggplot2 を使った RcmdrPlugin)

リリース板 最新バージョン(R commander 用プラグイン) が CRAN から利用できます! RcmdrPlugin.KMggplot2_0.1-0 is on CRAN now - Triad sou. RcmdrPlugin.KMggplot2_0.0-3 is on CRAN now - Triad sou. 試作品 ggplot2 を使った RcmdrPlugin を試作してみ…

Rユーザ会

R

2010年度 統計数理研究所共同研究集会 「データ解析環境Rの整備と利用」開催のお知らせ 2010年度の統計数理研究所共同研究集会「データ解析環境Rの整備と利用」 を、下記の日程で開催いたします。興味のある方は、ぜひご参加ください。 日程:2010年11月25日…

glm() でオッズ比と信頼区間を求める

R

基礎的すぎるから知らなかったのか confint(ModelName, level = 1-alpha) という関数があったらしい、プロファイル尤度に基づく信頼区間を計算できる (2012/6/19 記述を修正)。 d <- c( 1,1,1,1,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,0,0, 1,0,0,0,0,0,0,0,0,0, 1,1…

factor(cut()): 連続変数のカテゴリ化

R

set.seed(314159265) height <- rnorm(30, 170, 7) factor(cut(height, breaks = quantile(height, c(0, 0.25, 0.50, 0.75, 1)), include.lowest = TRUE)) [1] (175,181] (167,172] (167,172] (167,172] (167,172] [158,167] (175,181] (175,181] (167,172] …

ggplot2 日本語用テーマ

ggplot2-0.8.7 で、テーマ theme_gray() を日本語向けに直してみよう。 数ヶ月前に ggplot2 でフォントファミリー・サイズを変更できるようなテーマを作りました。 ggplot2 は当然英字出力で調整しているはずなので、日本語を含む場合はファミリーやサイズに…

単純モンテカルロ積分 (2)

今回も \[ \int_a^b f(x) \mathrm{d}x= \theta \] の様な積分値を推定する問題を考えます。このままでは $[0,\, 1]$ の一様乱数を利用できないので、 \[ x=a+(b-a)r \] \[ \frac{\mathrm{d}x}{\mathrm{d}r}=b-a \] \[ 0\leq r \leq 1 \] の置換積分を考えま…

単純モンテカルロ積分 (1)

単純モンテカルロ積分なんていう基礎的な事を復習してみました。自由度 $\nu=1$、分散共分散行列が \[ \mathbf{R}=\begin{pmatrix}1.0&0.7\\0.7&1.0\end{pmatrix} \] の 2 変量 $t$ 分布について、 \[ \int_{a_1}^{b_1}\int_{a_2}^{b_2}\mathrm{MVT}_2(t_1,\…

decimal / binary converter

R

十進数を二進数に変換する演算が必要になったので調べてみました。 wle package に binary() 関数というものがあり、そいつを少し弄ればよいことが分かった。 それだけではちょっとつまらなかったので、再帰を使って自分でも書いてみた。 # 再帰で書いた関数…

ggplot2 の自分用メモ集を作ろう

プロットの作製 基本プロットを作る Geoms Aesthetics 違う種類のグラフを重ねる 参照線の追加 グループ分け 層別プロット スケールと軸 Scales 軸ラベルやタイトルの変更 軸の表示範囲を変更する 軸の左右の余白を削除する 軸表示の修飾 日時の軸スケール …

ggplot2 の自分用メモ集を作ろう (古い内容)

古い記事を移動しました。 基本プロットを作る 基本的な手順は、 ggplot() にデータフレームと各軸や層に対応する変数名を指定する 書きたいグラフに対応する geom_XXX() を足す の二つが分かっていれば OK です。 これに加えて、統計処理をしてくれる stat_…

再帰による組み合わせ列の生成; {0, 1} の場合

R

[1] の文献をかなり参考にさせていただきました。 少し修正して、配列を演算に使えるようにしています。 でも、かなり小標本じゃないと使えないですよねぇ。 shuffer <- function(n, m) { m <- as.integer(m) n <- as.integer(n) if (m > n) { tmp <- m; m <…

clogit() 関数の注意点

R

R の survival package には、条件付きロジスティック回帰分析を行うための clogit() 関数なるものがあります。 最近この関数を使っていて、ちょっと気づいた点がありましたので、メモを残しておこうと思います。 method="approximate" は危ない clogit() 関…

ggplot2 package でカラーパターンの変更

scale_colour_manual を使う事で、ggplot2 で用いられる色のパターンを自分で設定出来るらしいです。 library(ggplot2) colours <- c("#D92121", "#9999FF", "#D92121", "#21D921", "#FFFF4D", "#FF9326") d <- data.frame( ID = floor(seq(1, 6 + 7/8, by =…

R で bootstrap method を実装してみよう

R

高速 tapply(X, INDEX, var) もどき関数 を作ったときに、簡単な実装を考えていたのでまとめてみます。 xxx.test <- function(d, g) { n <- as.numeric(table(g)) index <- as.numeric(factor(g)) mindex <- NULL for(i in 1:length(unique(index))) { minde…

ヘルプファイル形式の変更

R

R 2.10.x にも大分慣れましたが、ヘルプファイルの形式が text (R 画面内に出てくるやつ) だったので、 html に切り替えました。 よく忘れてしまうので、またメモ。 options(help_type="html") これを、".Rprofile" にでも入れておけばいいみたいです。 ".Rp…

ggplot2 package で Kaplan-Meier plot + フォントファミリーを変更する方法

ggplot2 は非常に良いパッケージですね、R をグラフィックスで推すときに、説得力のある実例になるんじゃないかと思いました。 Kaplan-Meier plot の実装例がない様なので、自作してみました。 かなり整理されていなくて申し訳ないのですが、 library(ggplot…

R の高速化

R

RjpWiki (REvolutionR は連邦の新型か) を読んでちょっと触ってみました。 環境は、CPU: Core 2 Duo E8400 (3.0 GHz), Memory: 3.3 GB, Windows XP 32bit SP3。 R-benchmark-25.R を5回ずつ実行してみた。 R-org: R-2.10.0 デフォルト ATLAS: ATLAS (C2D, CR…