Saltar al contenido principal

# 7.3: Algunas funciones y operaciones matemáticas más

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

En la Sección 7.2 discutí las ideas detrás de las transformaciones variables, y demostré que muchas de las transformaciones que quizás quieras aplicar a tus datos se basan en funciones y operaciones matemáticas bastante simples, del tipo que discutimos en el Capítulo 3. En esta sección quiero volver a esa discusión, y mencionar varias otras funciones matemáticas y operaciones aritméticas que no me molesté en mencionar al presentarte R, pero que en realidad son bastante útiles para muchos análisis de datos del mundo real. El cuadro 7.1 da una breve descripción de las diversas funciones matemáticas de las que quiero hablar (y algunas de las que ya he hablado). Obviamente esto ni siquiera se acerca a catalogar el abanico de posibilidades disponibles en R, pero sí cubre una gama muy amplia de funciones que se utilizan en el análisis de datos del día a día.

Cuadro 7.1: Algunas de las funciones matemáticas disponibles en R.

matemática.función R.function ejemplo.input responder
raíz cuadrada sqrt () sqrt (25) 5
valor absoluto abs () abs (-23) 23
logaritmo (base 10) log10 () log10 (1000) 3
logaritmo (base e) registro () registro (1000) 6.908
exponenciación exp () exp (6.908) 1000.245
redondeo al más cercano redondo () redondo (1.32) 1
redondeo hacia abajo piso () piso (1.32) 1
redondeo techo () techo (1.32) 2

## Redondeo de un número

Una transformación muy simple que surge sorprendentemente a menudo es la necesidad de redondear un número al número entero más cercano, o a un cierto número de dígitos significativos. Para empezar, supongamos que queremos redondear a un número entero. Para ello, hay tres funciones útiles en R que quieres conocer: round (), floor () y ceiling (). La función round () simplemente redondea al número entero más cercano. Entonces, si redondea el número 4.3, “redondea” a 4, así:

round( x = 4.3 )
## [1] 4

En contraste, si queremos redondear el número 4.7, redondearíamos hacia arriba a 5. En la vida cotidiana, cuando alguien habla de “redondeo”, suele significar “redondo al más cercano”, por lo que esta es la función que usamos la mayor parte del tiempo. Sin embargo a veces tienes razones para querer redondear siempre hacia arriba o siempre redondear hacia abajo. Si quieres redondear siempre hacia abajo, usa la función floor () en su lugar; y si quieres forzar R a redondear hacia arriba, entonces usa ceiling (). Esa es la única diferencia entre las tres funciones. ¿Y si quieres redondear a un cierto número de dígitos? Supongamos que desea redondear a un número fijo de decimales, digamos 2 decimales. Si es así, lo que hay que hacer es especificar el argumento de dígitos a la función round (). Eso es bastante sencillo:

round( x = 0.0123, digits = 2 )
## [1] 0.01

La única sutileza que debes tener en cuenta es que a veces lo que quieres hacer es redondear a 2 dígitos significativos y no a dos decimales. La diferencia es que, al determinar el número de dígitos significativos, los ceros no cuentan. Para ver esto, apliquemos la función signif () en lugar de la función round ():

signif( x = 0.0123, digits = 2 )
## [1] 0.012

En esta ocasión, obtenemos una respuesta de 0.012 porque los ceros no cuentan como dígitos significativos. Muy a menudo las revistas científicas te pedirán reportar números a dos o tres dígitos significativos, por lo que es útil recordar la distinción.

## Módulo y división entera

Tabla 7.2: Dos operaciones aritméticas más que a veces son útiles

operación operador ejemplo.input responder
división entera %/% 42 %/% 10 4
módulo %% 42%% 10 2

Ya que estamos en el tema de cálculos simples, hay otras dos operaciones aritméticas que debo mencionar, ya que pueden ser útiles a la hora de trabajar con datos reales. Estas operaciones son calcular un módulo y hacer división entera. No aparecen en ningún otro lugar de este libro, pero vale la pena conocerlos. Primero, consideremos la división entera. Supongamos que tengo 42 dólares en mi billetera, y quiero comprar unos sándwiches, que se venden por $10 cada uno. ¿Cuántos sándwiches puedo permitirme comprar 107? La respuesta es por supuesto 4. Tenga en cuenta que no es 4.2, ya que ninguna tienda me va a vender una quinta parte de un sándwich. Eso es división entera. En R realizamos la división entera usando el operador %/%: 42 %/% 10 ## [1] 4 Bien, ya es bastante fácil. ¿Qué pasa con el módulo? Básicamente, un módulo es el resto después de la división entera, y se calcula usando el operador%%. Por el bien de la discusión, supongamos que compro cuatro sándwiches sobrevalorados de$10. Si empecé con 42 dólares, ¿cuánto dinero me queda? La respuesta, como nos dice tanto R como el sentido común, es de \$2:

42 %% 10

## [1] 2

Entonces eso también es bastante fácil. Hay, sin embargo, una sutileza que necesito mencionar, y esto se relaciona con cómo se manejan los números negativos. En primer lugar, ¿qué pasaría si intentara hacer división entera con un número negativo? Echemos un vistazo:

-42 %/% 10
## [1] -5

Esto podría parecerte contrario a la intuición: ¿por qué 42%/% 10 produce una respuesta de 4, pero -42%/% 10 nos da una respuesta de -5? Intuitivamente se podría pensar que la respuesta al segundo debería ser -4. La manera de pensarlo es así. Supongamos que le debo 42 dólares a la tienda de sándwiches, pero no tengo dinero. ¿Cuántos sándwiches tendría que darles para evitar que llamaran a seguridad? La respuesta 108 aquí es 5, no 4. Si les entrego 4 sándwiches, todavía les debo 2 dólares, ¿verdad? Así que en realidad tengo que darles 5 sándwiches. Y como soy yo dándoles los sándwiches, la respuesta al -42 %/% 10 es -5. Como es de esperar, el comportamiento del operador de módulo tiene un patrón similar. Si he entregado 5 sándwiches a la tienda para pagar mi deuda de 42 dólares, entonces ahora me deben 8 dólares. Entonces el módulo es ahora:

-42 %% 10
## [1] 8

## Logaritmos y exponenciales

Como he mencionado anteriormente, R tiene una increíble gama de funciones matemáticas integradas en él, y realmente no tendría mucho sentido tratar de describirlas o incluso enumerarlas todas. En su mayor parte, me he centrado sólo en aquellas funciones que son estrictamente necesarias para este libro. Sin embargo sí quiero hacer una excepción para logaritmos y exponenciales. Aunque no son necesarios en ningún otro lugar de este libro, están en todas partes en la estadística de manera más amplia, y no solo eso, hay muchas situaciones en las que es conveniente analizar el logaritmo de una variable (es decir, tomar una “transformación logarítmica” del variable). Sospecho que muchos (quizás la mayoría) lectores de este libro habrán encontrado logaritmos y exponenciales antes, pero por experiencia pasada sé que hay una proporción sustancial de estudiantes que toman una clase de estadística de ciencias sociales que no han tocado logaritmos desde la secundaria, y se lo agradecería un poco de un repaso.

Para entender logaritmos y exponenciales, lo más fácil de hacer es calcularlos realmente y ver cómo se relacionan con otros cálculos simples. Hay tres funciones R en particular de las que quiero hablar, a saber, log (), log10 () y exp (). Para empezar, consideremos log10 (), que se conoce como el “logaritmo en base 10”. El truco para entender un logaritmo es entender que básicamente es lo “opuesto” de tomar un poder. Específicamente, el logaritmo en la base 10 está estrechamente relacionado con las potencias de 10. Entonces comencemos por señalar que 10 cubos son 1000. Matemáticamente, escribiríamos esto:

10 3 =1000

y en R lo calcularíamos usando el comando 10^3. El truco para entender un logaritmo es reconocer que la afirmación de que “10 a la potencia de 3 es igual a 1000” es equivalente a la afirmación de que “el logaritmo (en base 10) de 1000 es igual a 3”. Matemáticamente, escribimos esto de la siguiente manera,

log 10 (1000) =3

y si quisiéramos hacer el cálculo en R escribiríamos esto:

log10( 1000 )
## [1] 3

Obviamente, como ya sabes que 10 3 =1000 realmente no tiene sentido conseguir que R te diga que el logaritmo de base 10 de 1000 es 3. Sin embargo, la mayoría de las veces probablemente no sabes cuál es la respuesta correcta. Por ejemplo, honestamente puedo decir que no sabía que 10 2.69897 =500, así que es bastante conveniente para mí que pueda usar R para calcular el logaritmo de base 10 de 500:

log10( 500 )
## [1] 2.69897

O al menos sería conveniente si tuviera una necesidad apremiante de conocer el logaritmo de base 10 de 500.

Bien, ya que la función log10 () está relacionada con los poderes de 10, podría esperarse que haya otros logaritmos (en bases distintas a 10) que también estén relacionados con otros poderes. Y claro que eso es cierto: en realidad no hay nada matemáticamente especial en el número 10. A usted y a mí resulta útil porque los números decimales se construyen alrededor del número 10, pero el gran mundo malo de las matemáticas se burla de nuestros números decimales. Tristemente, al universo en realidad no le importa cómo escribimos números. En fin, la consecuencia de esta indiferencia cósmica es que no hay nada particularmente especial en calcular logaritmos en la base 10. Podrías, por ejemplo, calcular tus logaritmos en base 2, y de hecho R proporciona una función para hacer eso, que (no es sorprendente) se llama log2 (). Ya que sabemos que 23=2×2×2=8, no es de sorprender ver que

log2( 8 )
## [1] 3

Alternativamente, un tercer tipo de logaritmo —y uno que vemos mucho más en la estadística que la base 10 o la base 2— se llama logaritmo natural, y corresponde al logaritmo en la base e. Dado que algún día podrías encontrarte con él, mejor explicaré qué es e. El número e, conocido como número de Euler, es uno de esos molestos números “irracionales” cuya expansión decimal es infinitamente larga, y es considerado uno de los números más importantes en matemáticas. Los primeros dígitos de e son:

e=2.718282

Hay bastantes situaciones en las estadísticas que nos obligan a calcular poderes de e, aunque ninguno de ellos aparece en este libro. Elevar e a la potencia x se llama exponencial de x, por lo que es muy común ver e x escrito como exp (x). Y así no es de sorprender que R tenga una función que calcula exponenciales, llamada exp (). Por ejemplo, supongamos que quería calcular e 3. Podría intentar escribir el valor de e manualmente, así:

2.718282 ^ 3
## [1] 20.08554

pero es mucho más fácil hacer lo mismo usando la función exp ():

exp( 3 )
## [1] 20.08554

De todos modos, debido a que el número e aparece tan a menudo en la estadística, el logaritmo natural (es decir, logaritmo en la base e) también tiende a aparecer. Los matemáticos suelen escribirlo como loge (x) o ln (x), o a veces incluso simplemente log (x). De hecho, R funciona de la misma manera: la función log () corresponde al logaritmo natural 109 De todos modos, como comprobación rápida, calculemos el logaritmo natural de 20.08554 usando R:

log( 20.08554 )
## [1] 3

Y con eso, ¡creo que ya hemos tenido suficientes exponenciales y logaritmos para este libro!

This page titled 7.3: Algunas funciones y operaciones matemáticas más is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform.