0

私はスタンと確率的プログラミングが初めてです。非線形成長モデルを構築しようとしています。私はモデルを構築することができましたNLS

私が使用したNLS式は次のとおりです。Trump_Pct ~ alpha - beta * lambda^Population

私のNLSの要約は次のとおりです。

Parameters:
     Estimate Std. Error t value Pr(>|t|)    
alpha  5.627e+01  2.053e+00   27.41   <2e-16 ***
beta  3.018e+01  1.974e+00   15.29   <2e-16 ***
lambda 9.981e-01  2.486e-04 4014.47   <2e-16 ***

言い換えれば、基本的な指数減衰曲線です。私はスタンと複製しようとしています。

私のデータは次のとおりです。

データセットにN観測があります。予測子は郡の人口 (「人口」) であり、予測された Y はトランプへの投票率「Trump_Pct」です。

このモデルを構築する 2 つの方法を試しました。

  1. 1 つは、データの各コンポーネントをモデルにベクトルとして渡します。

  2. もう 1 つの方法では、各データ コンポーネントをリストとして残し、各データ ポイントを使用しようとします。

どちらの場合も、モデルを正常に実行することはできません。

ここに私のモデルがあります:

ケース 1:

これは、このモデルの適応です。

ここでは、Trump_Pct 列と Population 列のベクトル化されたバージョンを作成しました。

data {
    int N;
    vector[N] PopulationV;
    vector[N] Trump_PctV;
}
parameters {
    vector [1] alpha;
    vector [1] beta;
    vector [1] lambda;
    real<lower=0> sigma;
}
model {
    vector[N] ypred;
    ypred = alpha[1] - beta[1] * (lambda[1]^PopulationV);
    Trump_PctV ~ ypred + sigma;
}

このモデルは、指数の行で次の理由で失敗します。

`構文エラー、パーサーからのメッセージ:

^ への引数はプリミティブ (実数または整数) でなければなりません。block=local` では実数をベクトルで累乗できません

使用してみましpow()たが、先に進む方法が見つかりません。任意のヒント?

ケース 2:

data {
  int<lower=0> N;
  real <lower=0> Population[N];
  real <lower=0> Trump_Pct[N];
}
parameters {
  real alpha;
  real beta;
  real<lower=3,upper= 4> lambda;
  real<lower=0> tau;
}
transformed parameters {
  real sigma;
  sigma = 1 / sqrt(tau);
}
model {
  real m[N];
  for (i in 1:N)
    m[i] = alpha - beta * pow(lambda, Population[i]);

  Trump_Pct ~ normal(m, sigma);

  alpha ~ normal(10, 20);
  beta ~ normal(5, 10);
  lambda ~ uniform(3, 4);
  tau ~ gamma(.0001, .0001);
}

ケース 2 では、パラメーターの推定値を範囲内に保つことができません。

"Informational Message: The current Metropolis proposal is about to be rejected because of the following issue:"
[2] "Exception thrown at line 21: normal_log: Location parameter[2873] is -inf, but must be finite!"

私の式の単純な非線形モデルについてアドバイスをくれる人はいますか?

4

1 に答える 1