SSブログ

Rを使って重回帰分析を色々な方法で解く その2 [データサイエンス、統計モデル]

Rを使って重回帰分析を色々な方法で解く その1
http://skellington.blog.so-net.ne.jp/2017-05-30

こちらの続き。
汎用最適化関数 optim() を使って解く方法。

### optim を使ったパラメータ推定 ###
b0 <- c(0, 0, 0, 0) # 推定するパラメータの初期化
num_row <- nrow(dat) # レコード数

y_ols = dat$Sepal.Length
x_ols = cbind(1, dat$Sepal.Width, dat$Petal.Length, dat$Petal.Width)

ols <- function (y_ols, x_ols) {
min_rss <- function (param) {
sum((y_ols - x_ols %*% param)^2)
}
k <- ncol(x_ols)
return(optim(par = rep(0, k), fn = min_rss, method = "BFGS", hessian = TRUE))
}

result <- ols(y_ols, x_ols)

result
$par
[1] 2.3518922 0.6548347 0.2375590 0.2521268

$value # 対数尤度値
[1] 2.586648

$counts
function gradient
24 8

$convergence # 収束判定
[1] 0

$message
NULL

$hessian
[,1] [,2] [,3] [,4]
[1,] 100.0 342.80 146.20 24.60
[2,] 342.8 1189.20 502.32 85.24
[3,] 146.2 502.32 216.70 36.56
[4,] 24.6 85.24 36.56 7.14

nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:学問