Angular- Métodos -- funciones locales

 Métodos: funciones locales

Los métodos son funciones que se definen dentro de una clase o un objeto. Sirven para realizar acciones específicas.

Ejemplo: Este código crea una clase Estadistica con métodos para calcular varias funciones estadísticas comunes en la investigación científica. Luego, se utiliza esta clase en un componente de Angular para calcular y mostrar los resultados de estas funciones.

1- Definición de la clase Estadistica

// src/app/estadistica.ts
export class Estadistica {
  constructor(private datos: number[]) {}

  // Método para calcular la media
  calcularMedia(): number {
    const suma = this.datos.reduce((a, b) => a + b, 0);
    return suma / this.datos.length;
  }

  // Método para calcular la mediana
  calcularMediana(): number {
    const datosOrdenados = [...this.datos].sort((a, b) => a - b);
    const mitad = Math.floor(datosOrdenados.length / 2);

    if (datosOrdenados.length % 2 === 0) {
      return (datosOrdenados[mitad - 1] + datosOrdenados[mitad]) / 2;
    } else {
      return datosOrdenados[mitad];
    }
  }

  // Método para calcular la moda
  calcularModa(): number[] {
    const frecuencia: { [key: number]: number } = {};
    this.datos.forEach(num => frecuencia[num] = (frecuencia[num] || 0) + 1);

    const maxFrecuencia = Math.max(...Object.values(frecuencia));
    return Object.keys(frecuencia).filter(key => frecuencia[+key] === maxFrecuencia).map(Number);
  }

  // Método para calcular el rango
  calcularRango(): number {
    return Math.max(...this.datos) - Math.min(...this.datos);
  }

  // Método para calcular la desviación estándar
  calcularDesviacionEstandar(): number {
    const media = this.calcularMedia();
    const sumaCuadrados = this.datos.reduce((a, b) => a + Math.pow(b - media, 2), 0);
    return Math.sqrt(sumaCuadrados / this.datos.length);
  }

  // Método para obtener el valor mínimo
  obtenerMinimo(): number {
    return Math.min(...this.datos);
  }

  // Método para obtener el valor máximo
  obtenerMaximo(): number {
    return Math.max(...this.datos);
  }

  // Método para calcular el Chi cuadrado (simplificado)
  calcularChiCuadrado(observados: number[], esperados: number[]): number {
    return observados.reduce((chi, obs, i) => chi + Math.pow(obs - esperados[i], 2) / esperados[i], 0);
  }

  // Método para calcular el riesgo relativo (simplificado)
  calcularRiesgoRelativo(a: number, b: number, c: number, d: number): number {
    return (a / (a + b)) / (c / (c + d));
  }

  // Método para calcular el Odd ratio (simplificado)
  calcularOddRatio(a: number, b: number, c: number, d: number): number {
    return (a * d) / (b * c);
  }

  // Método para calcular el intervalo de confianza (simplificado)
  calcularIntervaloConfianza(media: number, desviacionEstandar: number, n: number, z: number): [number, number] {
    const margenError = z * (desviacionEstandar / Math.sqrt(n));
    return [media - margenError, media + margenError];
  }

  // Método para calcular el coeficiente phi (simplificado)
  calcularCoeficientePhi(a: number, b: number, c: number, d: number): number {
    return (a * d - b * c) / Math.sqrt((a + b) * (c + d) * (a + c) * (b + d));
  }
}

 

2- Uso de la clase Estadistica en un componente:

// src/app/app.component.ts
import { Component } from '@angular/core';
// Agregando interface de...
import { Estadistica } from './estadistica';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [],  
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class Face1Component {

    datos: number[] = [1, 2, 2, 3, 4, 5, 5, 5, 6, 7];
    estadistica = new Estadistica(this.datos);

    media = this.estadistica.calcularMedia();
    mediana = this.estadistica.calcularMediana();
    moda = this.estadistica.calcularModa();
    rango = this.estadistica.calcularRango();
    desviacionEstandar = this.estadistica.calcularDesviacionEstandar();
    minimo = this.estadistica.obtenerMinimo();
    maximo = this.estadistica.obtenerMaximo();
    chiCuadrado = this.estadistica.calcularChiCuadrado([10, 20], [15, 15]);
    riesgoRelativo = this.estadistica.calcularRiesgoRelativo(10, 20, 30, 40);
    oddRatio = this.estadistica.calcularOddRatio(10, 20, 30, 40);
    intervaloConfianza = this.estadistica.calcularIntervaloConfianza(this.media, this.desviacionEstandar, this.datos.length, 1.96);
    coeficientePhi = this.estadistica.calcularCoeficientePhi(10, 20, 30, 40);
  }

 

3- Template para mostrar los resultados:

<!-- src/app/app.component.html -->
<div>
  <h1>Estadísticas de los Datos</h1>
  <p><b>Lista de Datos: {{datos}}</b> </p>
  <p>Media: {{ media }}</p>
  <p>Mediana: {{ mediana }}</p>
  <p>Moda: {{ moda }}</p>
  <p>Rango: {{ rango }}</p>
  <p>Desviación Estándar: {{ desviacionEstandar }}</p>
  <p>Mínimo: {{ minimo }}</p>
  <p>Máximo: {{ maximo }}</p>
  <p>Chi Cuadrado: {{ chiCuadrado }}</p>
  <p>Riesgo Relativo: {{ riesgoRelativo }}</p>
  <p>Odd Ratio: {{ oddRatio }}</p>
  <p>Intervalo de Confianza: {{ intervaloConfianza[0] }} - {{ intervaloConfianza[1] }}</p>
  <p>Coeficiente Phi: {{ coeficientePhi }}</p>
</div>

 

 .....


Aquí va el código 

 


Aquí va el código 

 

.....