> ###データの生成###
> 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 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る