私は現在matlabからRに移行しています。何をしたいかを調べようとしています。データが推定されるパラメータの関数であるとき、Rの非線形最小二乗
私は観測が米国の州であるRの非線形モデルを推定したいと思います。 Y_Sは国家レベルの変数とX_csある
log(Y_s) = log(phi) + log(f(theta, X_cs)) + u_s
:シワがモデルは次のようになります。すなわち、独立変数の一つは、推定するパラメータを使用して計算郡に対する国家レベルの指標であることです状態内の変数の郡レベルの観測値を含むベクトルで、f()は状態に対して計算されたインデックスのスカラー値を返します。
これまでのところ、私はRのnls
関数を使って関数に渡されたデータを変換しようとしました。インデックスの詳細から抽象化、コードの簡単なバージョンは、次のようになります
library(dplyr)
state <- c("AK", "AK", "CA", "CA", "MA", "MA", "NY", "NY")
Y <- c(3, 3, 5, 5, 6, 6, 4, 4)
X <- c(4, 5, 2, 3, 3, 5, 3, 7)
Sample <- data.frame(state, Y, X)
f <- function(data, theta) {
output <- data %>%
group_by(state) %>%
summarise(index = mean(X**theta),
Y = mean(Y))
}
model <- nls(Y ~ log(phi) + log(index),
data = f(Sample, theta),
start = list(phi = exp(3), theta = 1.052))
これは勾配が特異であることを私に言って、エラーを返します。私が推測するのは、Rは、式でパラメータtheta
をどのように使用すべきかを見ることができないからです。
nls
を使用してこれを行う方法はありますか?手動で最小化する基準関数、つまりlog(Y_s) - log(phi) - log(f(theta, X_cs))
を定義し、最小化ルーチンを使用してパラメータ値を推定することができます。しかし、私はnls
のpostestimation機能を使用したいと思います。パラメータ推定の信頼区間を持つようなものです。どんな助けでも大歓迎です。
ありがとう@Roland。私はこの抜粋した例で使用しているパッケージのみを含めるように質問を編集し、クロスポストされたバージョンの質問を削除しました。そのような標準的なエラーやそのようなことを計算する際に、nlsパッケージは 'length(Y)'が 'length(unique)(Y)'ではなくobservationsの数であると考えています。私は正しい? –
州ごとにデータポイントの数が異なる場合のために重みを含めました。私は標準エラーとp値がこの問題のために重要であれば、ブートストラップの標準エラーを計算しようとします(十分な量のデータがあると仮定します)。 – Roland
ありがとうございました。一般的な非線形性以外に、ブートストラップを使用する特別な理由はありますか?私は47州で約3000の郡を集めている。 –