2012-02-01から1ヶ月間の記事一覧
わたしは,R には何の義理もないので,好き勝手言います... > ベンチマークで利用しているデータは10,000行1,000列のデータフレームですが、for 文が有利なように恣意的に設定されている気がします。> colMeans のボトルネックは as.matrix であり、for 文の…
> ベンチマークで利用しているデータは10,000行1,000列のデータフレームですが、for 文が有利なように恣意的に設定されている気がします。> colMeans のボトルネックは as.matrix であり、for 文のボトルネックは R 側で行われる繰り返し処理そのものです。 …
色々な条件により細かい部分は異なるが,以下のようなプログラムによって分かったことは衝撃的? nr <- 10000nc <- 1000x <- matrix(rnorm(nr*nc), nr, nc)d <- as.data.frame(x) # データフレームに対して## for ループgc();gc();system.time({ m1 <- numer…
既存の関数を使おう!! chartr という関数が便利。 > chartr("0123456789", "0123456789", "3450246813579")[1] "3450246813579" ============= 昔の記事 ============== どこかにあったプログラムは Windows 用で,encoding="cp932…
2011-05-21 ■Rでクロス集計表の残差分析 にて# クロス集計表の入力X <- matrix(c(58, 11, 10, 35, 25, 23), nrow=3, dimnames=list(c("賛成", "中立", "反対"), c("男性", "女性")))X# 男性 女性# 賛成 58 35# 中立 11 25# 反対 10 23# 比率(縦%)を確認r…
なんかちがうな~ もっとすっきりかけないの? どうしたらいいの? そんな,プログラムが載っているWebページのアドレスを曝してください。お答えします。(^_^;)
2012年2月12日 (日) Multiple comparison among 4 groups using Fisher exact test2012年2月10日 (金) Multiple comparison among 3 groups using Fisher exact test5グループ,6グループ,... になったらまたプログラムを書くのだろうか?同じような内容を繰…
速いけど,この先にあるのは,答えの文字列を書き出すというプログラムになりそう(^_^;) > system.time({+ limit <- 1000000+ ans3 <- rep(c("d", "d", "Fizz", "d", "Buzz", "Fizz", "d", "d", "Fizz", "Buzz", "d", "Fizz", "d", "d", "FizzBuzz"), ceilin…
速度を求めるなら以下のように > i <- 1:1000000> system.time({+ ans1 <- ifelse(i %% 15 == 0, "FizzBuzz", ifelse(i %% 3 == 0, "Fizz", ifelse(i %% 5 == 0, "Buzz", i)))+ }) ユーザ システム 経過 3.214 0.141 3.334 > system.time({+ ans2 <- i+ l <-…
「よしいずの雑記帳 FizzBuzz問題の解答例 R編」 R らしく? ベクトル演算で i <- 1:100ifelse(i %% 15 == 0, "FizzBuzz", ifelse(i %% 3 == 0, "Fizz", ifelse(i %% 5 == 0, "Buzz", i)))
2012-02-15 M-Hアルゴリズムによるポアソン分布推定コードのチューニング において「目的関数を簡素化してしまう方が効果的です。」 ごもっともです。その他, 何回も同じ引数で関数を呼ぶとか,関数呼び出しのオーバーヘッドも馬鹿にならないこともあり,以…
このブログは,プログラムの速度を追求するのではなく,「えれがんと」なプログラミングを目指しているので誤解ないように。「えれがんと」が何を意味するかは範囲は広い。 で,「2012-01-10 Rと手作業で覚える最尤法」の「2. 尤度関数、対数尤度関数、一階…
2012-02-10 Rでトービット・モデルによる打ち切りデータの推定 の「2. optim()関数で最尤推定」で ifelse を使っているのは,ダメダメ。 掛け算の方がまだ速い。これで,元のプログラムより 25% 速くなった(元のプログラムが 0.104 sec. で,このプログラム…
配列の拡張とパフォーマンス 差を強調したいがために,基本を忘れている。 > num = 50000> ### 配列を拡張していく ###> gc(); gc() used (Mb) gc trigger (Mb) max used (Mb)Ncells 340948 18.3 597831 32.0 597831 32.0Vcells 602119 4.6 1162592 8.9 1162…
2012-01-28 Rでマルコフ連鎖モンテカルロ法を試す の後半「3. MCMC(M-Hアルゴリズム)で推定してみる」で, for (n in 1:10000) を 100 倍の for (n in 1:1000000) にしたら,10 分経っても終わらない。Stop させてみるとやっと予定の半分くらいしかできて…
> 記者会見した長沢寛道・同研究科長は「高い値の放射性セシウムが検出された水田で作付けし、データを正確に把握することは、福島県の農業復興に必要だ」と話した。(東京大大学院農学生命科学研究科 長沢寛道研究科長) 作付けして,データを取ってもらえ…
2011-05-11 R でエラトステネスの篩 の後半に,アトキンの篩のプログラムが掲載されている。 ご本人も「多分条件判定減らすとかしてRに合った実装しないとダメなんだと思う」というとおり,ベクトル化をはかる。ちなみに,元のプログラムでは for を避けるた…
R で円周率計算 mean(runif(points.num)^2+runif(points.num)^2 < 1)*4 だけでよかった。速いし。
シミュレーションなどで,使用する乱数をまとめて発生させておいて後で使うというようにすれば効率的であるといわれるが,メモリーギリギリでやるような場合には,それが裏目に出るという実例。おまけに,この場合は for ではなく apply を使ったのに...とい…