> ###データの生成### > set.seed(3) > a <- 0.2 > b <- -0.2 > id <- 100 > > x <- seq(1, 10, length=id) > y <- exp(a + b*x + rnorm(id, 0, sd=4)) > > ###対数正規分布を仮定して回帰してみる### > func <- function(par, x, y) { + a <- par[1] + b <- par[2] + sig <- par[3] + return( + -1*sum( + log( + (1/(sqrt(2*pi*sig^2)*(y)))*exp(-((a+b*x)-log(y))^2/(2*sig^2)) + ) + ) + ) + + } > res_l <- optim(func, par=c(-0.2, -0.2, 4), x=x, y=y) > > ###対数正規分布なのでexp(u+s^2/2)で期待値となるはずだがならない?### > mean(exp(res_l$par[1] + res_l$par[2]*x + res_l$par[3]^2/2)) [1] 130.4608 > mean(y) [1] 15.99745 ###普通のGLMでやっても合わない### > res <- glm(log(y) ~ x) > mean(exp(predict(res)+summary(res)$dispersion/2)) [1] 146.5174どうぞよろしくお願いいたします。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る