私は様々な初期値を持つモデルを実行していますが、ループでデータフレームに値(3つの推定値)を追加しようとしています。私はループ内の推定値に値を割り当てますが、データフレームを生成するためにそれらを呼び出すことはできません。ループ内のデータフレーム行ごとに値を追加します
私のコード:f
は推定モデルです。モデルの3つのパラメータ:alpha、rho、lambda。私はこれらの3つの値を出力したい。
library("maxLik")
f <- function(param) {
alpha <- param[1]
rho <- param[2]
lambda <- param[3]
u <- 0.5 * (dataset$v_50_1)^alpha - 0.5 * lambda * (dataset$v_50_2)^alpha
p <- 1/(1 + exp(-rho * u))
logl <- sum(dataset$gamble * log(p) + (1 - dataset$gamble) * log(1 - p))
}
df <- data.frame(alpha = numeric(), rho = numeric(), lambda = numeric())
for (j in 1:20) {
tryCatch({
ml <- maxLik(f, start = c(alpha = runif(1, 0, 2), rho = runif(1, 0, 4), lambda = runif(1,
0, 10)), method = "NM")
alpha[j] <- ml$estimate[1]
rho[j] <- ml$estimate[2]
lambda[j] <- ml$estimate[3]
}, error = function(e) {NA})
}
output <- data.frame(alpha, rho, lambda)
エラーが発生します。
Error in data.frame(alpha, rho, lambda) : object 'alpha' not found
の予想される出力
alpha rho lambda
0.4 1 2 # estimators append by row.
0.6 1.1 3 # each row has estimators that are estimated
0.7 1.5 4 # by one set of initial values, there are 20
# rows, as the estimation loops for 20 times.
関数fを変更することで、例を実行しています –
1.それを行うdo.call(rbind、mylist)、2。RUN-INDEXで新しい列を作成するのは、独自の行ではなく、 3.エラー関数では、失敗した実行も記録します。とにかく後でそれを取り除くことができます。 –
また、fとは何ですか? –