Skip to content

Commit 1177d22

Browse files
committed
frequentist for search engine
1 parent e26d006 commit 1177d22

File tree

2 files changed

+31
-14
lines changed

2 files changed

+31
-14
lines changed

Diff for: experimentation-automation/experimentGeneratorGeneral.tsx

+19-12
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,16 @@ export default function ExperimentGenerator({
3434
const { updateAudienceContext } = useContext(LoginContext);
3535
const [expGenerator, setExpGenerator] = useState<boolean>(false);
3636
const [progress, setProgress] = useState<number>(0);
37-
const [experimentTypeObj, setExperimentTypeObj] = useState<{experimentType:string, numOfRuns:number}>({experimentType:"",numOfRuns:0});
37+
const [experimentTypeObj, setExperimentTypeObj] = useState<{
38+
experimentType: string;
39+
numOfRuns: number;
40+
}>({ experimentType: "", numOfRuns: 0 });
3841
const ldClientError = useLDClientError();
3942

40-
if(ldClientError) {
43+
if (ldClientError) {
4144
alert("Error in LaunchDarkly Client");
4245
}
43-
46+
4447
const updateContext = async (): Promise<void> => {
4548
updateAudienceContext();
4649
};
@@ -96,11 +99,12 @@ export default function ExperimentGenerator({
9699
default:
97100
alert("No function exist for feature experimentation");
98101
}
99-
setExperimentTypeObj({experimentType:"",numOfRuns:0});
100102
}
101-
}, [expGenerator]);
102-
103103

104+
return () => {
105+
setExperimentTypeObj({ experimentType: "", numOfRuns: 0 });
106+
};
107+
}, [expGenerator]);
104108

105109
return (
106110
<>
@@ -114,10 +118,11 @@ export default function ExperimentGenerator({
114118
<p className="font-bold font-sohnelight text-lg">{title}</p>
115119
</DialogTrigger>
116120
<DialogContent>
117-
{expGenerator && experimentTypeObj.experimentType !== '' ? (
121+
{expGenerator && experimentTypeObj.experimentType !== "" ? (
118122
<div className="flex justify-center items-center h-52">
119123
<div className=" font-bold font-sohne justify-center items-center text-xl text-center">
120-
Generating Data {capitalizeFirstLetter(experimentTypeObj.experimentType)} Experimentation
124+
Generating Data {capitalizeFirstLetter(experimentTypeObj.experimentType)}{" "}
125+
Experimentation
121126
<br />
122127
Running {experimentTypeObj.numOfRuns} runs...
123128
<br />
@@ -131,19 +136,21 @@ export default function ExperimentGenerator({
131136
<h2>{title}</h2>
132137
<div className="flex gap-x-4">
133138
<button
134-
onClick={() => {
139+
onClick={async () => {
140+
setExperimentTypeObj({ experimentType: "bayesian", numOfRuns: 500 });
141+
135142
setExpGenerator(true);
136-
setExperimentTypeObj({experimentType:"bayesian", numOfRuns:500});
137143
}}
138144
className={`mt-2 ${"bg-gradient-airways"} p-2 rounded-sm hover:brightness-125 text-white`}
139145
>
140146
Bayesian Experimentation
141147
</button>
142148

143149
<button
144-
onClick={() => {
150+
onClick={async () => {
151+
setExperimentTypeObj({ experimentType: "frequentist", numOfRuns: 10000 });
152+
145153
setExpGenerator(true);
146-
setExperimentTypeObj({experimentType:"frequentist", numOfRuns:10000});
147154
}}
148155
className={`mt-2 ${"bg-gradient-experimentation"} p-2 rounded-sm hover:brightness-125 text-white`}
149156
>

Diff for: experimentation-automation/featureExperimentGeneratorFunctions.ts

+12-2
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ export const generateNewSearchEngineFeatureExperimentResults = async ({
147147
setProgress(0);
148148
setExpGenerator(true);
149149
let totalPrice = 0;
150+
const probablityExperimentType = {
151+
["bayesian"]: { ["trueProbablity"]: 60, ["falseProbablity"]: 30 },
152+
["frequentist"]: { ["trueProbablity"]: 60, ["falseProbablity"]: 52 },
153+
};
154+
const experimentType: string = experimentTypeObj.experimentType;
155+
150156
for (let i = 0; i < experimentTypeObj.numOfRuns; i++) {
151157
const newSearchEngineFeatureFlag: string = client?.variation(
152158
"release-new-search-engine",
@@ -155,14 +161,18 @@ export const generateNewSearchEngineFeatureExperimentResults = async ({
155161
if (newSearchEngineFeatureFlag?.includes("new-search-engine")) {
156162
totalPrice = Math.floor(Math.random() * (500 - 300 + 1)) + 300;
157163
let probablity = Math.random() * 100;
158-
if (probablity < 60) {
164+
if (probablity < probablityExperimentType[experimentType as keyof typeof probablityExperimentType][
165+
"trueProbablity"
166+
]) {
159167
client?.track("search-engine-add-to-cart", client.getContext());
160168
}
161169
client?.track("in-cart-total-price", client.getContext(), totalPrice);
162170
} else {
163171
totalPrice = Math.floor(Math.random() * (300 - 200 + 1)) + 200;
164172
let probablity = Math.random() * 100;
165-
if (probablity < 40) {
173+
if (probablity < probablityExperimentType[experimentType as keyof typeof probablityExperimentType][
174+
"falseProbablity"
175+
]) {
166176
client?.track("search-engine-add-to-cart", client.getContext());
167177
}
168178
client?.track("in-cart-total-price", client.getContext(), totalPrice);

0 commit comments

Comments
 (0)