| import gradio as gr | |
| import numpy as np | |
| def calculate_correlation(x_values, y_values): | |
| try: | |
| x_values = list(map(float, x_values.split('\n'))) | |
| y_values = list(map(float, y_values.split('\n'))) | |
| except ValueError: | |
| return "Error: All values must be numbers." | |
| if len(x_values) != len(y_values): | |
| return "Error: The number of X and Y values must be the same." | |
| n = len(x_values) | |
| sum_x = sum(x_values) | |
| sum_y = sum(y_values) | |
| sum_xy = sum(x * y for x, y in zip(x_values, y_values)) | |
| sum_x_squared = sum(x * x for x in x_values) | |
| sum_y_squared = sum(y * y for y in y_values) | |
| numerator = n * sum_xy - sum_x * sum_y | |
| denominator = np.sqrt((n * sum_x_squared - sum_x ** 2) * (n * sum_y_squared - sum_y ** 2)) | |
| if denominator == 0: | |
| return "Error: Cannot calculate correlation coefficient. Check your data." | |
| correlation = numerator / denominator | |
| return f"The Karl Pearson correlation coefficient is: {correlation:.10f}" | |
| iface = gr.Interface( | |
| fn=calculate_correlation, | |
| inputs=[ | |
| gr.components.Textbox(lines=10, placeholder="Enter X values (one per line)"), | |
| gr.components.Textbox(lines=10, placeholder="Enter Y values (one per line)") | |
| ], | |
| outputs="text", | |
| title="Karl Pearson Correlation Coefficient Calculator", | |
| description="Enter your X and Y values (one per line) to calculate the Karl Pearson correlation coefficient.", | |
| theme="compact" | |
| ) | |
| iface.launch() | |