2011年12月18日日曜日

R: glmのオプション

R の glm 関数で


イテレーション(繰り返しの計算)回数を増やすには
glm() の引数 maxit に適当な数字をいれる。「アルゴリズムは収束しませんでした」みたいなメッセージが出ても、maxit を増やせばとりあえず収束はする(場合もある)。


イテレーションの収束判定(許容差)を変えるには
glm() の引数 epsilon に適当な数字をいれる。これを変えたいと思ったことはあんまりない。


例)
>  x <- c(18,17,15,20,10,20,25,13,12)
>  y <- c(0, 0, 0, 0, 1, 1, 0, 1, 0)
> glm(y ~ x, family=binomial(logit), maxit=1000, epsilon=0.0001) #この計算においてイテレーション回数とか変える必要は別にないが、いい例が思いつかなかった。
 
Call:  glm(formula = y ~ x, family = binomial(logit), maxit = 1000, 
    epsilon = 1e-04)

Coefficients:
(Intercept)            x  
     2.6828      -0.2111  

Degrees of Freedom: 8 Total (i.e. Null);  7 Residual
Null Deviance:     11.46 
Residual Deviance: 10.09  AIC: 14.09 


また trace = TRUE にすると各イテレーションごとに出力してくる。
例)

> glm(y ~ x, family=binomial(logit), maxit=1000, epsilon=0.0001, trace=TRUE)
Deviance = 10.09889 Iterations - 1
Deviance = 10.09096 Iterations - 2
Deviance = 10.09096 Iterations - 3

Call:  glm(formula = y ~ x, family = binomial(logit), maxit = 1000,
    epsilon = 1e-04, trace = TRUE)

Coefficients:
(Intercept)            x
     2.6828      -0.2111

Degrees of Freedom: 8 Total (i.e. Null);  7 Residual
Null Deviance:    11.46
Residual Deviance: 10.09 AIC: 14.09


参考URL: http://rss.acs.unt.edu/Rdoc/library/stats/html/glm.control.html

0 件のコメント:

コメントを投稿