@@ -110,13 +110,32 @@ def compute(
110110
111111 if len (objectives_without_effects ) > 0 :
112112 status = HealthcheckStatus .WARNING
113- formatted_metrics = "<br> " .join (objectives_without_effects )
113+ formatted_metrics = "\n " .join (objectives_without_effects )
114114 subtitle = (
115115 "The test of no effect checks to see whether the objective "
116116 "metrics of an experiment have had any detectable effects. Based "
117117 "on the experiment data thus far, no effects have been detected at a "
118118 f"{ (1.0 - self .no_effect_alpha ) * 100 :.0f} % confidence level for "
119- f"the following metrics: <br><br> { formatted_metrics } "
119+ f"the following metrics: \n \n { formatted_metrics } "
120+ "\n \n **Suggested next steps:**\n "
121+ "- Verify that the parameters being tuned actually "
122+ "influence these metrics.\n "
123+ "- Check whether the arm configurations are too similar. "
124+ "This test compares metric values across arms, so if all "
125+ "arms have similar parameter values, no effect will be "
126+ "detected.\n "
127+ "- Check that the metric is correctly implemented and not "
128+ "returning constant values.\n "
129+ "- Check whether the metrics have a low signal-to-noise "
130+ "ratio. High measurement noise relative to the effect "
131+ "size can make it difficult to detect real effects.\n "
132+ "- Consider whether the experiment is underpowered. "
133+ "Increasing the number of segments per arm can reduce "
134+ "measurement uncertainty and improve the power of the "
135+ "statistical test.\n "
136+ "- Run additional trials to explore more of the search "
137+ "space, which may reveal effects not seen with current "
138+ "arm configurations."
120139 )
121140 title_status = "Warning"
122141
0 commit comments