Browse Source

modified regression models

Lucas Gautheron 2 weeks ago
parent
commit
ef91192752
4 changed files with 23 additions and 71 deletions
  1. 7 10
      code/change.stan
  2. 6 3
      code/disruption.stan
  3. 5 29
      code/entered.stan
  4. 5 29
      code/exited.stan

+ 7 - 10
code/change.stan

@@ -11,11 +11,11 @@ data {
     vector<lower=0>[N] soc_div;
     vector<lower=0>[N] int_div;
     vector[N] res_soc_div;
-    //vector<lower=0>[N] age;
+    vector<lower=0>[N] age;
+
     vector<lower=0>[N] m;
     matrix<lower=0,upper=1>[N,K] x;
     vector[N] stable;
-    //vector<lower=0>[N] age;
     array [N] int<lower=0,upper=K-1> primary_research_area;
 }
 
@@ -25,6 +25,7 @@ transformed data {
     vector[N] z_soc_div = z_scale(soc_div);
     vector[N] z_int_div = z_scale(int_div);
     vector[N] z_res_soc_div = z_scale(res_soc_div);
+    vector[N] z_age = z_scale(age);
 }
 
 parameters {
@@ -32,12 +33,11 @@ parameters {
     real beta_soc_div;
     real beta_int_div;
     real beta_stable;
-    //real beta_age;
+    real beta_age;
     vector[K] beta_x;
 
     real mu;
     real<lower=0> tau;
-    //real<lower=1> sigma;
     real<lower=0> sigma;
 
     vector<lower=0,upper=1>[K] mu_x;
@@ -57,15 +57,13 @@ model {
     beta_int_div ~ normal(0, 1);
     beta_x ~ double_exponential(0, 1);
     beta_stable ~ normal(0, 1);
-    //beta_age ~ normal(0, 1);
+    beta_age ~ normal(0, 1);
 
     mu ~ normal(0, 1);
     tau ~ exponential(1);
-    //sigma ~ pareto(1, 1.5);
     sigma ~ exponential(1);
 
-    //m ~ beta_proportion(inv_logit(beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu), sigma);
-    z_m ~ normal(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu, sigma);
+    z_m ~ normal(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu, sigma);
 
     eta ~ pareto(1, 1.5);
     mu_x ~ uniform(0, 1);
@@ -85,11 +83,10 @@ generated quantities {
             beta_research_area[k] = beta_x[primary_research_area[k]+1]*tau;
         }
         //vector[N] pred = inv_logit(beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu);
-        vector[N] pred = beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu;
+        vector[N] pred = beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu;
 
         R2 = mean(square(z_m-pred))/variance(z_m);
         R2 = 1-R2;
     }
-    
 }
 

+ 6 - 3
code/disruption.stan

@@ -10,7 +10,7 @@ data {
     vector<lower=0>[N] soc_cap;
     vector<lower=0>[N] soc_div;
     vector<lower=0>[N] int_div;
-    //vector<lower=0>[N] age;
+    vector<lower=0>[N] age;
     vector<lower=0>[N] m;
     matrix<lower=0,upper=1>[N,K] x;
     vector[N] stable;
@@ -22,6 +22,7 @@ transformed data {
     vector[N] z_soc_cap = z_scale(soc_cap);
     vector[N] z_soc_div = z_scale(exp(soc_div));
     vector[N] z_int_div = z_scale(exp(int_div));
+    vector[N] z_age = z_scale(age);
 }
 
 parameters {
@@ -29,6 +30,7 @@ parameters {
     real beta_soc_div;
     real beta_int_div;
     real beta_stable;
+    real beta_age;
     vector[K] beta_x;
 
     real mu;
@@ -57,6 +59,7 @@ model {
     beta_int_div ~ normal(0, 1);
     beta_x ~ normal(0, tau);
     beta_stable ~ normal(0, 1);
+    beta_age ~ normal(0, 1);
 
     z_soc_div ~ normal(lambda_div*z_int_div + mu_div, sigma_div);
     lambda_div ~ normal(0, 1);
@@ -67,7 +70,7 @@ model {
     tau ~ exponential(1);
     sigma ~ exponential(1);
 
-    z_m ~ normal(beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu, sigma);
+    z_m ~ normal(beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu, sigma);
 
     eta ~ pareto(1, 1.5);
     mu_x ~ uniform(0, 1);
@@ -87,7 +90,7 @@ generated quantities {
             beta_research_area[k] = beta_x[primary_research_area[k]+1];
         }
         vector[N] res_soc_div = z_scale(soc_div - (lambda_div*z_int_div + mu_div));
-        vector[N] pred = beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu;
+        vector[N] pred = beta_soc_cap*z_soc_cap + beta_soc_div*res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu;
 
         R2 = mean(square(z_m-pred))/variance(z_m);
         R2 = 1-R2;

+ 5 - 29
code/entered.stan

@@ -11,7 +11,7 @@ data {
     vector<lower=0>[N] soc_div;
     vector<lower=0>[N] int_div;
     vector[N] res_soc_div;
-    //vector<lower=0>[N] age;
+    vector<lower=0>[N] age;
     array[N] int<lower=0,upper=1> m;
     matrix<lower=0,upper=1>[N,K] x;
     vector[N] stable;
@@ -19,12 +19,11 @@ data {
 }
 
 transformed data {
-    //vector[N] z_m = z_scale(m);
     vector[N] z_soc_cap = z_scale(soc_cap);
     vector[N] z_soc_div = z_scale(soc_div);
     vector[N] z_int_div = z_scale(int_div);
     vector[N] z_res_soc_div = z_scale(res_soc_div);
-
+    vector[N] z_age = z_scale(age);
 }
 
 parameters {
@@ -32,16 +31,12 @@ parameters {
     real beta_soc_div;
     real beta_int_div;
     real beta_stable;
+    real beta_age;
     vector[K] beta_x;
 
     real mu;
     real<lower=0> tau;
     real<lower=1> sigma;
-
-    // vector[K] mu_x;
-    // vector<lower=0>[K] sigma_x;
-    // real mu_pop;
-    // real<lower=0> sigma_pop;
 }
 
 model {
@@ -55,35 +50,16 @@ model {
     beta_int_div ~ normal(0, 1);
     beta_x ~ double_exponential(0, 1);
     beta_stable ~ normal(0, 1);
+    beta_age ~ normal(0, 1);
 
     mu ~ normal(0, 1);
     tau ~ exponential(1);
     sigma ~ pareto(1,1.5);
 
-    m ~ bernoulli_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu);
-
-    // m ~ beta(mu_pop, sigma_pop);
-    // for (k in 1:N) {
-    //    m[k] ~ normal(mu_x[primary_research_area[k]+1], sigma_x[primary_research_area[k]+1]);
-    // }
-    // mu_x ~ normal(0, 1);
-    // mu_pop ~ normal(0, 1);
-    // sigma_x ~ exponential(1);
-    // sigma_pop ~ exponential(1);
+    m ~ bernoulli_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu);
 }
 
 generated quantities {
-    // real R2 = 0;
-    // {
-    //     vector[N] beta_research_area;
-    //     for (k in 1:N) {
-    //         beta_research_area[k] = beta_x[primary_research_area[k]+1];
-    //     }
-    //     vector[N] pred = inv_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu);
-
-    //     R2 = mean(square(z_m-pred));
-    //     R2 = 1-R2;
-    // }
     
 }
 

+ 5 - 29
code/exited.stan

@@ -11,7 +11,7 @@ data {
     vector<lower=0>[N] soc_div;
     vector<lower=0>[N] int_div;
     vector[N] res_soc_div;
-    //vector<lower=0>[N] age;
+    vector<lower=0>[N] age;
     array[N] int<lower=0,upper=1> m;
     matrix<lower=0,upper=1>[N,K] x;
     vector[N] stable;
@@ -19,12 +19,11 @@ data {
 }
 
 transformed data {
-    //vector[N] z_m = z_scale(m);
     vector[N] z_soc_cap = z_scale(soc_cap);
     vector[N] z_soc_div = z_scale(soc_div);
     vector[N] z_int_div = z_scale(int_div);
     vector[N] z_res_soc_div = z_scale(res_soc_div);
-
+    vector[N] z_age = z_scale(age);
 }
 
 parameters {
@@ -32,16 +31,12 @@ parameters {
     real beta_soc_div;
     real beta_int_div;
     real beta_stable;
+    real beta_age;
     vector[K] beta_x;
 
     real mu;
     real<lower=0> tau;
     real<lower=1> sigma;
-
-    // vector[K] mu_x;
-    // vector<lower=0>[K] sigma_x;
-    // real mu_pop;
-    // real<lower=0> sigma_pop;
 }
 
 model {
@@ -55,35 +50,16 @@ model {
     beta_int_div ~ normal(0, 1);
     beta_x ~ double_exponential(0, 1);
     beta_stable ~ normal(0, 1);
+    beta_age ~ normal(0, 1);
 
     mu ~ normal(0, 1);
     tau ~ exponential(1);
     sigma ~ pareto(1,1.5);
 
-    m ~ bernoulli_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu);
-
-    // m ~ beta(mu_pop, sigma_pop);
-    // for (k in 1:N) {
-    //    m[k] ~ normal(mu_x[primary_research_area[k]+1], sigma_x[primary_research_area[k]+1]);
-    // }
-    // mu_x ~ normal(0, 1);
-    // mu_pop ~ normal(0, 1);
-    // sigma_x ~ exponential(1);
-    // sigma_pop ~ exponential(1);
+    m ~ bernoulli_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_age*z_age + beta_research_area + mu);
 }
 
 generated quantities {
-    // real R2 = 0;
-    // {
-    //     vector[N] beta_research_area;
-    //     for (k in 1:N) {
-    //         beta_research_area[k] = beta_x[primary_research_area[k]+1];
-    //     }
-    //     vector[N] pred = inv_logit(beta_soc_cap*z_soc_cap + beta_soc_div*z_res_soc_div + beta_int_div*z_int_div + beta_stable*stable + beta_research_area + mu);
-
-    //     R2 = mean(square(z_m-pred));
-    //     R2 = 1-R2;
-    // }
     
 }