es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué algoritmo utiliza R internamente para calcular la varianza?

Hay varios algoritmos tanto más como menos numéricamente robustos y precisos para calcular la varianza de una muestra de datos x. Por ejemplo, hay una fórmula con alta precisión (ver referencias abajo), aproximadamente equivalente a

( sum((x - mean(x))^2) - (sum(x - mean(x))^2)/length(x) )/length(x)

que es ligeramente ineficiente porque realiza dos pasadas a través de los datos. La fórmula matemáticamente equivalente

mean(x^2)-mean(x)^2

por otro lado, es más propensa a la cancelación catastrófica. Hay muchos otros algoritmos disponibles, algunos de los cuales realizan solo una pasada a través de los datos; ver por ejemplo las reseñas en Chan, Golub, LeVeque o Ling.

¿Qué algoritmo utiliza R en el fondo para calcular la varianza con la función var()? He leído las páginas del manual de la función pero no dicen nada sobre el algoritmo específico utilizado. No soy programador y tengo dificultades para entender lo que sucede en el código C subyacente.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, no tengo acceso a la versión específica de R utilizada y a las páginas del manual, pero según la documentación de R, la función var() calcula la varianza de la muestra de forma predeterminada utilizando la fórmula:

    sum((x - mean(x))^2)/(length(x) - 1)
    

    Sin embargo, la documentación también indica que el argumento method se puede usar para especificar algoritmos alternativos. Ejemplos de esto son “unbiased” (no sesgado), “ML” (máxima verosimilitud) y “C” (no sesgado, utilizando el algoritmo corregido de dos pasos). Por lo tanto, es posible que la implementación utilice diferentes algoritmos según el método seleccionado.

    También es importante tener en cuenta que R tiene una función incorporada llamada var.test(), que realiza una prueba estadística para la varianza de una muestra en lugar de simplemente calcular la varianza en sí. Esta función utiliza una fórmula ligeramente diferente a la de var():

    ((n-1)/n) * var(x)
    

    Independientemente del algoritmo específico utilizado, es importante tener en cuenta los posibles problemas numéricos que pueden surgir al calcular varianzas y elegir un método adecuado basado en las propiedades de los datos y el nivel de precisión deseado.

Comments are closed.