ddooling commited on
Commit
41afdc7
·
1 Parent(s): b572af4

added median based statistics into accoridan

Browse files
Files changed (1) hide show
  1. app.py +26 -22
app.py CHANGED
@@ -4,6 +4,7 @@ import threading
4
  import gradio as gr
5
  import statistics
6
  from scipy import stats
 
7
 
8
  DATA_DIR = './storage'
9
  DATA_FILE = os.path.join(DATA_DIR, 'guesses.json')
@@ -29,19 +30,33 @@ def add_guess(guess):
29
  guesses = load_guesses()
30
  guesses.append(guess)
31
  save_guesses(guesses)
32
- return compute_statistics(guesses, include_message=True)
33
 
34
  def get_current_results():
35
  with lock:
36
  guesses = load_guesses()
37
- return compute_statistics(guesses, include_message=False)
38
 
39
  def compute_statistics(guesses, include_message):
40
  n = len(guesses)
41
  if n == 0:
42
  return "No guesses have been made yet."
43
-
44
  average = sum(guesses) / n
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  if n >= 2:
47
  # Calculate sample standard deviation
@@ -60,35 +75,24 @@ def compute_statistics(guesses, include_message):
60
  # Calculate confidence interval
61
  ci_lower = average - ME
62
  ci_upper = average + ME
63
- # Prepare output message
64
- message = (
65
- (f"Your guess has been recorded.\n" if include_message else "") +
66
- f"Current average of all {n} guesses: {average:.2f}\n"
67
- f"95% confidence interval: ({ci_lower:.2f}, {ci_upper:.2f})"
68
- )
69
- return message
70
  else:
71
  # Not enough data to compute confidence interval
72
- message = (
73
- (f"Your guess has been recorded.\n" if include_message else "") +
74
- f"Current average of all {n} guesses: {average:.2f}\n"
75
- f"Not enough data to compute confidence interval."
76
- )
77
- return message
78
 
79
  with gr.Blocks() as demo:
80
  gr.Markdown("# Collective Guessing Game")
81
- gr.Markdown("Submit your guess and contribute to the global average!")
82
-
83
  guess_input = gr.Number(label="Enter your guess")
84
  submit_button = gr.Button("Submit Guess")
85
-
86
  with gr.Accordion("View Current Results!", open=False):
87
  output_text = gr.Textbox(label="Results", lines=10)
88
  refresh_button = gr.Button("Refresh Results")
89
-
90
  submit_button.click(fn=add_guess, inputs=guess_input, outputs=output_text)
91
  refresh_button.click(fn=get_current_results, outputs=output_text)
92
  demo.load(fn=get_current_results, outputs=output_text)
93
-
94
- demo.launch()
 
4
  import gradio as gr
5
  import statistics
6
  from scipy import stats
7
+ import numpy as np # Added import for numpy to compute percentiles
8
 
9
  DATA_DIR = './storage'
10
  DATA_FILE = os.path.join(DATA_DIR, 'guesses.json')
 
30
  guesses = load_guesses()
31
  guesses.append(guess)
32
  save_guesses(guesses)
33
+ return compute_statistics(guesses, include_message=True)
34
 
35
  def get_current_results():
36
  with lock:
37
  guesses = load_guesses()
38
+ return compute_statistics(guesses, include_message=False)
39
 
40
  def compute_statistics(guesses, include_message):
41
  n = len(guesses)
42
  if n == 0:
43
  return "No guesses have been made yet."
44
+
45
  average = sum(guesses) / n
46
+ median = statistics.median(guesses)
47
+ # Calculate IQR
48
+ Q1 = np.percentile(guesses, 25)
49
+ Q3 = np.percentile(guesses, 75)
50
+ IQR = Q3 - Q1
51
+
52
+ # Initialize the message
53
+ message = (
54
+ (f"Your guess has been recorded.\n" if include_message else "") +
55
+ f"Current average of all {n} guesses: {average:.2f}\n" +
56
+ f"Median of all guesses: {median:.2f}\n" +
57
+ f"Interquartile Range (IQR): {IQR:.2f}\n" +
58
+ "(The IQR is the range between the 25th percentile and 75th percentile of the data.)\n"
59
+ )
60
 
61
  if n >= 2:
62
  # Calculate sample standard deviation
 
75
  # Calculate confidence interval
76
  ci_lower = average - ME
77
  ci_upper = average + ME
78
+ # Append confidence interval to the message
79
+ message += f"95% confidence interval for the average: ({ci_lower:.2f}, {ci_upper:.2f})"
 
 
 
 
 
80
  else:
81
  # Not enough data to compute confidence interval
82
+ message += "Not enough data to compute confidence interval for the average."
83
+
84
+ return message
 
 
 
85
 
86
  with gr.Blocks() as demo:
87
  gr.Markdown("# Collective Guessing Game")
88
+ gr.Markdown("Submit your guess and contribute to the global statistics!")
 
89
  guess_input = gr.Number(label="Enter your guess")
90
  submit_button = gr.Button("Submit Guess")
 
91
  with gr.Accordion("View Current Results!", open=False):
92
  output_text = gr.Textbox(label="Results", lines=10)
93
  refresh_button = gr.Button("Refresh Results")
 
94
  submit_button.click(fn=add_guess, inputs=guess_input, outputs=output_text)
95
  refresh_button.click(fn=get_current_results, outputs=output_text)
96
  demo.load(fn=get_current_results, outputs=output_text)
97
+
98
+ demo.launch()