R

Google Summer of Codeは来週から、らしい

ほうほう。 Hi everybody,next week is the week when mentoring organizations can apply for the Google Summer of Code. As I already wrote in my first mail, the idea is to submit our ideas by March 10.Currently three ideas are on the list[1]: …

アイデア的なメモ

id:gfxさんの発表を聞いて。 perlはcpanのインターフェイス CRANはcpanと比べると情報が読みづらい じゃあ、CRANのインターフェイスとなるようなRの関数があればいいんじゃね? んー、でも自分でパッケージ全部持っておくとしてもアップデートとか、新しいの…

Tsukuba.R#4での発表資料

上げておきます。 Rを高速化するための10の方法 id:syou6162 自己紹介 吉田康久 id:syou6162 syouでおk Tsukuba大学の4年生 最近の出来事 卒研おわた ノンパラメトリック回帰 自分でRのパッケージを作ってみた 初めて!! 漢ならコードで語れ、ということで自…

Tsukuba.R#4の資料できたった

ゼミとかで謀殺されていたりしたんですが、とりあえず完成。いつも通りはてなグループで作っているので、ページ数とかないと言えばないんですが、ppt風のページ数だと100pくらい、テキストの行数としては700行くらいとなりました。頑張ったようですが、大体…

Rにおけるmethod dispatch問題

R

S4とか総称的関数を使い出すとたぶんどっかでぶちあたるのがmethod dispatch問題です。僕は去年の夏くらいから「よく分からないなー」と思ってました。method dispatchというのを間違ってるかもしれないけど、分かりやすめに説明すると、 総称関数が使われた…

Rにおける遅延評価

R

初めて遅延評価勉強したのはいつだったかなあ。いつだったかは覚えてないけど、Haskellで勉強した気がします。遅延評価が効果を発揮するのは評価しないで持っておく、例えば、たらいまわしの計算とかはその典型です。Rでのたらいまわしは昔やっていたりしま…

俺俺lapply&sapplyを書いてみる【Rの中身はlisp編】

R C

というかWriting R Extensionsにある例をやってみているという感じなんですけど。C言語が(も)あんまり分かっていない僕ですが、それでもRのベクトルや行列のオブジェクトをCレベルで触るにはどうすればいいか段々分かってきました。こうなってくるとRの色々…

Kmeans法のソースを見つつ

Cの勉強もかねつつ。kmeans.cとkmeans.Rから最低限必要そうなところを引っ込抜いてきて、コメントを適度に埋めつつやってみました。Cのソース。100行くらい。短かい。 #include <R.h> #include <Rinternals.h> void mykmeans(double *x, int *pn, int *pp, double *cen, int *pk</rinternals.h></r.h>…

Rの言語仕様とか色々参考にできそうな関数とかのメモ

R C

なんというS式R Language Definitionのp3のシンボルオブジェクト。 > as.list(quote(x + y)) [[1]] `+` [[2]] x [[3]] y > as.list(quote((x + y) * z)) [[1]] `*` [[2]] (x + y) [[3]] z モデル式 言語オブジェクト R 言語を構成する三つのオブジェクトの型…

S4の理解がちょっと深まった

R

色々漁っていたら、色々見つかってS4で長年よく分かっていなかったようなところが分かってきたような気がしているところ。 http://www.omegahat.org/OOP OOPってそのまんますぐるwwwとか思ったらしっかり書いてあってめちゃくちゃ参考になる A (Not So) Shor…

RにおけるLazy Evaluation

R

Loggerの引数にRの式そのまま書けるようにしたいなあと思った。そういうのって他にどういう関数があったかなあと思ったらsystem.timeがまさにそんな感じ。関数の定義を読む。 system.time <- function(expr, gcFirst = TRUE) { ppt <- function(y) { if(!is.…

Confidence interval for kernel density estimator with optimal bandwidth under the cross-validation criterion

R C

ここの続き。カーネル密度推定の場合においての最適なバンド幅をクロスバリデーションで求める、というのはまだやっていなかったのでやりました。カーネル密度推定の場合のクロスバリデーションは、積分の計算が入ってくるので、数値積分をやったりしました…

台形公式で積分

R

数値計算を勉強したことがないのがバレバレですねwww。 my.integrate <- function(f,a,b,n){ ak <- seq(from=a,to=b,length.out=n) sum <- 0 for(i in 2:n){ sum <- sum + (ak[i] - ak[i-1]) * (f(ak[i-1]) + f(ak[i])) / 2 } return(sum) } よしよし。 my.i…

Confidence interval for kernel density estimator

R

お、なんか大分間が空いた気がする。修論スタート、ということでノンパラな推定量に関しての信頼区間の付近を準備しています。とりあえず今は一番簡単そうなカーネル密度推定の1変数のバージョンの信頼区間。週末とかに「分からねー」を連発しながらやってた…

漢ならコードで語れ、ということで自分のパッケージを作った

何か自分のproductがあるといいよなーと思ったので卒研で書いたコードの断片をパッケージにして公開してみました。パッケージはここに置いています。作ったものの説明ノンパラメトリック回帰の手法の一つであるナダラヤワトソン推定量を計算するためのパッケ…

Bootstrap法について色々書いてみる

2月に入ってから、Bootstrap Methods and their Application (Cambridge Series in Statistical and Probabilistic Mathematics)を読み始めている。で、数式はそこまでややこしくないのでわりと分かるんだが、Bootstrapを実行しなければならないシチュエーシ…

Rのソースコードを読むために

R C

gtagsとかを入れてみた。関数の定義に飛んだりすることができるなどする。 GNU GLOBAL(gtags)ソースコードタグシステムの使い方

Efficient Programming in S-PLUSを訳してみる

R

Efficient Programming in S-PLUSをばっと訳しつつ(正確にはしない)、まとめて勉強してみるテスト。間違っているところがあったら指摘してもらえると助かります。S-PLUSって書いてあるけど、たぶんほとんどRについても言えることだと思います。 ベクトル、ベ…

Rで計算速度を上げるための3つのステップ

R

現段階でへっぽこR使いのid:syou6162が思っている感じのこと。Rレベルでなるべく早くする apply familyとかouterなどなるべくベクトル単位で処理するようにする forを避ける このレベルでもものによってはかなり早くなる Cを使う 速度を上げるための方法とし…

snowパッケージを使って、並列処理をやってみた

R

卒研のプログラムも最後の段階ではかなり時間がかかるものがあった。Cで高速化したけど、それでも12時間くらいかかるというものもあった。どうにかやってもうちょっと早くしたいということで最後の手段(、並列処理に手を出してみることにした。並列処理と(同…

RのコードをCに書き変えてみたら1500倍くらい早くなったけど、早すぎて将来が不安

C R

昨日の続きのところ。Cでナダラヤワトン推定量*1計算させて、Rのoptimを使って計算したら早くなったっぽい気がした。でも、一変数はRだけでまともなコードがなかった(文字列evalとかのやつしか残っていなかった)ので速度比較ができなかった。これじゃ最適化…

クロスバリデーション最小化のコード関係をCで書いてみた

R C

Cで書いてどうなるかを見てみるテスト。やってみて気がついたが、サンプル数が少ないとき、epanechnikovだと分母が0の領域が出てきて微妙な感じになってしまうのでどうにかしないといけないが、面倒なので放置している。。。サンプル少ない時はガウシアンカ…

Cを使ってRの拡張をする関係の参考リンク

R C

Rのソースコードを読むオフなどしたいなどする。Cに詳しい人がいるとよさそうですか、分かりません。 Introduction to Calling C and Fortran from R ppt注意 暇を見つつ日本語訳などしたい R-C-interface なかなか分かりやすそう 読みたいソース R-2.8.0/sr…

CでRを拡張するための方法解説

R C

解説というほどの解説でもないんだけど、日本語リソースが非常に少ないので、ちょっとは役に立つかもしれないなと思って。短かいですが、上のエントリのCの部分を中心に説明していこうかなと思います。拡張するための3つ方法Writing R Extensionsをばーっと…

CでRの拡張したら速すぎて(40〜50倍)吹いたwww

R C

昨日Gibbs Sampler Algorithmをやってみたわけだが、Rの中でfor文を書いていて必要となるサンプル数が多くなると非常につらくなってくることは目に見えている。しかも、MCMCでは初期値依存となる期間のサンプルを捨てないといけない。そういうわけでじゃんじ…

俺的MCMCまとめ

12月くらいからMCMCの勉強しだして、いくつか代表的なアルゴリズムによるサンプリングをやったのでまとめておく。 Example of Rejection Sampling - yasuhisa's blog Example of importance sampling - yasuhisa's blog Example of Metropolis Hastings Algo…

Gibbs Sampler Algorithmによって多変量正規分布からのサンプル抽出を行なう

もちろんRで。 2変数正規分布 2変数の正規分布からのサンプリングはここのをそのまままねすると B <- 2000 x1 <- rep(NA,B+1) x2 <- rep(NA,B+1) x1[1] <- -2 x2[1] <- 1 for (i in 1:B){ x1[i+1] <- rnorm(1,1+0.7*(x2[i]-2),sqrt(1-0.7^2)) x2[i+1] <- rno…

Tsukuba.R#4開催するよ!!!

Tsukuba.R#4の日程が決まりましたのでお知らせします。今年度最後のTsukuba.Rだよ!!! Tsukuba.Rはつくば周辺(半径40万キロくらい)をターゲットとしたGNU RおよびR言語の勉強会です。 Rユーザーに限らず、幅広い層からの参加をお待ちしております。 今回は偶…

Metropolis Hastings Algorithmの続き

前回のところではガンベル分布からの乱数が生成できないとして、独立連鎖において正規分布を使って乱数生成をやった。しかし、上の記事の通り、全区間に渡って0以上となるような分布ならとりあえずできるらしいということが分かった。なので今回は独立連鎖の…

R空気読みすぎだろwww

R

「3重forループをRで書くと遅いからなー。outer関数の多変数版ないかなー」とか思ってouterをなんとなくネストさせてみたら動いたwwwしかも、outerだから結構早いwww > outer(outer(1:5,1:5,"+"),1:5,"+") , , 1 [,1] [,2] [,3] [,4] [,5] [1,] 3 4 5 6 7 [2…