Einführung
In diesem Lab lernen wir, wie man den Pearson-Korrelationskoeffizienten in C berechnet. Das Lab umfasst drei Hauptphasen: das Einlesen von gepaarten (x,y)-Daten, die Berechnung der notwendigen Summen und die Verwendung der Formel zur Berechnung des Korrelationskoeffizienten. Wir erstellen ein C-Programm, das es Benutzern ermöglicht, Datenpunkte einzugeben, und das Programm führt dann die Korrelationsanalyse durch und gibt das Ergebnis aus.
Das Lab bietet eine schrittweise Anleitung, beginnend mit der Implementierung der Daten-Eingabe-Funktionalität, gefolgt von der Berechnung der für die Korrelationsformel benötigten Summen und schließlich der Ausgabe des Korrelationskoeffizienten.
Paarige (x,y)-Daten einlesen
In diesem Schritt lernen wir, wie man gepaarte (x,y)-Daten zum Berechnen des Pearson-Korrelationskoeffizienten in C einliest. Wir erstellen ein Programm, das es Benutzern erlaubt, gepaarte numerische Daten einzugeben und diese für weitere Analysen zu speichern.
Erstellen wir zunächst eine C-Quelldatei für unsere Daten-Eingabe-Funktionalität:
cd ~/project
nano correlation_input.c
Fügen Sie nun folgenden Code in die Datei ein:
#include <stdio.h>
#define MAX_POINTS 100
int main() {
double x[MAX_POINTS], y[MAX_POINTS];
int n, i;
printf("Geben Sie die Anzahl der Datenpunkte ein (max %d): ", MAX_POINTS);
scanf("%d", &n);
printf("Geben Sie die x- und y-Koordinaten ein:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d (x y): ", i + 1);
scanf("%lf %lf", &x[i], &y[i]);
}
printf("\nEingetragene Datenpunkte:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d: (%.2f, %.2f)\n", i + 1, x[i], y[i]);
}
return 0;
}
Kompilieren Sie das Programm:
gcc -o correlation_input correlation_input.c
Führen Sie das Programm aus und geben Sie einige Beispieldaten ein:
./correlation_input
Beispielausgabe:
Geben Sie die Anzahl der Datenpunkte ein (max 100): 5
Geben Sie die x- und y-Koordinaten ein:
Punkt 1 (x y): 1 2
Punkt 2 (x y): 2 4
Punkt 3 (x y): 3 5
Punkt 4 (x y): 4 4
Punkt 5 (x y): 5 5
Eingetragene Datenpunkte:
Punkt 1: (1.00, 2.00)
Punkt 2: (2.00, 4.00)
Punkt 3: (3.00, 5.00)
Punkt 4: (4.00, 4.00)
Punkt 5: (5.00, 5.00)
Zerlegung des Codes:
- Wir definieren eine maximale Anzahl von Datenpunkten (MAX_POINTS), um einen Speicherüberlauf zu vermeiden.
- Das Programm fordert den Benutzer auf, die Anzahl der Datenpunkte einzugeben.
- Anschließend kann der Benutzer die x- und y-Koordinaten für jeden Punkt eingeben.
- Schließlich gibt es die eingegebenen Datenpunkte aus, um die Eingabe zu bestätigen.
Summen berechnen und Formel für die Korrelation verwenden
In diesem Schritt erweitern wir unser vorheriges Programm, um die notwendigen Summen zur Berechnung des Pearson-Korrelationskoeffizienten zu berechnen. Wir modifizieren die Datei correlation_input.c, um die Berechnungen für die Korrelationsformel einzubeziehen.
Öffnen Sie die vorherige Datei:
cd ~/project
nano correlation_input.c
Aktualisieren Sie den Code mit folgender Implementierung:
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 100
double calculatePearsonCorrelation(double x[], double y[], int n) {
double sum_x = 0, sum_y = 0, sum_xy = 0;
double sum_x_squared = 0, sum_y_squared = 0;
// Notwendige Summen berechnen
for (int i = 0; i < n; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += x[i] * y[i];
sum_x_squared += x[i] * x[i];
sum_y_squared += y[i] * y[i];
}
// Formel für den Pearson-Korrelationskoeffizienten
double numerator = n * sum_xy - sum_x * sum_y;
double denominator = sqrt((n * sum_x_squared - sum_x * sum_x) *
(n * sum_y_squared - sum_y * sum_y));
return numerator / denominator;
}
int main() {
double x[MAX_POINTS], y[MAX_POINTS];
int n, i;
printf("Geben Sie die Anzahl der Datenpunkte ein (max %d): ", MAX_POINTS);
scanf("%d", &n);
printf("Geben Sie die x- und y-Koordinaten ein:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d (x y): ", i + 1);
scanf("%lf %lf", &x[i], &y[i]);
}
double correlation = calculatePearsonCorrelation(x, y, n);
printf("\nEingetragene Datenpunkte:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d: (%.2f, %.2f)\n", i + 1, x[i], y[i]);
}
printf("\nPearson-Korrelationskoeffizient: %.4f\n", correlation);
return 0;
}
Kompilieren Sie das Programm mit der Mathematikbibliothek:
gcc -o correlation_input correlation_input.c -lm
Führen Sie das Programm mit Beispieldaten aus:
./correlation_input
Beispielausgabe:
Geben Sie die Anzahl der Datenpunkte ein (max 100): 5
Geben Sie die x- und y-Koordinaten ein:
Punkt 1 (x y): 1 2
Punkt 2 (x y): 2 4
Punkt 3 (x y): 3 5
Punkt 4 (x y): 4 4
Punkt 5 (x y): 5 5
Eingetragene Datenpunkte:
Punkt 1: (1.00, 2.00)
Punkt 2: (2.00, 4.00)
Punkt 3: (3.00, 5.00)
Punkt 4: (4.00, 4.00)
Punkt 5: (5.00, 5.00)
Pearson-Korrelationskoeffizient: 0.8528
Wichtige Punkte zur Berechnung der Pearson-Korrelation:
- Wir berechnen die notwendigen Summen: x, y, xy, x², y²
- Anwendung der Pearson-Korrelationskoeffizienten-Formel
- Verwendung von sqrt() aus math.h für die Berechnung
- Rückgabe des Korrelationskoeffizienten zwischen -1 und 1
Ausgabe des Korrelationskoeffizienten
In diesem letzten Schritt erweitern wir unser Programm, um eine umfassende Interpretation des Pearson-Korrelationskoeffizienten zu liefern und eine benutzerfreundlichere Ausgabe zu erstellen.
Öffnen Sie die vorherige Datei:
cd ~/project
nano correlation_input.c
Aktualisieren Sie den Code mit folgender Implementierung:
#include <stdio.h>
#include <math.h>
#define MAX_POINTS 100
double calculatePearsonCorrelation(double x[], double y[], int n) {
double sum_x = 0, sum_y = 0, sum_xy = 0;
double sum_x_squared = 0, sum_y_squared = 0;
for (int i = 0; i < n; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += x[i] * y[i];
sum_x_squared += x[i] * x[i];
sum_y_squared += y[i] * y[i];
}
double numerator = n * sum_xy - sum_x * sum_y;
double denominator = sqrt((n * sum_x_squared - sum_x * sum_x) *
(n * sum_y_squared - sum_y * sum_y));
return numerator / denominator;
}
void interpretCorrelation(double correlation) {
printf("\nInterpretation des Korrelationskoeffizienten:\n");
printf("Korrelationswert: %.4f\n", correlation);
if (correlation > 0.8) {
printf("Starke positive Korrelation\n");
} else if (correlation > 0.5) {
printf("Moderate positive Korrelation\n");
} else if (correlation > 0.3) {
printf("Schwache positive Korrelation\n");
} else if (correlation > -0.3) {
printf("Keine lineare Korrelation\n");
} else if (correlation > -0.5) {
printf("Schwache negative Korrelation\n");
} else if (correlation > -0.8) {
printf("Moderate negative Korrelation\n");
} else {
printf("Starke negative Korrelation\n");
}
}
int main() {
double x[MAX_POINTS], y[MAX_POINTS];
int n, i;
printf("Pearson Korrelationskoeffizienten-Rechner\n");
printf("----------------------------------------\n");
printf("Geben Sie die Anzahl der Datenpunkte ein (max %d): ", MAX_POINTS);
scanf("%d", &n);
printf("Geben Sie die x- und y-Koordinaten ein:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d (x y): ", i + 1);
scanf("%lf %lf", &x[i], &y[i]);
}
double correlation = calculatePearsonCorrelation(x, y, n);
printf("\nEingetragene Datenpunkte:\n");
for (i = 0; i < n; i++) {
printf("Punkt %d: (%.2f, %.2f)\n", i + 1, x[i], y[i]);
}
interpretCorrelation(correlation);
return 0;
}
Kompilieren Sie das Programm:
gcc -o correlation_calculator correlation_input.c -lm
Führen Sie das Programm mit Beispieldaten aus:
./correlation_calculator
Beispielausgabe:
Pearson Korrelationskoeffizienten-Rechner
----------------------------------------
Geben Sie die Anzahl der Datenpunkte ein (max 100): 5
Geben Sie die x- und y-Koordinaten ein:
Punkt 1 (x y): 1 2
Punkt 2 (x y): 2 4
Punkt 3 (x y): 3 5
Punkt 4 (x y): 4 4
Punkt 5 (x y): 5 5
Eingetragene Datenpunkte:
Punkt 1: (1.00, 2.00)
Punkt 2: (2.00, 4.00)
Punkt 3: (3.00, 5.00)
Punkt 4: (4.00, 4.00)
Punkt 5: (5.00, 5.00)
Interpretation des Korrelationskoeffizienten:
Korrelationswert: 0.8528
Starke positive Korrelation
Wichtige Verbesserungen:
- Hinzufügen der Funktion
interpretCorrelation() - Detaillierte Erklärung der Korrelationsstärke
- Kategorisierung der Korrelation in verschiedene Stufen
- Verbesserte Benutzeroberfläche mit Titel und klarer Ausgabe
Zusammenfassung
In diesem Labor haben wir gelernt, wie man gepaarte (x, y)-Daten zum Berechnen des Pearson-Korrelationskoeffizienten in C liest. Wir haben ein Programm erstellt, das es Benutzern ermöglicht, gepaarte numerische Daten einzugeben und diese für weitere Analysen zu speichern. Wir haben das Programm auch erweitert, um die notwendigen Summen zur Berechnung des Pearson-Korrelationskoeffizienten mithilfe der Formel zu berechnen.
Die wichtigsten Schritte in diesem Labor umfassen das Lesen von gepaarten (x, y)-Daten, die Berechnung der für die Korrelationsformel erforderlichen Summen und die Ausgabe des endgültigen Korrelationskoeffizienten. Durch die Durchführung dieser Schritte können Sie die Pearson-Korrelationsberechnung in Ihren eigenen C-Programmen implementieren.



