Analysis Recipes#
Sequence Recipe#
from design_research_analysis import fit_markov_chain_from_table
result = fit_markov_chain_from_table(rows, order=1, smoothing=1.0)
print(result.transition_matrix)
Model Comparison Recipe#
from design_research_analysis import fit_markov_chain_from_table
baseline = fit_markov_chain_from_table(rows_a, order=1, smoothing=1.0)
variant = fit_markov_chain_from_table(rows_b, order=1, smoothing=1.0)
difference = baseline - variant
effect = baseline / variant
print(difference.to_dict())
print(effect.effect_size)
Language Recipe (Custom Embedder)#
from design_research_analysis import compute_language_convergence
lookup = {
"alpha": [2.0, 0.0],
"beta": [1.0, 0.0],
"gamma": [0.0, 0.0],
}
convergence = compute_language_convergence(
rows,
window_size=1,
embedder=lambda texts: [lookup[text] for text in texts],
)
print(convergence.direction_by_group)
Embedding Maps Recipe#
import numpy as np
from design_research_analysis import (
build_embedding_map,
cluster_embedding_map,
compute_design_space_coverage,
compute_divergence_convergence,
compute_idea_space_trajectory,
)
vectors = np.asarray(
[
[1.0, 0.0, 0.1],
[0.9, 0.2, 0.1],
[0.0, 1.0, 0.2],
[0.1, 0.9, 0.3],
]
)
embedding_map = build_embedding_map(vectors, method="pca", n_components=2)
clusters = cluster_embedding_map(embedding_map, n_clusters=2)
coverage = compute_design_space_coverage(embedding_map)
trajectory = compute_idea_space_trajectory(
embedding_map,
timestamps=[0, 1, 2, 3],
groups=["session-a"] * 4,
)
dynamics = compute_divergence_convergence(trajectory, window=2)
print(clusters["labels"])
print(coverage["pairwise_spread"]["mean"])
print(dynamics["groups"]["session-a"]["dominant_direction"])
Statistics Recipe#
from design_research_analysis import fit_regression
X = [[0.0], [1.0], [2.0], [3.0]]
y = [1.0, 3.0, 5.0, 7.0]
reg = fit_regression(X, y, feature_names=["x"])
print(reg.coefficients, reg.intercept, reg.r2)
Experiment Condition Comparison Recipe#
from design_research_analysis import (
build_condition_metric_table,
compare_condition_pairs,
)
condition_metric_rows = build_condition_metric_table(
runs_rows,
metric="market_share_proxy",
condition_column="selection_strategy",
conditions=conditions_rows,
evaluations=evaluations_rows,
)
report = compare_condition_pairs(
condition_metric_rows,
condition_pairs=[
("profit_focus_prompt", "neutral_prompt"),
("neutral_prompt", "random_selection"),
],
alternative="greater",
seed=17,
)
print(report.render_brief())
print(report.to_significance_rows())
Dataset And Provenance Recipe#
import pandas as pd
from design_research_analysis import (
capture_run_context,
generate_codebook,
profile_dataframe,
validate_dataframe,
write_run_manifest,
)
frame = pd.DataFrame({"participant_id": [1, 2, 3], "condition": ["A", "A", "B"]})
profile = profile_dataframe(frame)
validation = validate_dataframe(frame, {"participant_id": {"unique": True, "nullable": False}})
codebook = generate_codebook(frame)
context = capture_run_context(seed=7)
write_run_manifest(context, "artifacts/run_manifest.json")
print(profile["n_rows"], validation["ok"], list(codebook["column"]))