Como r calcula valores infinitos, indefinidos, e em falta

Felizmente, R pode lidar com anomalias de dados que confundem algumas outras plataformas estatísticos. Por exemplo, em alguns casos, você não tem valores reais para calcular com. Na maioria dos conjuntos de dados da vida real, de fato, pelo menos alguns valores estão em falta. Além disso, alguns cálculos têm como resultado o infinito (tais como a divisão por zero) ou não pode ser levada a cabo em todos os (tal como o logaritmo de um valor negativo).

Como R define o infinito

Para começar a explorar o infinito em R, ver o que acontece quando você tenta dividir por zero:

gt; 2/0 [1] Inf

R corretamente informa o resultado é Inf, ou infinito. infinito negativo é mostrado como -Inf. Você pode usar Inf assim como você usar um número real nos cálculos:

gt; 4 - Inf [1] -Inf

Para verificar se um valor é finito, use as funções is.finite () e is.infinite (). A primeira função retorna VERDADE Se o número é finito o segundo um retornos VERDADE se o número é infinito.

R considera tudo maior do que o maior número um computador pode conter a ser infinito - na maioria das máquinas, que é cerca de 1,8 × 10308. Esta definição do infinito pode levar a resultados inesperados, como mostrado no exemplo a seguir:

gt; is.finite (10 ^ (305: 310)) [1] verdadeiro verdadeiro verdadeiro verdadeiro FALSO FALSO

O que esta linha de código significa agora? Veja se você entender a nidificação e vetorização neste exemplo. Se você quebrar a linha a partir dos parênteses internos, torna-se compreensível:

  • Você já sabe que 305: 310 dá-lhe um vector, contendo os inteiros 305-310.

  • Todos os operadores são vetorizado, então 10 ^ (305: 310) dá-lhe um vector com os resultados da 10 à potência de 305, 306, 307, 308, 309, e 310.

  • Esse vetor é dado como um argumento para is.finite (). Essa função diz-lhe que os dois últimos resultados - 10 ^ 308 e 10 ^ 309 - são infinitas para R.

Como R lida com resultados indefinidos



Seu professor de matemática, provavelmente, explicou que se você dividir qualquer número real pelo infinito, você obtém zero. Mas o que se você dividir o infinito por infinito?

gt; Inf / inf [1] NaN

Bem, R lhe diz que o resultado é NaN. Esse resultado significa simplesmente Não é um número. Esta é a maneira de dizer-lhe que o resultado desse cálculo não é definido de R.

Video: Como calcular Limite com x tendendo ao Infinito

O engraçado é que R realmente considera NaN para ser numérico, assim você pode usar NaN nos cálculos. O resultado desses cálculos é sempre NaN, porém, como você pode ver aqui:

gt; NaN + 4 [1] NaN

Você pode testar se um cálculo resulta em NaN usando o is.nan () função. Note-se que tanto is.finite () e is.infinite () Retorna FALSO quando você está testando em um NaN valor.

Video: LÍMITES AL INFINITO (Ejercicios 1 - 4)

Como R lida com valores ausentes

Um dos problemas mais comuns em estatística é conjuntos de dados incompletos. Para lidar com valores ausentes, R usa a palavra-chave reservada N / D, que significa Não disponível. Você pode usar N / D como um valor válido, para que possa atribuí-la como um valor, bem como:

gt; X lt; - NA

Você tem que ter em conta, no entanto, que os cálculos com um valor de N / D Também geralmente retornam N / D como um resultado:

gt; x + 4 [1] NAGT; log (x) [1] NA

Se você quiser testar se um valor é N / D, você pode usar o is.na () função, como segue:

gt; is.na (X) [1] VERDADEIRO

Note-se que o is.na () função também retorna VERDADE se o valor for NaN. as funções is.finite (), is.infinite (), e is.nan () Retorna FALSO para N / D valores.

FunçãoInf-InfNaNN / D
is.finite ()FALSOFALSOFALSOFALSO
is.infinite ()VERDADEVERDADEFALSOFALSO
is.nan ()FALSOFALSOVERDADEFALSO
is.na ()FALSOFALSOVERDADEVERDADE

Publicações relacionadas