Calcular la Desviación Estándar en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio (lab), aprenderás cómo calcular la desviación estándar de un conjunto de datos en el lenguaje de programación C. El laboratorio cubre tres pasos principales: calcular la media del conjunto de datos, sumar los cuadrados de las desviaciones con respecto a la media para calcular la varianza y luego tomar la raíz cuadrada para obtener la desviación estándar. Al final de este laboratorio, tendrás una sólida comprensión de estos conceptos estadísticos fundamentales y de cómo implementarlos en C.

El laboratorio proporciona instrucciones paso a paso y código de ejemplo para guiarte a través del proceso. Comenzarás escribiendo un programa en C para calcular la media de un conjunto de datos dado, luego extenderás el programa para calcular la varianza sumando los cuadrados de las desviaciones con respecto a la media. Finalmente, tomarás la raíz cuadrada de la varianza para determinar la desviación estándar y mostrar el resultado.

Calcular la Media del Conjunto de Datos

En este paso, aprenderás cómo calcular la media de un conjunto de datos en el lenguaje de programación C. La media es una medida estadística fundamental que representa el valor promedio de un conjunto de números.

Primero, creemos un programa en C para calcular la media de un conjunto de datos. Abre un nuevo archivo usando nano:

cd ~/project
nano mean_calculation.c

Ahora, ingresa el siguiente código:

#include <stdio.h>

#define MAX_SIZE 100

float calculateMean(int arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum / size;
}

int main() {
    int dataset[MAX_SIZE];
    int size;

    printf("Enter the number of elements (max %d): ", MAX_SIZE);
    scanf("%d", &size);

    printf("Enter %d integers:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &dataset[i]);
    }

    float mean = calculateMean(dataset, size);
    printf("Mean of the dataset: %.2f\n", mean);

    return 0;
}

Compila el programa:

gcc mean_calculation.c -o mean_calculation

Ejecuta el programa e ingresa algunos datos de muestra:

./mean_calculation

Ejemplo de salida:

Enter the number of elements (max 100): 5
Enter 5 integers:
10
20
30
40
50
Mean of the dataset: 30.00

Analicemos el código:

  1. Definimos una función calculateMean que toma un arreglo y su tamaño como parámetros.
  2. La función calcula la suma de todos los elementos del arreglo.
  3. La media se calcula dividiendo la suma entre el número total de elementos.
  4. En la función main, solicitamos al usuario que ingrese el conjunto de datos.
  5. Llamamos a calculateMean e imprimimos el resultado con dos decimales.

Sumar los Cuadrados de las Desviaciones y Calcular la Varianza

En este paso, extenderás el programa anterior para calcular la varianza sumando los cuadrados de las desviaciones con respecto a la media. La varianza mide qué tan dispersos están los números en un conjunto de datos.

Abre el archivo anterior para modificarlo:

cd ~/project
nano mean_calculation.c

Actualiza el programa con el cálculo de la varianza:

#include <stdio.h>
#include <math.h>

#define MAX_SIZE 100

float calculateMean(int arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum / size;
}

float calculateVariance(int arr[], int size, float mean) {
    float sumSquaredDeviations = 0;
    for (int i = 0; i < size; i++) {
        float deviation = arr[i] - mean;
        sumSquaredDeviations += deviation * deviation;
    }
    return sumSquaredDeviations / size;
}

int main() {
    int dataset[MAX_SIZE];
    int size;

    printf("Enter the number of elements (max %d): ", MAX_SIZE);
    scanf("%d", &size);

    printf("Enter %d integers:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &dataset[i]);
    }

    float mean = calculateMean(dataset, size);
    float variance = calculateVariance(dataset, size, mean);

    printf("Mean of the dataset: %.2f\n", mean);
    printf("Variance of the dataset: %.2f\n", variance);

    return 0;
}

Compila el programa actualizado:

gcc mean_calculation.c -o mean_calculation -lm

Ejecuta el programa e ingresa datos de muestra:

./mean_calculation

Ejemplo de salida:

Enter the number of elements (max 100): 5
Enter 5 integers:
10
20
30
40
50
Mean of the dataset: 30.00
Variance of the dataset: 200.00

Puntos clave en el código:

  1. Agregamos una nueva función calculateVariance que toma el arreglo, el tamaño y la media.
  2. La función calcula la desviación de cada elemento con respecto a la media.
  3. Eleva al cuadrado estas desviaciones y las suma.
  4. La varianza se calcula dividiendo la suma de los cuadrados de las desviaciones entre el número de elementos.
  5. Usamos la bandera -lm al compilar para enlazar la biblioteca matemática.

Tomar la Raíz Cuadrada para Obtener la Desviación Estándar e Imprimir

En este último paso, completarás el cálculo de la desviación estándar tomando la raíz cuadrada de la varianza. La desviación estándar es una medida clave de la dispersión de los datos en el análisis estadístico.

Abre el archivo anterior para modificarlo:

cd ~/project
nano mean_calculation.c

Actualiza el programa con el cálculo de la desviación estándar:

#include <stdio.h>
#include <math.h>

#define MAX_SIZE 100

float calculateMean(int arr[], int size) {
    float sum = 0;
    for (int i = 0; i < size; i++) {
        sum += arr[i];
    }
    return sum / size;
}

float calculateVariance(int arr[], int size, float mean) {
    float sumSquaredDeviations = 0;
    for (int i = 0; i < size; i++) {
        float deviation = arr[i] - mean;
        sumSquaredDeviations += deviation * deviation;
    }
    return sumSquaredDeviations / size;
}

float calculateStandardDeviation(float variance) {
    return sqrt(variance);
}

int main() {
    int dataset[MAX_SIZE];
    int size;

    printf("Enter the number of elements (max %d): ", MAX_SIZE);
    scanf("%d", &size);

    printf("Enter %d integers:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &dataset[i]);
    }

    float mean = calculateMean(dataset, size);
    float variance = calculateVariance(dataset, size, mean);
    float standardDeviation = calculateStandardDeviation(variance);

    printf("Dataset Statistics:\n");
    printf("Mean: %.2f\n", mean);
    printf("Variance: %.2f\n", variance);
    printf("Standard Deviation: %.2f\n", standardDeviation);

    return 0;
}

Compila el programa actualizado:

gcc mean_calculation.c -o mean_calculation -lm

Ejecuta el programa e ingresa datos de muestra:

./mean_calculation

Ejemplo de salida:

Enter the number of elements (max 100): 5
Enter 5 integers:
10
20
30
40
50
Dataset Statistics:
Mean: 30.00
Variance: 200.00
Standard Deviation: 14.14

Puntos clave en el código:

  1. Agregamos una nueva función calculateStandardDeviation.
  2. Esta función utiliza sqrt() de la biblioteca matemática para calcular la desviación estándar.
  3. La desviación estándar es la raíz cuadrada de la varianza.
  4. La función principal ahora imprime las tres medidas estadísticas.
  5. Continuamos usando la bandera -lm para enlazar la biblioteca matemática.

Resumen

En este laboratorio (lab), primero aprendiste cómo calcular la media de un conjunto de datos en el lenguaje de programación C. La media es una medida estadística fundamental que representa el valor promedio de un conjunto de números. Luego, extendiste el programa para calcular la varianza sumando los cuadrados de las desviaciones con respecto a la media. La varianza mide qué tan dispersos están los números en un conjunto de datos. Finalmente, aprendiste cómo tomar la raíz cuadrada de la varianza para calcular la desviación estándar y mostrar el resultado.