Scheduled service maintenance on November 22


On Friday, November 22, 2024, between 06:00 CET and 18:00 CET, GIN services will undergo planned maintenance. Extended service interruptions should be expected. We will try to keep downtimes to a minimum, but recommend that users avoid critical tasks, large data uploads, or DOI requests during this time.

We apologize for any inconvenience.

Browse Source

[DATALAD] Recorded changes

Lucas Gautheron 1 month ago
parent
commit
b754305c57

+ 3 - 1
code/models/blocks/behavior_model_truth.stan

@@ -10,6 +10,8 @@ real recs_priors_lpmf(array[] int children,
     matrix mu_child_level,
     vector alpha_child_level,
     vector child_dev_age,
+    real alpha_dev,
+    real sigma_dev,
     real beta_dev,
     real beta_direct
     ) {
@@ -18,7 +20,7 @@ real recs_priors_lpmf(array[] int children,
         for (k in start:end) {
             real expected_adu_input = mu_child_level[children[k-start+1],2] + mu_child_level[children[k-start+1],3];
             real chi_mu = mu_pop_level[1]*exp(
-                (child_dev_age[children[k-start+1]])*age[k]/12.0
+                (alpha_dev+sigma_dev*child_dev_age[children[k-start+1]])*age[k]/12.0
                 +((expected_adu_input-mu_adu)/mu_adu)*(beta_dev*age[k]/12.0/10.0)
                 +(((truth_vocs[k,3]+truth_vocs[k,4]-expected_adu_input)/1000/recs_duration)/expected_adu_input)*(beta_direct/10.0)
             );

+ 2 - 2
code/models/blocks/behavior_observations_model.stan

@@ -6,7 +6,7 @@ target += reduce_sum(
     n_recs, n_classes, recs_duration, age,
     truth_vocs,
     mu_pop_level, mu_adu, mu_child_level, alpha_child_level,
-    child_dev_age, beta_dev, beta_direct
+    child_dev_age, alpha_dev, sigma_dev, beta_dev, beta_direct
 );
 
 // P(child|corpus)
@@ -56,4 +56,4 @@ for (c in 1:n_children) {
     }
 }
 
-child_dev_age ~ normal(alpha_dev, sigma_dev);
+child_dev_age ~ normal(0, 1);

+ 1 - 1
code/models/blocks/confusion_model_parameters.stan

@@ -1,3 +1,3 @@
-matrix<lower=0>[n_classes,n_classes] alphas;
+matrix<lower=1>[n_classes,n_classes] alphas;
 matrix<lower=0>[n_classes,n_classes] mus;
 array [n_groups] matrix<lower=0>[n_classes,n_classes] lambda;

+ 2 - 2
code/models/blocks/confusion_model_priors.stan

@@ -2,11 +2,11 @@ for (i in 1:n_classes) {
     for (j in 1:n_classes) {
         if (i==j) {
             mus[i,j] ~ exponential(2);
-            alphas[i,j] ~ gamma(2, 1);
+            alphas[i,j] ~ pareto(1, 1.5);
         }
         else {
             mus[i,j] ~ exponential(8);
-            alphas[i,j] ~ gamma(2, 1);
+            alphas[i,j] ~ pareto(1, 1.5);
         }
         for (c in 1:n_groups) {
             lambda[c,i,j] ~ gamma(alphas[i,j], alphas[i,j]/mus[i,j]);

+ 128 - 0
code/models/dev_poisson.stan

@@ -0,0 +1,128 @@
+functions {
+    #include "blocks/confusion_model.stan"
+    #include "blocks/confusion_inverse_model.stan"
+    #include "blocks/behavior_model_truth.stan"
+}
+
+// TODO
+// use speech rates to set priors on truth_vocs
+data {
+    int<lower=1> n_classes; // number of classes
+
+    // analysis data block
+    int<lower=1> n_recs;
+    int<lower=1> n_children;
+
+    array[n_recs] int<lower=1> children;
+    array[n_recs] real<lower=1> age;
+    array[n_recs] int<lower=-1> siblings;
+    array[n_recs, n_classes] int<lower=0> vocs;
+    array[n_children] int<lower=1> corpus;
+
+    real<lower=0> recs_duration;
+
+    // speaker confusion data block
+    int<lower=1> n_clips;   // number of clips
+    int<lower=1> n_groups; // number of groups
+    int<lower=1> n_corpora;
+    array [n_clips] int group;
+    array [n_clips] int conf_corpus;
+    array [n_clips,n_classes] int<lower=0> algo_total; // algo vocs attributed to specific speakers
+    array [n_clips,n_classes] int<lower=0> truth_total;
+    array [n_clips] real<lower=0> clip_duration;
+    array [n_clips] real<lower=0> clip_age;
+
+    int<lower=0> n_validation;
+
+    // actual speech rates
+    int<lower=1> n_rates;
+    int<lower=1> n_speech_rate_children;
+
+    array [n_rates,n_classes] int<lower=0> speech_rates;
+    array [n_rates] int group_corpus;
+    array [n_rates] real<lower=0> durations;
+    array [n_rates] real<lower=0> speech_rate_age;
+    array [n_rates] int<lower=-1> speech_rate_siblings;
+    array [n_rates] int<lower=1,upper=n_speech_rate_children> speech_rate_child;
+
+    // parallel processing
+    int<lower=1> threads;
+}
+
+transformed data {
+    vector<lower=0>[n_groups] recording_age;
+    array[n_speech_rate_children] int<lower=1> speech_rate_child_corpus;
+
+    array[n_children] int<lower=-1> child_siblings;
+    array[n_speech_rate_children] int<lower=-1> speech_rate_child_siblings;
+    int no_siblings = 0;
+    int has_siblings = 0;
+
+    for (c in 1:n_clips) {
+        recording_age[group[c]] = clip_age[c];
+    }
+
+    for (k in 1:n_rates) {
+        speech_rate_child_corpus[speech_rate_child[k]] = group_corpus[k];
+    }
+
+    for (k in 1:n_recs) {
+        child_siblings[children[k]] = siblings[k];
+    }
+
+    for (c in 1:n_children) {
+        if (child_siblings[c] == 0) {
+            no_siblings += 1;
+        }
+        else if (child_siblings[c] > 0) {
+            has_siblings += 1;
+        }
+    }
+
+    for (k in 1:n_rates) {
+        speech_rate_child_siblings[speech_rate_child[k]] = speech_rate_siblings[k];
+    }
+}
+
+parameters {
+    matrix<lower=0>[n_children,n_classes-1] mu_child_level;
+    vector [n_children] child_dev_age;
+    matrix<lower=0> [n_recs, n_classes] truth_vocs;
+    array [n_recs] matrix<lower=0,upper=1>[n_classes,n_classes] actual_confusion_baseline;
+
+    // confusion parameters
+    #include "blocks/confusion_model_parameters.stan"
+
+    // behavior model parameters
+    #include "blocks/behavior_model_parameters.stan"
+}
+
+model {
+    // inverse confusion model
+    target += reduce_sum(
+       inverse_model_lpdf, actual_confusion_baseline, 1,
+       n_recs, n_classes, recs_duration,
+       vocs, age,
+       truth_vocs, mus, etas, p//, mus_fp, etas_fp
+    );
+
+    // contribution of full recordings to the model of behavior
+    #include "blocks/behavior_observations_model.stan"
+
+    target += reduce_sum(
+        confusion_model_lpdf, lambda, 1,
+        n_classes, n_clips,
+        algo_total, truth_total, group, clip_duration, clip_age,
+        p//, lambda_fp
+    );
+
+    // priors on the nuisance parameters of the confusion model
+    #include "blocks/confusion_model_priors.stan"
+
+    // priors on the hierarchical model of speech behavior
+    #include "blocks/behavior_model_priors.stan"
+}
+
+generated quantities {
+    #include "blocks/behavior_model_generated.stan"
+}