Hatena::ブログ(Diary)

もうカツ丼でいいよな このページをアンテナに追加 RSSフィード Twitter

2009 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 04 | 05 | 06 | 07 | 08 | 09 | 12 |
2012 | 02 | 03 | 04 | 05 | 06 | 10 | 11 | 12 |
2013 | 01 | 02 | 04 | 06 |
2014 | 06 |

2011-02-23

[][][] gnupackでESS+Rを使うとき用のinit.el 23:12  gnupackでESS+Rを使うとき用のinit.elを含むブックマーク  gnupackでESS+Rを使うとき用のinit.elのブックマークコメント

init.elの最後にコピペすると私好みの動作になります!!

2011-02-17

[] なんでn-1なんですか 18:46  なんでn-1なんですかを含むブックマーク  なんでn-1なんですかのブックマークコメント

f:id:Rion778:20110217184449j:image

不偏分散を計算する際になぜnではなくn-1で割るのか。理由はともかくnで割ってマズイのは割ってみれば分かります。

やってみよう

  • サイコロ: 1から6までが等しい確率で出る理想的なサイコロ様を用意
  • 分散の計算: サイコロをn回振るごとに分散と不偏分散を計算
    • nはとりあえず2から50まで
    • それぞれのnについて1000回分散を計算し、その平均をそのn数における分散とする
## 分散(nで割るやつ)
var <- function(data) sum((mean(data) - data)^2)/length(data)
## 不偏分散(n-1で割るやつ) 
var2 <- function(data) sum((mean(data) - data)^2)/(length(data)-1)

dice <- 1:6                             # サイコロ 
true.var <- var(dice)                   # 真の分散
n.limit <- 50                           # サイコロを振る回数
rep.limit <- 1000                       # 分散を計算する回数
mean.var <- mean.var2 <- numeric(n.limit-1)

for(n in 2:n.limit){
  v <- v2 <- numeric(rep.limit)
  for(i in 1:rep.limit){
    v[i] <- var(sample(dice, n, rep=TRUE))
    v2[i] <- var2(sample(dice, n, rep=TRUE))
  }
  mean.var[n-1] <- mean(v)
  mean.var2[n-1] <- mean(v2)
}

plot(2:n.limit, ylim=c(0, 4), type="n",
     xlab="サイコロを振った回数", ylab="分散の平均値")
points(2:n.limit, mean.var, col=2)
points(2:n.limit, mean.var2, col=3)

abline(h = true.var, col="skyblue")
legend("bottomright", inset=0.05,
       legend=c("分散(nで割ったやつ)の平均",
                "不偏分散(n-1で割ったやつ)の平均",
                "真の分散"),
       pch=c(1, 1, NA),
       lty=c(NA, NA, 1),
       col=c(2, 3, "skyblue"),
       box.lty=0)

結果

f:id:Rion778:20110217184332p:image

不偏分散マジ不偏。それで結局なんでn-1なんですか。

[][] ggplot2のセパレータをドットにしたい 00:33  ggplot2のセパレータをドットにしたいを含むブックマーク  ggplot2のセパレータをドットにしたいのブックマークコメント

アンダースコアは <- 入力するのに使いたいので。

library(ggplot2)
for(o in ls(pos = "package:ggplot2")) assign((gsub("_", ".", o)), eval(as.symbol(o)))

p <- qplot(wt, mpg, data = mtcars)

p + geom_smooth(aes(group=cyl), method="lm")
p + geom.smooth(aes(group=cyl), method="lm")

あまり細かく調べてないので余計な副作用があるのか無いのかよく分からない。

abrahamcowabrahamcow 2011/02/23 23:11 "ggplot2"で検索して来ました。おもしろかったです。

2011-02-10

[][] matplotlibrc 19:22  matplotlibrcを含むブックマーク  matplotlibrcのブックマークコメント

ターミナルから動かしてもプロットが表示されなかったので分からないなりに調べた結果~/.matplotlib/matplotlibrcに

interactive : False
backend : MacOSX

と記述して保存したらとりあえずプロットできるようになったのでメモ.

Mac OS X 10.6 + Python 2.6

まあそのうち分かるようになるだろうと希望的観測.

参考