算額あれこれ

算額問題をコンピュータで解きます

2012-08-01から1ヶ月間の記事一覧

Rstudio の使い方(Mac の場合?)

少なくとも,私の環境 Mac OS X 10.8.1 では,Rstudio 0.96.330 は,日本語入力においてユーザにストレスを感じさせる(入力中,全く入力状況が表示されない) 。とても,まともに使うことはできない。 偶然(?)発見した少しはましなやり方は, 1. 外部エ…

R Markdown まとめ

不十分ではあるが,http://rpubs.com/r-de-r/1373 にまとめた

Mountain Lion で Rcpp が使えなくなっていた

原因は,Xcode 4.4 になったが,デフォルトのインストールでは Command line tools がインストールされていなかった。 Command line tools は, Downloading this package will install copies of the core command line tools and system headers into syst…

ダメ出し:よく分からないけど,ダメ その2

「バク=スネッペンのゲーム」 こんな感じになるのかな? n <- 100limit <- 2/3x <- runif(n+2, 0, 1)repeat { xmin <- which.min(x[2:(n+1)]) if (x[xmin+1] >= limit) break x[xmin:(xmin +2)] <- runif(3)}z <- numeric(n)for (i in 1:n) { y <- 0 xmin <-…

ダメ出し:よく分からないけど,ダメ

「バク=スネッペンのゲーム」は,ちゃんとプログラムできていない。プログラムの仕様(ゲームのルール)がよく分からないので,書き直しできないなあ。# 種の数n <- 100x <- runif(n, 0, 1)z <- numeric(0)# すべてを2/3以上にする操作repeat { x[0] <- 1 #…

ダメ出し:match は遅い

「R で特定の値の行や列を見つける方法」で,match 関数が挙げられている。後半に which.max, which.min が挙げられているのになぜ,which に言及されていないのか? まず,ベンチマークテスト > a <- 1:1e6> library(rbenchmark)> benchmark(which(a == 1e4…

ダメ出し:提示する統計グラフに注意 その2

前の記事(元記事も)での religion = unknown の記号の色が gray で,バックグラウンドの色と近くて,目に入りにくいということもあるし,プログラムがごちゃごちゃしているので religion 別の散布図を描いた方がよさそう。 ということで,描いてみた。シン…

ダメ出し:提示する統計グラフに注意

"Getting data from GapMinder.org" のグラフについて 当初は,このグラフ(図1)を見て,「記号の大きさが人口に比例していないなあ。困ったものだ」と思っていた。おまけに,記号の大きさは人口そのままではなく,log(人口+1e7) になっている。 図1 ggplot…

ダメ出し:そんなことやっちゃダメだってば!

「haploid から diploidへの座標変換」 の,「座標で表す」の項だけど,むちゃくちゃしますね。びっくりします。ほんとに。p1 <- c(0.3,0.7)p2 <- c(0.4,0.6)f <- 0.6 # r^2の値# 連鎖平衡の下でのハプロタイプ頻度h.LE <- p1 %*% t(p2)# 連鎖不平衡の下での…

ダメ出し:ifelse は遅い

Rでフィボナッチ数! http://d.hatena.ne.jp/mickey24/20080914/1221334119syou6162先生が一行でやってくれました http://d.hatena.ne.jp/mickey24/20080914/1221334177Rでフィボナッチ数!(動的計画法版) http://d.hatena.ne.jp/mickey24/20080914/12213362…

ダメ出し:重回帰分析の標準誤差の推定値(Residual standard error)

C.P. ロバート, G. カセーラ 著石田基広,石田和枝R によるモンテカルロ法入門 23ページに,「lm() 関数は(中略)意外なことに標準誤差の推定値がリスト要素として含まれておらず(中略)このすうちそのものは次のようにして求める必要があります」 これは…

barplot 関数の戻り値

barplot 関数は,描いた棒の中心 x 座標を返す。 座標軸,目盛り等を描くときにはそれを用いればよい。 > x <- dbinom(0:6, 6, 0.1)> a <- barplot(x)> str(a) num [1:7, 1] 0.7 1.9 3.1 4.3 5.5 6.7 7.9> axis(1, a, 0:6)

ダメ出し:小細工せずに素直に(あるいは,効果を確かめてから) その2

驚くべきことに(??) w <- matrix(a, 2)[2,]は v <- a[1:(n%/%2)*2L] # 最速!!と同じくらいに速い。

ダメ出し:小細工せずに素直に(あるいは,効果を確かめてから)

「kingqwertの覚書」 の http://d.hatena.ne.jp/kingqwert/2012-08-22 の項http://d.hatena.ne.jp/kingqwert/20120822「リサイクル規則をうまく使う方法」を挙げてあるが,そんなに良い方法ではない。内部では結局の所リサイクル処理をしているので,1:(n%/%…

ダメ出し:もう何回も書いたけど...

「高校数学でわかる統計学」の「第1章 サイは投げられた!(期待値と分散)」 において,乱数は纏めて発生させる。そうすれば for ループを使う必要もない。両方併せると,実行時間に大きな違いが出る(もっとも,100000 × 2 個発生させて 1 秒なんだから,…

ダメ出し:二項分布の確率分布図

「楽しい 統計学セミナー - 証拠を科学する方法 -」の「第3講」 においてサイコロを6回振って,6の目が出る「確率分布図」を描いてみる. :X軸のラベルを確率変数Xと合わせることができない・・・ といっているが...この項は,前の記事に既に解があるが...x …

ダメ出し:添え字はそのまま使う

「楽しい 統計学セミナー - 証拠を科学する方法 -」の「第2講」 において試行回数 N=10~100 に対する二項分布の確率関数をx <- numeric(91)for (i in 10:100) { x[i - 9] <- choose(i, 3) * (1/10)^(3) * (1- (1/10))^(i - 3)}plot(x)abline(v = 20.5, col=…

難しく考えない

「楽しい 統計学セミナー - 証拠を科学する方法 -」の「第1講」 において,当初目指していた「(問題)サイコロを6回投げたとき,6の目が1回だけ出る確率は? 」であるが,これは,生起確率が 1/6 である事象が 6 回の施行中に 1 回だけ起きるということで,…

シミュレーションの仕方

「楽しい 統計学セミナー - 証拠を科学する方法 -」の「第1講」 において,シミュレーションプログラムが掲示されているがsystem.time({set.seed(12345) # 乱数の初期値を設定しておこうn <- 10000 # プログラムの中で何回も出てくる数値は変数に代入してお…

ダメ出し:なんでそうなるの?

久保さんのページ 2012/08/21 で,研究会の発表で使ったスライドが掲示されているけど,Z得点は,(観察値-μ)/σ だと思うよ。逆にしたら符号が逆になる。

ラッパーというものも...

"Performing multiple t-tests on different variables between the same two groups" で,ラッパーを紹介しているが 余り頻繁に使わないラッパーだと,ラッパーの使い方自体忘れたりして,そのたびに思い出すためにソースを見たり(メモを見たり)というこ…

ダメ出し:凡例の順序が逆

ggplot2 の geom_bar の作図例で "Stacked bar charts" の凡例とグラフの順序が逆。色使いも下品だが。 ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() 普通に barplot で描いてみよう。ちゃんと順序がそろう。 ans <- xtabs(~cut+clarity, diamond…

ダメ出し:sample 関数の使い方

「sample関数で順列を作り出してみる」で # いびつなサイコロを1000回投げて,出る目の傾向を調べてみる.x <- numeric(1000)for (i in 1:1000){ x[i] <- sample(x=1:6, size=1, replace=FALSE, prob=c(1,2,3,3,2,1)) # 3と4の目が出やすいサイコロ. }これ…

ダメ出し:離散変数の分布は barplot で描きますよ

「sample関数で順列を作り出してみる」で, > いびつなサイコロを1000回投げて,出る目の傾向を調べてみる :> あれれ・・・,出た目1と2のバーの間に隙間がない・・・? その前に,1の棒は1の目盛りの右にあり,2の棒は2の目盛りの左にあるというおかしな状…

ダメ出し:Excel にすり寄る必要はないし,それ自体間違っている

「ggplot2 bar_plot with label」で, 「エクセル脳の皆さんに贈る」などといっているが,あなたこそ「ggplot脳」なのでは? 提示されたグラフは統計学的には不適切きわまりない。不適切なグラフに,どんなラベルを付けようが,不適切なグラフが適切なグラフ…

ダメ出し:コンパイラなんかに頼らない

「TokyoR25」にて,library(compiler) の威力を見せつけようと??しているようだが,compile したときとしないときの比較ではなくて,単に標準誤差はサンプルサイズの平方根に反比例するという統計学上の当たり前の話をなぞっているだけのような。 ここでも…

ダメ出し:方針が間違えている その2

そもそも,この種の問題を解くのに,ブルート・フォースを使うのは良くない。 問題をよく考えれば,理論的な解がちゃんと存在するし,そこまで行かなくても,コンピュータ・パワーを利用すると瞬殺の答えが得られる。 以下のようなプログラムを書くと,n=10 …

ダメ出し:方針が間違えている

「dice」にて, > サイコロ3個ふって出目をカウント > 6進法を使ってみた。 最後に > サイコロ10個振ると? とあるが,質問しているのか,挑戦しているのか, 少なくとも,掲載されているプログラムでは時間が掛かってやる気が起きない。n <- 8dice <- fun…

ダメ出し:初心者の手本になるようなプログラムを描こう

「mandelbrot set」に,以下のようなプログラムが掲載されている。 mandelbrot <- function(step = 0.1, pch = 19, col = 30, n = 2) { a <- outer(seq(-2, 1, step), seq(-1, 1, step), function(x, y) complex(r = x, i = y)) a <<- a[Mod(a) <= 2] #絶対…

ダメ出し:簡明直截なプログラミングをすれば,誤りもなくなる

「円を描く」にて t <- seq(0, 2, pi/1000) * pix <- cos(t)y <- sin(t)plot(x, y, type = "l", asp = 1) などと書いているが, なんで,t <- seq(0, 2, pi/1000) * pi なのだろうか?意味不明である。引数か何か誤解があるのでは? それに,描かれた円は,…