Feature request: `row_centred_matrix` and `column_centred_matrix`

Ouverte
#3,361 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
cpp
Domaine
backend

Piste de recherche

Commencez par examiner le type existant sum_to_zero_vector ainsi que les constructions associées matrix, array, vector et cholesky_factor_corr décrites dans l’issue. Lisez le chapitre sur la régression du User's Guide pour comprendre le modèle motivant, puis clarifiez la dénomination et la conception de l’API ; le travail sera considéré comme terminé lorsqu’une approche convenue pour les matrices contraintes par lignes et par colonnes ainsi que leurs alias d’orthographe sera incluse.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

feature good first issue

To facilitate working with the sum-to-zero constraint in multivariate contexts, it would be valuable to be able to specify not only individual sum_to_zero_vectors but also matrices for which all rows or all columns are constrained to sum to zero. To my knowledge, there is no universally standard name for such a mathematical object (nor to Claude's knowledge, which only produced a list of suggestions), but for the sake of starting a conversation, I would propose something like row_centered_matrix and col_centered_matrix (and perhaps row_centred_matrix and col_centred_matrix as aliases for spelling-dialect neutrality).

The primary use case for me would be hierarchical modelling with correlated multivariate random effects, e.g., random-slopes models or multivariate item-response models. To reduce problems with funnel geometries during sampling, it can be wise to write such models using ‘raw’ parameters with standard normal priors and then construct the actual parameters in the transformed parameters block via matrix multiplication with standard-deviation and correlation-matrix hyperpriors (e.g., the User's Guide chapter on ‘Regression Models’).

That's awkward to do using the sum_to_zero_vector type alone. The N raw parameter vectors (let's say of dimension K) have to be stored as array[K] sum_to_zero_vector[N]. This structure needs to be pulled apart and restructured as matrix[K, N] or array[N] vector[K] in transformed parameters in order to be multiplied by a cholesky_factor_corr[K]. In practice, the problem is mostly that this restructuring step is ugly and confusing to read, but in theory, it is also memory inefficient and could cause slowdowns at large model scale.

Langage dominant
C++
Étoiles
845
Forks
225
Merge moyen
4 j 21 h
PR mergées (30 j)
13

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de stan-dev/math

Toutes les issues de stan-dev/math

Issues similaires

Plus d'issues C++

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.