Add BALANCED_ASSIGNMENT variable config #893
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a new
BALANCED_ASSIGNMENTvariable config type that allows experimenters to randomly assign participants to different experimental conditions (e.g., policies, treatments) with balanced distribution.Changes
New Feature - Balanced Assignment Variables
BalancedAssignmentVariableConfigtype with three balance strategies:ROUND_ROBIN- Cycles through values based on participant count (deterministic, perfectly balanced)LEAST_USED- Assigns to the value used by fewest participants (handles dropouts)RANDOM- Seeded random selection without balancingEXPERIMENT-wide or per-COHORTgetPolicyBalancedExperimentTemplate)Refactor - Moved
generateVariablesForScopeto functionsutils/tofunctions/since balanced assignment requires Firestore queries (e.g. querying active participant count forROUND_ROBINstrategy, variable count forLEAST_USEDstrategy)generateStaticVariables,generateRandomPermutationVariables) remain in utils and are exportedTesting
generateVariablesForScopeinfunctions/using Firestore emulatorutils/to test helper functions directly