Cómo r calcula valores infinitos, no definidos, y que faltan
Por suerte, R puede hacer frente a anomalías de los datos que confunden algunas otras plataformas estadísticos. Por ejemplo, en algunos casos, usted no tiene valores reales para calcular con. En la mayoría de los conjuntos de datos de la vida real, de hecho, por lo menos unos pocos valores que faltan. Además, algunos cálculos tienen como resultado el infinito (como la división por cero) o no pueden llevarse a cabo en absoluto (como tomar el logaritmo de un valor negativo).
Conteúdo
¿Cómo R define el infinito
Para comenzar a explorar el infinito en R, ver lo que sucede cuando se intenta dividir por cero:
> 2/0 [1] Inf
R correctamente le indica el resultado es Inf, o infinito. Infinito negativo se muestra como -Inf. Puedes usar Inf al igual que usted utiliza un número real en los cálculos:
> 4 - Inf [1] -Inf
Para comprobar si un valor es finito, utilice las funciones is.finite () y is.infinite (). Las primeras declaraciones de función CIERTO si el número es finito los segundos se regresa CIERTO si el número es infinito.
R considera todo lo más grande que el número más grande que un ordenador puede sostener que ser infinito - en la mayoría de las máquinas, eso es aproximadamente 1.8 x 10308. Esta definición del infinito puede conducir a resultados inesperados, como se muestra en el siguiente ejemplo:
> Is.finite (10 ^ (305: 310)) [1] TRUE TRUE TRUE TRUE FALSE FALSE
¿Qué hace esta línea de código significa ahora? Vea si usted entiende la anidación y vectorización en este ejemplo. Si se rompe la línea a partir de los paréntesis internos, se hace comprensible:
Ya que sabes 305: 310 le da un vector, que contiene los enteros 305-310.
Todos los operadores están vectorizados, por lo 10 ^ (305: 310) le da un vector con los resultados de 10 a la potencia de 305, 306, 307, 308, 309, y 310.
Ese vector se da como argumento para is.finite (). Esa función le informa de que los dos últimos resultados - 10 ^ 308 y 10 ^ 309 - son infinitos para R.
Cómo ofertas de I con resultados indefinidos
Su profesor de matemáticas, probablemente, explicó que si se divide un número real por el infinito, se obtiene cero. Pero lo que si se divide el infinito por infinito?
> Inf / Inf [1] NaN
Bueno, R indica que el resultado es NaN. Ese resultado significa simplemente No es un número. Esta es la manera en que le dice que el resultado de ese cálculo no se define de R.
Lo curioso es que la I considera realidad NaN de ser numérico, para que pueda utilizar NaN en los cálculos. El resultado de estos cálculos es siempre NaN, sin embargo, como se puede ver aquí:
> NaN + 4 [1] NaN
Puede probar si un cálculo resulta en NaN mediante el uso de la is.nan () función. Tenga en cuenta que tanto is.finite () y is.infinite () regreso FALSO cuando se está probando en un NaN valor.
¿Cómo R hace frente a valores perdidos
Uno de los problemas más comunes en las estadísticas es conjuntos de datos incompletos. Para hacer frente a los valores perdidos, R utiliza la palabra clave reservada N / A, que significa No disponible. Puedes usar N / A como un valor válido, por lo que puede asignar como un valor, así:
> X lt; - NA
Hay que tener en cuenta, sin embargo, que los cálculos con un valor de N / A también, en general volver N / A como resultado:
> X + 4 [1] NA> log (x) [1] NA
Si desea probar si un valor es N / A, puede utilizar la is.na () función, como sigue:
> Is.na (x) [1] TRUE
Tenga en cuenta que la is.na () función también devuelve CIERTO si el valor es NaN. Las funciones is.finite (), is.infinite (), y is.nan () regreso FALSO para N / A los valores.
Función | Inf | -Inf | NaN | N / A |
---|---|---|---|---|
is.finite () | FALSO | FALSO | FALSO | FALSO |
is.infinite () | CIERTO | CIERTO | FALSO | FALSO |
is.nan () | FALSO | FALSO | CIERTO | FALSO |
is.na () | FALSO | FALSO | CIERTO | CIERTO |