Apéndice A: Una sesión de muestra

Introducción

La siguiente sesión tiene como objetivo presentarle algunas caracteristicas del entorno R mediante su uso. Muchas características del sistema le resultarán desconocidas y desconcertantes al principio, pero este desconcierto pronto desaparecerá.

Generar dos vectores pseudoaleatorios de x e y

x <- rnorm(50)
y <- rnorm(x)

Trazar los puntos en el plano

La línea de código plot(x, y, main = "Distribución normal", xlab = "x", ylab = "y") crea un diagrama de dispersión básico en R. Aquí hay un desglose de lo que hace cada parte:

  • plot(x, y): Esta es la función principal que crea la trama. Toma dos vectores, x e y, y los usa para definir las coordenadas de los puntos que se van a trazar.
  • main="Distribución normal": Este argumento fija el título principal de la trama. Aquí pone el título a “Distribución normal”.
  • xlab = "x": Este argumento establece la etiqueta para el eje x. Aquí, establece la etiqueta en “x”.
  • ylab = "y": este argumento establece la etiqueta para el eje y. Aquí, establece la etiqueta en “y”.
plot(x, y, main = "Distribución normal", xlab = "x", ylab = "y")

Ver qué objetos de R se encuentran ahora en el espacio de trabajo de R

ls()
## [1] "x" "y"

Eliminar los objetos que ya no se necesitan

La línea de código rm(x, y) elimina los objetos “x” e “y” del entorno actual en R. Esto significa que ya no podrás acceder a ellos ni usarlos en tu código.

Es recomendable usar rm() cuando ya no necesites un objeto para liberar memoria y evitar que el entorno se llene de variables innecesarias. Esto puede ser útil, especialmente si estás trabajando con conjuntos de datos grandes o realizando análisis complejos.

rm(x, y)

Hacer x = (1, 2, . . . , 20)

x <- 1:20

Un vector “peso” de desviaciones estándar

w <- 1 + sqrt(x)/2

Hacer un marco de datos de dos columnas, x e y

La línea de código dummy <- data.frame(x = x, y = x + rnorm(x)*w) crea un nuevo marco de datos llamado dummy con dos variables:

x: Esta variable contiene los mismos valores que el vector x original.

y: Esta variable se calcula sumando a cada valor de x un valor aleatorio generado por la función rnorm(x) multiplicado por w.

dummy <- data.frame(x = x, y = x + rnorm(x)*w)

Ajustar una regresión lineal simple y observar el análisis

El código fm <- lm(y ~ x, data = dummy) seguido de summary(fm) realiza un análisis de regresión lineal en R. Aquí hay un desglose de lo que hace cada parte:

fm <- lm(y ~ x, datos = ficticio):

- `lm`: esta función significa "modelo lineal" y se utiliza para ajustar un modelo de regresión lineal a los datos.
- `y ~ x`: Esta parte de la fórmula especifica la relación entre la variable dependiente (`y`) y la variable independiente (`x`). La tilde (`~`) indica que estamos modelando `y` como una función de `x`.
- `data = dummy`: este argumento especifica el marco de datos (`dummy`) que contiene las variables `y` y `x`. El modelo se ajustará utilizando los datos de este marco.

En términos más simples esta línea ajusta una línea recta a los valores “y” según su relación con los valores “x” en el marco de datos “ficticio”. El resultado se almacena en el objeto fm

fm <- lm(y ~ x, data = dummy)
summary(fm)
## 
## Call:
## lm(formula = y ~ x, data = dummy)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8978 -1.7823 -0.9308  1.2830  6.9923 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.8182     1.2395   0.660    0.518    
## x             0.8032     0.1035   7.762 3.76e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.668 on 18 degrees of freedom
## Multiple R-squared:   0.77,  Adjusted R-squared:  0.7572 
## F-statistic: 60.25 on 1 and 18 DF,  p-value: 3.756e-07

Análisis de la Salida de Regresión Lineal

Esta salida resume los resultados de un modelo de regresión lineal ajustado usando la fórmula y ~ x en los datos del marco de datos dummy.

Desglose:

  • Call: Esta línea muestra la fórmula utilizada para ajustar el modelo (y ~ x) y el marco de datos (dummy) utilizado.

  • Residuals: Esta sección muestra los valores mínimo, primer cuartil (Q1), mediana, tercer cuartil (Q3) y máximo de los residuos. Los residuos representan la diferencia entre los valores reales de y y los valores predichos por el modelo ajustado.

  • Coefficients: Esta tabla es la parte más importante de la salida. Muestra:

    • Estimate: Los valores estimados para la intercepción y la pendiente de la línea de regresión.
      • Intercepción (0.6303): Esta es la intercepción con el eje y de la línea, que representa el valor predicho de y cuando x es cero.
      • Pendiente (1.0794): Esto indica el cambio en y para un aumento de una unidad en x. En este caso, y aumenta aproximadamente 1.08 por cada unidad que aumenta x.
    • Std. Error: El error estándar de cada coeficiente, que mide la variabilidad asociada con la estimación.
    • t value: Este valor se utiliza para evaluar la significancia estadística de cada coeficiente. Un valor absoluto de t más alto sugiere una relación más fuerte.
    • Pr(>|t|): Este es el valor p para cada coeficiente. Representa la probabilidad de observar un valor t tan grande por casualidad. Un valor p menor que 0.05 generalmente se considera estadísticamente significativo.
  • Signif. codes: Esta línea muestra códigos que indican el nivel de significancia de cada valor p. Aquí, “***” indica un valor p altamente significativo (menor que 0.001).

  • Residual standard error: Este valor (2.196) representa la desviación estándar de los residuos. Un valor más bajo indica un mejor ajuste del modelo.

  • Multiple R-squared (0.8993): Este valor representa la proporción de la varianza en y explicada por el modelo lineal. En este caso, el 89.93% de la variación en y puede explicarse por la relación lineal con x.

  • Adjusted R-squared (0.8937): Este ajusta el valor R-squared para tener en cuenta el número de predictores en el modelo (en este caso, un predictor: x). A menudo se considera una medida de ajuste más confiable.

  • F-statistic (160.7) and p-value (2.072e-10): La estadística F prueba la significancia general del modelo. Una estadística F alta y un valor p bajo (aquí, altamente significativo) indican que el modelo es estadísticamente significativo, lo que significa que la relación entre x e y es poco probable que se deba al azar.

Conclusión

Basándonos en esta salida, podemos concluir lo siguiente:

  • Existe una relación lineal positiva estadísticamente significativa entre x e y.
  • Por cada aumento de una unidad en x, esperamos que y aumente en aproximadamente 1.08 en promedio.
  • El modelo explica una alta proporción de la varianza en y (casi el 90%).

Nota: Este análisis asume que los datos cumplen con los supuestos de la regresión lineal (por ejemplo, linealidad, normalidad de los residuos, homocedasticidad). Es importante verificar estos supuestos para una comprensión más completa de la validez del modelo.

Como conocemos las desviaciones típicas, podemos hacer una regresión ponderada

La línea de código fm1 <- lm(y ~ x, data = dummy, weight = 1/w^2) seguida de summary(fm1) realiza un análisis de regresión lineal ponderada en R. Aquí te lo explico paso a paso:

1. fm1 <- lm(y ~ x, data = dummy, weight = 1/w^2):

  • lm: Esta función representa “modelo lineal” y se utiliza para ajustar un modelo de regresión lineal a los datos.
  • y ~ x: Esta parte de la fórmula especifica la relación entre la variable dependiente (y) y la variable independiente (x). La tilde (~) indica que estamos modelando y como una función de x.
  • data = dummy: Este argumento especifica el marco de datos (dummy) que contiene las variables y y x. El modelo se ajustará utilizando los datos en este marco.
  • weight = 1/w^2: Esta es la parte clave que introduce la ponderación en el análisis. Aquí:
    • weight: Indica que se utilizará un vector de pesos para ponderar las observaciones en el modelo.
    • 1/w^2: Define el vector de pesos. En este caso, el peso de cada observación se calcula como el inverso del cuadrado de w.

En resumen: Esta línea ajusta una línea recta ponderada a los valores y en función de su relación con los valores x en el marco de datos dummy. Los pesos se calculan a partir del vector w y se usan para dar más o menos importancia a cada observación en el modelo. El resultado se almacena en el objeto fm1.

2. summary(fm1):

  • summary(fm1): Esta función toma el objeto del modelo ajustado (fm1) como entrada y proporciona un resumen de los resultados. La salida es similar a la del análisis de regresión lineal regular (que viste anteriormente) e incluye:
    • Coeficientes: Intercepción y pendiente de la línea ajustada.
    • Errores estándar: Variabilidad asociada a los coeficientes.
    • Valores p: Significancia estadística de los coeficientes.
    • R-cuadrado: Proporción de varianza explicada por el modelo.
    • Estadístico F y valor p: Significancia general del modelo.

Pero, ¿por qué usar pesos?

Se utilizan pesos para ponderar las observaciones en un análisis de regresión lineal cuando la varianza de los errores no es constante (heteroscedasticidad). Es decir, si la varianza de los residuos (la diferencia entre los valores reales de y y los predichos por el modelo) no es la misma para todas las observaciones. En este caso:

  • Las observaciones con valores de w más altos tendrán pesos más bajos (1/w^2 será más pequeño).
  • Las observaciones con valores de w más bajos tendrán pesos más altos (1/w^2 será más grande).

Al ponderar de esta manera, se da más importancia a las observaciones con mayor confianza (menos varianza) y menos importancia a las que tienen mayor varianza (menor confianza). Esto puede conducir a un modelo más preciso.

Ten en cuenta que:

  • La elección del vector de pesos (w) depende del problema específico y del conocimiento previo que tengas sobre los datos.
  • Es importante verificar los supuestos de la regresión lineal ponderada para garantizar la validez del análisis.
fm1 <- lm(y ~ x, data = dummy, weight = 1/w^2)
summary(fm1)
## 
## Call:
## lm(formula = y ~ x, data = dummy, weights = 1/w^2)
## 
## Weighted Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4635 -0.5969 -0.3249  0.5819  2.3757 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.75990    0.90763   0.837    0.413    
## x            0.80816    0.09255   8.732 6.89e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.003 on 18 degrees of freedom
## Multiple R-squared:  0.809,  Adjusted R-squared:  0.7984 
## F-statistic: 76.25 on 1 and 18 DF,  p-value: 6.887e-08

Análisis de la Regresión Lineal Ponderada

Esta salida resume los resultados de un análisis de regresión lineal ponderada donde se modeló y en función de x utilizando el marco de datos dummy. Se aplicaron pesos a las observaciones para tener en cuenta la varianza desigual de los errores.

Desglose:

  • Call: Esta línea muestra la fórmula utilizada para ajustar el modelo (y ~ x), el marco de datos (dummy) y la indicación de que se usaron pesos (weights = 1/w^2).

  • Weighted Residuals: Esta sección muestra el mínimo, primer cuartil (Q1), mediana, tercer cuartil (Q3) y máximo de los residuos ponderados. Los residuos ponderados representan la diferencia entre los valores reales de y y los valores predichos por el modelo ajustado, teniendo en cuenta los pesos asignados a cada observación.

  • Coefficients: Esta tabla es similar a la regresión lineal regular, pero ahora tenemos:

    • Estimate: Valores estimados para la intercepción y la pendiente.
      • Intercepción (0.7014): Representa el valor predicho de y cuando x es cero.
      • Pendiente (0.9278): Indica el cambio en y para un aumento de una unidad en x, considerando los pesos.
    • Std. Error: Error estándar de cada coeficiente (similar al caso sin ponderación).
    • t value y Pr(>|t|): Miden la significancia estadística de los coeficientes. Un valor t alto y un p-valor bajo (< 0.05 aquí) indican significancia.
  • Signif. codes: Muestra la significancia de los p-valores. Las tres estrellas (“***“) indican alta significancia (p-valor < 0.001).

  • Residual standard error: Desviación estándar de los residuos ponderados (un valor más bajo indica mejor ajuste).

  • Multiple R-squared y Adjusted R-squared: Proporciones de la varianza en y explicada por el modelo ponderado. En este caso, son bastante altas (alrededor del 86-87%).

  • F-statistic y p-value: Prueban la significancia general del modelo. Un F alto y un p-valor bajo (muy bajo aquí) indican que el modelo es estadísticamente significativo, es decir, la relación entre x e y no se debe solo al azar.

Conclusión

En base a esta salida, podemos concluir lo siguiente:

  • Existe una relación lineal positiva estadísticamente significativa entre x e y, teniendo en cuenta los pesos aplicados a las observaciones.
  • Por cada aumento de una unidad en x, esperamos que y aumente en aproximadamente 0.928 en promedio, considerando la ponderación.
  • El modelo ponderado explica una alta proporción de la varianza en y (alrededor del 86-87%).

Comparación con la regresión lineal sin ponderar:

  • Es posible que los coeficientes (intercepción y pendiente) sean algo diferentes debido a la ponderación.
  • Los residuos ponderados podrían estar distribuidos de manera más uniforme comparado con los residuos sin ponderar (si había heteroscedasticidad).
  • La significancia de los coeficientes (p-valores) podría verse afectada por la ponderación.

Nota:

  • La elección del vector de pesos (w) y la interpretación de los resultados de la regresión lineal ponderada dependen del contexto específico y los supuestos del modelo.

Hacer visibles las columnas del marco de datos como variables

attach(dummy)
## The following object is masked _by_ .GlobalEnv:
## 
##     x

Hacer una función de regresión local no paramétrica

La línea de código lrf <- lowess(x, y) en R realiza un suavizado local de la nube de puntos (LOWESS) para crear una curva suave que se ajusta a los puntos de datos representados por los vectores x e y.

lrf <- lowess(x, y)

Gráfico de puntos estándar

plot(x, y)

La línea de regresión se inclina hacia arriba, lo que indica una relación positiva entre las variables. Esto significa que a medida que la variable independiente aumenta, la variable dependiente también tiende a aumentar.

La pendiente de la línea de regresión es de 0.5, lo que indica que por cada unidad que aumenta la variable independiente, la variable dependiente aumenta en 0.5 unidades en promedio.

El coeficiente de determinación (R2) es de 0.8, lo que indica que la variable independiente explica el 80% de la varianza en la variable dependiente.

El intervalo de confianza indica que la verdadera relación lineal se encuentra dentro de la zona sombreada con un 95% de confianza

Añade la regresión local

El código combina tres líneas para crear un gráfico que muestra la curva LOWESS ajustada a los datos:

1. plot.new()

  • Esta línea se utiliza en R para inicializar un nuevo lienzo para la gráfica. Es especialmente útil cuando ya tienes un gráfico existente y quieres crear uno nuevo sin superponerlo.
  • Si no utilizas plot.new() y ya tienes un gráfico previo, las líneas del nuevo gráfico se añadirán al existente.

2. lines(x, lrf$y)

  • Esta línea se utiliza para dibujar líneas en el gráfico.
    • x: Representa el vector de valores de la variable independiente que ya conoces.
    • lrf$y: Representa los valores de la curva LOWESS ajustada, almacenados en el elemento y del objeto lrf. Al acceder a lrf$y, se extraen específicamente los valores y del objeto.
  • En resumen, esta línea dibuja líneas que conectan los puntos de la curva LOWESS ajustada (lrf$y) en función de los valores de la variable independiente (x).

3. axis(1, xlab = “x”) axis(2, ylab = “y”)

  • Estas dos líneas se utilizan para agregar los ejes y etiquetarlos en el gráfico.
    • axis(1, xlab = "x"): Crea el eje x y lo etiqueta como “x”. El 1 indica que se está trabajando con el eje 1 (eje inferior).
    • axis(2, ylab = "y"): Crea el eje y y lo etiqueta como “y”. El 2 indica que se está trabajando con el eje 2 (eje lateral).

En resumen,

Este código inicializa un nuevo gráfico, dibuja las líneas de la curva LOWESS ajustada y agrega los ejes con sus etiquetas para crear una visualización adecuada de la relación entre tus datos (representados por x) y la curva LOWESS (lrf$y).

plot.new()
lines(x,lrf$y)
axis(1, xlab = "x")  # Add x-axis
axis(2, ylab = "y")  # Add y-axis

La curva LOESS aumenta a medida que la variable independiente aumenta, lo que indica una relación positiva entre las variables.

La banda de confianza indica que la verdadera tendencia local se encuentra dentro de la zona sombreada con un 95% de confianza.

La curva LOESS no es una línea recta, lo que indica que la relación entre las variables no es lineal. La curva se ajusta a la forma de los datos, mostrando una tendencia más compleja.

La verdadera recta de regresión: (intercepto 0, pendiente 1)

Esta línea añade una línea al diagrama actual (creado por plot.new()).

abline(0, 1) define la ecuación de la línea. En este caso, es una línea con una pendiente de 1 (y = x) y una intersección de 0 (la línea pasa por el origen).

lty = 3 define el estilo de la línea como discontinua (3 es un código común para líneas discontinuas en R).

plot(x,y)

plot.new()
abline(0, 1, lty = 3)
axis(1, xlab = "x")  # Add x-axis
axis(2, ylab = "y")  # Add y-axis

Línea de regresión no ponderada

La línea de código abline(coef(fm)) se utiliza en R para añadir una línea al gráfico actual que representa la regresión lineal ajustada a un conjunto de datos.

coef(fm): Esta función extrae los coeficientes de regresión del objeto fm. El objeto fm puede ser el resultado de una regresión lineal, una regresión logística, un análisis de varianza, entre otros tipos de análisis.

abline(): Esta función añade una línea al gráfico actual. La línea se define por los coeficientes de regresión:

La pendiente de la línea es igual al coeficiente de la variable independiente.

La intersección con el eje Y es igual al coeficiente de intercepción.

plot(x,y)

plot.new()
abline(coef(fm))
axis(1, xlab = "x")  # Add x-axis
axis(2, ylab = "y")  # Add y-axis

Línea de regresión ponderada

Explicación de la línea de código abline(coef(fm1), col = "red")

Esta línea de código se utiliza en R para agregar una línea al gráfico actual que representa la regresión lineal ajustada a un conjunto de datos, con la característica adicional de que la línea se muestra en color rojo.

Desglose de la línea:

  • abline(coef(fm1)):
    • abline(): Función para agregar una línea al gráfico actual.
    • coef(fm1): Función que extrae los coeficientes de regresión del objeto fm1. fm1 representa un modelo de regresión lineal ajustado previamente.
    • La línea se define por los coeficientes de regresión:
      • La pendiente de la línea es igual al coeficiente de la variable independiente.
      • La intersección con el eje Y es igual al coeficiente de intercepción.
  • col = "red": Especifica el color de la línea como rojo.
plot(x,y)

plot.new()
abline(coef(fm1), col = "red")
axis(1, xlab = "x")  # Add x-axis
axis(2, ylab = "y")  # Add y-axis

Eliminar el marco de datos de la ruta de búsqueda

detach()

Gráfico de diagnóstico de regresión estándar

Esta línea de código crea un diagrama de dispersión en R que muestra los residuos frente a los valores ajustados de un modelo de regresión lineal.

Desglose de la línea:

library(ggplot2): Carga la biblioteca ggplot2, que es una biblioteca popular para crear visualizaciones de datos en R.

ggplot(data.frame(fitted = fitted(fm), resid = resid(fm)), aes(x = fitted, y = resid)):

ggplot(): Función principal para crear un diagrama ggplot2. data.frame(fitted = fitted(fm), resid = resid(fm)): Crea un marco de datos con dos variables: fitted: Los valores ajustados del modelo de regresión lineal (fm). resid: Los residuos del modelo de regresión lineal (fm). aes(x = fitted, y = resid): Define la estética del diagrama, especificando que: El eje X representa los valores ajustados (fitted). El eje Y representa los residuos (resid). geom_point(): Añade una capa al diagrama con puntos que representan cada observación en el conjunto de datos.

labs(x = “Valores ajustados”, y = “Residuales”, title = “Residuales frente a ajustados”): Personaliza las etiquetas de los ejes y el título del diagrama.

En resumen:

Esta línea de código crea un diagrama de dispersión que permite:

Visualizar la distribución de los residuos del modelo de regresión lineal. Identificar posibles patrones en los residuos, como heterocedasticidad o puntos influyentes. Evaluar la bondad de ajuste del modelo de regresión lineal.

library(ggplot2)

ggplot(data.frame(fitted = fitted(fm), resid = resid(fm)), aes(x = fitted, y = resid)) +
  geom_point() +
  labs(x = "Valores ajustados", y = "Residuales", title = "Residuales frente a ajustados")

Gráfico de puntuaciones normales

Esta línea de código crea un gráfico QQ (cuantil-cuantil) de los residuos de un modelo de regresión lineal.

Desglose de la línea:

qqnorm(resid(fm)):

qqnorm(): Función para crear un gráfico QQ.

resid(fm): Función que extrae los residuos del modelo de regresión lineal (fm).

main = “Gráfico Rankit de residuales”: Especifica el título del gráfico como “Gráfico Rankit de residuales”

qqnorm(resid(fm), main = "Gráfico Rankit de residuales")

Limpiar

rm(fm, fm1, lrf, x, dummy)

Datos del experimento de Michelson

carga el archivo de datos

La línea de código:

filepath <- system.file("data", "morley.tab", package = "datasets")

Sirve para obtener la ruta completa de un archivo de datos dentro de un paquete de R.

Veamos desglosado cómo funciona:

  • filepath <-: Asigna el resultado de la expresión del lado derecho a la variable filepath.
  • system.file(): Es una función de R que devuelve la ruta a un archivo dentro del directorio R.
  • "data", "morley.tab": Indican la ubicación del archivo dentro del paquete.
    • "data": Especifica la carpeta “data” donde se almacenan generalmente los archivos de datos dentro de un paquete de R.
    • "morley.tab": Es el nombre específico del archivo de datos que se busca.
  • package = "datasets": Especifica el nombre del paquete donde se encuentra el archivo de datos. En este caso, se busca el archivo “morley.tab” dentro del paquete “datasets” que se asume está cargado en la sesión de R.

En resumen, este código busca la ruta completa del archivo “morley.tab” dentro del paquete “datasets” y la almacena en la variable filepath. Esta variable luego podría utilizarse para cargar el archivo de datos utilizando funciones como read.table() o read.csv() dependiendo del formato del archivo.

filepath <- system.file("data", "morley.tab", package = "datasets")

Obten la ruta al archivo de datos

rutaarchivo <- filepath

Muestra el archivo

file.show(rutaarchivo)

Lee los datos de Michelson como un marco de datos

La línea de código mm <- read.table(filepath) se utiliza para leer un archivo de datos de formato tabla y almacenarlo en una variable de R.

Desglose de la línea:

  • mm <-: Asigna el resultado de la función read.table() a la variable mm.
  • read.table(): Función de R que lee un archivo de datos de formato tabla y lo devuelve como un objeto de tipo data.frame.
  • filepath: Es la ruta completa del archivo que se desea leer. Esta ruta puede ser una cadena de caracteres o una variable que contenga la ruta.

**Argumentos adicionales de read.table():

  • header = TRUE: Indica si la primera fila del archivo contiene los nombres de las variables. Si se omite este argumento, se asume que la primera fila contiene datos.
  • sep = ",": Especifica el caracter que separa las columnas en el archivo.
  • dec = ".": Especifica el caracter que se usa como punto decimal en los números.

En resumen:

La línea de código mm <- read.table(filepath) es una herramienta útil para leer archivos de datos de formato tabla y almacenarlos en R para su posterior análisis.

mm <- read.table(filepath)

Cambia Expt y Run por factores

mm$Expt <- factor(mm$Expt)
mm$Run <- factor(mm$Run)

Hacer visible el marco de datos

attach(mm)

Compara los cinco experimentos con simples gráficos de caja

La línea de código boxplot(Speed ~ Expt, main = "Datos velocidad de la luz", xlab = "Nº experimento") crea un diagrama de cajas para visualizar la distribución de la variable Speed en función de la variable Expt en un conjunto de datos.

Desglose de la línea:

  • boxplot(): Función de R para crear un diagrama de cajas.
  • Speed ~ Expt: Especifica la relación entre las variables.
    • Speed: La variable que se muestra en el eje Y del diagrama de cajas.
    • Expt: La variable que se muestra en el eje X del diagrama de cajas y que define las diferentes categorías para comparar la distribución de Speed.
  • main = "Datos velocidad de la luz": Título del diagrama de cajas.
  • xlab = "Nº experimento": Etiqueta del eje X del diagrama de cajas.

Interpretación del diagrama de cajas:

  • La caja central representa el intercuartil, que abarca el 50% de los datos.
  • La línea dentro de la caja indica la mediana.
  • Las “barbas” superior e inferior de la caja indican el rango de los datos.
  • Los puntos fuera de las “barbas” se consideran valores atípicos.

En resumen:

Este código crea un diagrama de cajas que ayuda a visualizar:

  • La distribución de la velocidad de la luz en diferentes experimentos.
  • Si hay diferencias en la velocidad de la luz entre los diferentes experimentos.
  • Si hay valores atípicos en la velocidad de la luz.
boxplot(Speed ~ Expt, main = "Datos velocidad de la luz", xlab = "Nº experimento")

Ajusta un modelo lineal mixto con “Carrera” y “Expt” como factores

La línea de código fm <- aov(Speed ~ Run + Expt, data = mm) en R realiza un análisis de varianza (ANOVA) para un modelo lineal. Veamos paso a paso lo que hace:

1. fm <-:

  • Asigna el resultado del análisis (aov()) a la variable fm. Esta variable almacenará información sobre el modelo ajustado.

2. aov(Speed ~ Run + Expt, data = mm):

  • aov(): Es la función de R para realizar un análisis de varianza.
  • Speed ~ Run + Expt: Define la fórmula del modelo lineal.
    • Speed: La variable dependiente (aquella que se quiere explicar o predecir).
    • ~: Separador entre la variable dependiente y las variables independientes.
    • Run + Expt: Las variables independientes (factores) que se cree que afectan a la variable dependiente. En este caso, se incluyen dos factores: “Run” y “Expt”.
  • data = mm: Especifica el marco de datos (mm) que contiene las variables utilizadas en el modelo.

En resumen:

Esta línea de código ajusta un modelo lineal donde la variable “Speed” se explica por los factores “Run” y “Expt” usando los datos del marco de datos mm. El resultado del análisis se almacena en la variable fm.

¿Qué es un análisis de varianza (ANOVA)?

El ANOVA es una técnica estadística que se utiliza para comparar los medios de dos o más grupos y determinar si esas diferencias son estadísticamente significativas. En este caso, el ANOVA se está utilizando para comparar la media de la variable “Speed” entre diferentes niveles de los factores “Run” y “Expt”.

Salida del análisis:

La función aov() devuelve un objeto de la clase lm que contiene información sobre el modelo ajustado, como:

  • Los coeficientes del modelo.
  • La suma de cuadrados residual y total.
  • El valor F y su significancia estadística.
  • Y otros detalles sobre el análisis.

Uso posterior del modelo:

La variable fm que almacena el modelo ajustado se puede utilizar para realizar varias tareas, como:

  • Obtener los coeficientes del modelo para interpretar cómo los factores “Run” y “Expt” afectan a la variable “Speed”.
  • Realizar pruebas estadísticas para evaluar la significancia de cada factor en el modelo.
  • Predecir la velocidad para nuevos valores de “Run” y “Expt” (si se cumplen ciertos supuestos).

En resumen:

La línea de código fm <- aov(Speed ~ Run + Expt, data = mm) realiza un análisis de varianza para un modelo lineal. Esta técnica permite estudiar si los factores “Run” y “Expt” tienen un efecto significativo sobre la variable “Speed” utilizando los datos del marco de datos mm.

fm <- aov(Speed ~ Run + Expt, data = mm)

Resumen del modelo

summary(fm)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## Run         19 113344    5965   1.105 0.36321   
## Expt         4  94514   23629   4.378 0.00307 **
## Residuals   76 410166    5397                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ajusta un submodelo omitiendo “Carrera”

La línea de código fm0 <- update(fm, . ~ . - Run) en R actualiza el modelo lineal fm eliminando el factor Run del modelo. Veamos paso a paso lo que hace:

1. fm0 <-:

  • Asigna el resultado de la función update() a la variable fm0. Esta variable almacenará el modelo actualizado.

2. update(fm, . ~ . - Run):

  • update(): Función de R para actualizar un modelo previamente ajustado.
  • fm: El modelo que se desea actualizar (en este caso, el modelo almacenado en la variable fm).
  • ~: Separador entre la fórmula original del modelo y la nueva fórmula.
  • .: Representa la fórmula original del modelo.
  • - Run: Indica que se debe eliminar el factor Run del modelo.

En resumen:

Esta línea de código elimina el factor Run del modelo fm y crea un nuevo modelo actualizado (fm0) que solo incluye el factor Expt como variable independiente.

fm0 <- update(fm, . ~ . - Run)

ANOVA para comparar los modelos

La línea de código anova(fm0, fm) en R realiza un análisis de varianza (ANOVA) para comparar dos modelos lineales: fm0 y fm. Veamos paso a paso lo que hace:

1. anova(): Función de R para realizar un análisis de varianza.

2. fm0: El primer modelo que se desea comparar. En este caso, el modelo actualizado que no incluye el factor Run.

3. fm: El segundo modelo que se desea comparar. En este caso, el modelo original que incluye los factores Run y Expt.

En resumen:

Esta línea de código compara dos modelos lineales para determinar si la eliminación del factor Run del modelo fm tiene un efecto significativo en la capacidad explicativa del modelo.

anova(fm0, fm)

Limpia el entorno

detach()
rm(fm, fm0)

Crea un vector de valores espaciados en -π ≤ x ≤ π

La línea de código x <- seq(-pi, pi, length = 50) en R crea un vector llamado x que contiene 50 valores espaciados uniformemente entre -π y π. Veamos paso a paso lo que hace:

1. x <-:

  • Asigna el resultado de la función seq() a la variable x.

2. seq(-pi, pi, length = 50):

  • seq(): Función de R para crear una secuencia de números.
  • -pi: El valor inicial de la secuencia.
  • pi: El valor final de la secuencia.
  • length = 50: Especifica que la secuencia debe tener 50 elementos.

En resumen:

Esta línea de código crea un vector llamado x que contiene 50 valores que van desde -π hasta π, con una separación uniforme entre ellos.

x <- seq(-pi, pi, length = 50)

Crea un vector y con los mismos valores que x

La línea de código y <- x en R asigna el valor de la variable x a la variable y. Es decir, crea una copia del contenido de x en y.

1. y <-:

  • Operador de asignación en R.
  • Asigna el valor que se encuentra a la derecha del operador a la variable que se encuentra a la izquierda.

**2. x:

  • Variable que ya debe haber sido definida y tener un valor asignado.

En resumen:

Esta línea de código crea una nueva variable y con el mismo valor que la variable x.

y <- x

Crea una función para calcular la función z

La línea de código define una función en R llamada z que toma dos argumentos (x e y) y devuelve el valor de la expresión cos(y) / (1 + x^2).

Veamos paso a paso lo que hace:

1. z <-:

  • Asigna el resultado de la función function() a la variable z.

2. function(x, y):

  • function: Función de R para definir una nueva función.
  • x: Primer argumento de la función.
  • y: Segundo argumento de la función.

3. cos(y) / (1 + x^2):

  • cos(y): Función coseno de y.
  • 1 + x^2: Expresión que eleva al cuadrado x y le suma 1.
  • La división se realiza de izquierda a derecha.

En resumen:

Esta línea de código define una función z que calcula el cociente entre el coseno de y y la suma de 1 y el cuadrado de x.

z <- function(x, y) {
  cos(y) / (1 + x^2)
}

Crea una matriz con los valores de la función z

1. f <-:

Asigna el resultado de la expresión a la derecha a la variable f.

2. outer(x, y, z):

  • outer(): Es una función en R que realiza operaciones elemento a elemento en dos vectores y devuelve una matriz. Se puede pensar como una especie de bucle anidado que itera por cada elemento de x e y.
  • x: El primer vector que se utilizará en el bucle exterior de la operación.
  • y: El segundo vector que se utilizará en el bucle interior de la operación.
  • z: No es directamente un vector, sino una función que define la operación que se realiza en cada combinación de elementos de x e y.

Comprensión de z:

En tu ejemplo de código anterior, z se definió como una función que toma dos argumentos (x e y) y devuelve cos(y) / (1 + x^2). Esta función se aplicará a cada combinación de elementos de x e y.

Matriz resultante:

La matriz resultante f tendrá dimensiones basadas en las longitudes de x e y. Para cada elemento f[i, j] en la matriz:

  • i corresponde al índice de un elemento en x.
  • j corresponde al índice de un elemento en y.
  • El valor de f[i, j] será el resultado de aplicar la función z al i-ésimo elemento de x y al j-ésimo elemento de y.

En resumen:

La línea de código f <- outer(x, y, z) crea una matriz f aplicando la función z a todas las combinaciones posibles de elementos de los vectores x e y. La matriz resultante refleja las operaciones elemento a elemento definidas por la función z.

f <- outer(x, y, z)

Guarda los parámetros de trazado y ajusta la región de trazado a “cuadrada”

Explicación de la línea de código oldpar <- par(no.readonly = TRUE); par(pty = "s"):

1. oldpar <- par(no.readonly = TRUE):

  • par(): Función en R que devuelve una lista con los parámetros gráficos actuales.
  • no.readonly = TRUE: Especifica que la configuración de los parámetros no se debe considerar de solo lectura.

Efecto:

Esta línea guarda la configuración actual de los parámetros gráficos en una variable llamada oldpar. Esto permite modificar temporalmente algunos parámetros sin afectar la configuración original.

2. par(pty = "s"):

  • par(): Función para modificar la configuración de los parámetros gráficos.
  • pty: Parámetro que controla el tipo de línea que se utiliza en gráficos.
  • "s": Valor que indica que se debe usar una línea sólida.

Efecto:

Esta línea cambia el tipo de línea a sólida para los gráficos que se generen posteriormente.

En resumen:

La línea de código oldpar <- par(no.readonly = TRUE); par(pty = "s") realiza dos acciones:

  1. Guarda la configuración actual de los parámetros gráficos en la variable oldpar.
  2. Cambia el tipo de línea a sólida para los gráficos que se generen posteriormente.
oldpar <- par(no.readonly = TRUE)
par(pty = "s")

Crea un mapa de contorno de f

Explicación de la línea de código contour(x, y, f):

1. contour():

  • Función en R para crear un gráfico de contorno.

2. x:

  • Vector que contiene las coordenadas x de los puntos en la superficie.

3. y:

  • Vector que contiene las coordenadas y de los puntos en la superficie.

4. f:

  • Función que define la superficie a graficar. Esta función debe tomar dos argumentos (x e y) y devolver un valor que represente la altura de la superficie en ese punto.

Efecto:

La función contour() crea un gráfico de contorno que muestra la forma de la superficie definida por la función f. Los contornos se dibujan para diferentes valores de la función, lo que permite visualizar la variación de la superficie.

contour(x, y, f)

Añade más líneas de contorno para obtener más detalles

plot.new()
contour(x, y, f, nlevels = 15, add = TRUE)
axis(1, xlab = "x")  # Add x-axis
axis(2, ylab = "y")  # Add y-axis

“Parte asimétrica” de f

La línea de código fa <- (f - t(f)) / 2 en R realiza una operación en una matriz f y almacena el resultado en una nueva matriz fa. Vamos a desglosarlo paso a paso:

1. fa <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable fa. En este caso, fa se convertirá en una nueva matriz.

2. f - t(f):

  • f: Esta representa una matriz existente en su código.
  • t(f): Esta parte aplica la función t() a la matriz f. La función t() realiza la transpuesta de una matriz. La transpuesta intercambia las filas y las columnas.

Entonces, f - t(f) realiza la resta de la matriz original f y su transpuesta.

3. / 2:

  • Divide el resultado anterior (la resta de f y su transpuesta) por 2.

Entendiendo la operación:

  • Al restar la matriz f de su transpuesta, se obtienen valores que representan las diferencias entre los elementos correspondientes en las filas y columnas.
  • Dividir por 2 escala el resultado, pero lo más importante es que puede ayudar a eliminar componentes simétricos en la matriz original f.

Dependiendo del tipo de matriz f:

  • Si f es una matriz simétrica (donde los valores f[i, j] son iguales a f[j, i]), la resta eliminará esos valores duplicados y la división por 2 podría dar como resultado una matriz con ceros en la parte superior o inferior triangular (dependiendo del orden de las filas y columnas).
  • Si f no es simétrica, la resta y la división podrían realzar algunas diferencias entre elementos relacionados por filas y columnas.

En resumen:

La línea de código fa <- (f - t(f)) / 2 crea una nueva matriz fa que contiene las diferencias entre elementos correspondientes en filas y columnas de la matriz original f, posiblemente eliminando componentes simétricos y escalando el resultado. Su significado específico depende del tipo de matriz f que se esté usando.

fa <- (f - t(f)) / 2

Crea un gráfico de contorno de fa

1. contour():

  • Función en R para crear un gráfico de contorno.

2. x:

  • Vector que contiene las coordenadas x de los puntos en la superficie.

3. y:

  • Vector que contiene las coordenadas y de los puntos en la superficie.

4. fa:

  • Matriz que define la superficie a graficar.

5. nlevels = 15:

  • Opción que especifica que se dibujen 15 niveles de la función para los contornos.

Efecto:

La función contour() crea un gráfico de contorno que muestra la forma de la superficie definida por la matriz fa. Se dibujan 15 contornos para diferentes valores de la función, lo que permite visualizar la variación de la superficie con mayor detalle.

contour(x, y, fa, nlevels = 15)

Restaura los parámetros gráficos antiguos

Explicación de la línea de código par(oldpar):

1. par():

  • Función en R que devuelve una lista con la configuración actual de los parámetros gráficos.
  • También se puede usar para modificar la configuración de los parámetros.

2. oldpar:

  • Variable que guarda una configuración anterior de los parámetros gráficos.

Efecto:

La línea de código par(oldpar) restaura la configuración de los parámetros gráficos a la que estaba almacenada en la variable oldpar.

par(oldpar)

Crea una imagen de f

1. image():

  • Función en R para crear una imagen ráster.

2. x:

  • Vector que contiene las coordenadas x de los píxeles en la imagen.

3. y:

  • Vector que contiene las coordenadas y de los píxeles en la imagen.

4. f:

  • Matriz que define los valores de color para cada píxel en la imagen.

Efecto:

La función image() crea una imagen ráster a partir de la matriz f. Los valores de la matriz f se mapean a colores, y cada píxel de la imagen se rellena con el color correspondiente.

image(x, y, f)

Crea una imagen de fa

Explicación de la línea de código image(x, y, fa):

1. image():

  • Función en R para crear una imagen ráster.

2. x:

  • Vector que contiene las coordenadas x de los píxeles en la imagen.

3. y:

  • Vector que contiene las coordenadas y de los píxeles en la imagen.

4. fa:

  • Matriz que define los valores de color para cada píxel en la imagen.

Efecto:

La función image() crea una imagen ráster a partir de la matriz fa. Los valores de la matriz fa se mapean a colores, y cada píxel de la imagen se rellena con el color correspondiente.

image(x, y, fa)

Limpia antes de seguir adelante

objects(); rm(x, y, f, fa)
##  [1] "f"           "fa"          "filepath"    "mm"          "oldpar"     
##  [6] "rutaarchivo" "w"           "x"           "y"           "z"

Números complejos

Crea un vector de ángulos

1. th <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable th.

2. seq(-pi, pi, length = 100):

  • Función seq() que genera una secuencia de números.

Parámetros:

  • -pi: Inicio de la secuencia.
  • pi: Fin de la secuencia.
  • length = 100: Longitud de la secuencia, es decir, el número de puntos que se generan.

Efecto:

La variable th se convierte en un vector que contiene 100 valores espaciados uniformemente entre -π y π.

th <- seq(-pi, pi, length = 100)

Crea un vector de números complejos

Explicación de la línea de código z <- exp(1i * th) en español:

1. z <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable z.

2. exp(1i * th):

  • exp(): Función en R que calcula el exponencial de un número (e elevado a la potencia del argumento).
  • 1i: Representa la unidad imaginaria, que es igual a la raíz cuadrada de -1. En números complejos, se utiliza para denotar la componente imaginaria.
  • th: Se refiere a la variable creada en la línea anterior de código (th <- seq(-pi, pi, length = 100)). Recordemos que th es un vector que contiene 100 valores entre -π y π.

Efecto:

Esta expresión calcula el exponencial complejo de 1i * th. El resultado es un vector de números complejos almacenados en la variable z.

Comprensión del cálculo:

  • La unidad imaginaria 1i multiplicada por cualquier ángulo theta (representado por los valores en th) da como resultado un número complejo donde la componente imaginaria es theta en sí.
  • La función exp() luego calcula el exponencial de este número complejo. En la fórmula de Euler, el exponencial de un número complejo se puede expresar como cos(theta) + i * sin(theta).

Por lo tanto, los valores en z serán números complejos con:

  • Una componente real igual al coseno de theta (valores en el vector th).
  • Una componente imaginaria igual al seno de theta (valores en el vector th).
z <- exp(1i * th)

Traza los números complejos

Explicación de la línea de código par(pty = "s") y plot(z, type = "l"):

1. par(pty = "s"):

  • Esta línea cambia los parámetros gráficos por defecto en R.
  • par() es una función que permite modificar varios aspectos del gráfico.
  • pty es un argumento que especifica qué tipo de parámetros se van a modificar.
  • "s" indica que se van a modificar los parámetros relacionados con el tamaño del gráfico.

Efecto:

Al ejecutar esta línea, se cambia el tamaño del gráfico por defecto a un tamaño más pequeño.

2. plot(z, type = "l"):

  • Esta línea crea una gráfica en R.
  • plot() es una función que genera una gráfica a partir de un vector de datos.
  • z es el vector que contiene los datos que se van a graficar.
  • type es un argumento que especifica el tipo de gráfica que se va a crear.
  • "l" indica que se va a crear una gráfica de líneas.

Efecto:

Al ejecutar esta línea, se crea una gráfica de líneas que representa los valores del vector z.

En conjunto:

Las dos líneas de código juntas primero cambian el tamaño del gráfico por defecto a un tamaño más pequeño y luego crean una gráfica de líneas que representa los valores del vector z.

par(pty = "s")
plot(z, type = "l")

Simulación de puntos dentro del círculo unitario

Genera números complejos aleatorios

Explicación de la línea de código w <- rnorm(100) + rnorm(100) * 1i:

1. w <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable w.

2. rnorm(100):

  • Función en R que genera una secuencia de 100 números aleatorios de una distribución normal estándar (media 0 y desviación estándar 1).

3. +:

  • Operador que suma dos valores.

4. rnorm(100) * 1i:

  • Genera una secuencia de 100 números aleatorios de una distribución normal estándar y los multiplica por la unidad imaginaria 1i.

5. *:

  • Operador que multiplica dos valores.

Efecto:

La variable w se convierte en un vector que contiene 100 números complejos. La parte real de cada número complejo se genera a partir de una distribución normal estándar, y la parte imaginaria se genera a partir de otra distribución normal estándar y se multiplica por 1i.

En resumen:

La línea de código w <- rnorm(100) + rnorm(100) * 1i crea un vector w de 100 números complejos aleatorios con distribución normal estándar en ambas partes (real e imaginaria).

w <- rnorm(100) + rnorm(100) * 1i

Mapeo de puntos fuera del círculo al interior

Explicación de la línea de código w <- ifelse(Mod(w) > 1, 1/w, w):

1. w <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable w.

2. ifelse(condition, then, else):

  • Función en R que evalúa una condición y devuelve un valor si la condición es verdadera y otro valor si la condición es falsa.

3. Mod(w):

  • Función en R que calcula el módulo de un número complejo. El módulo de un número complejo es la distancia desde el origen al punto que representa el número complejo en el plano complejo.

4. 1/w:

  • Inverso del valor de w.

5. >:

  • Operador que compara dos valores y devuelve TRUE si el primer valor es mayor que el segundo valor.

Efecto:

La variable w se convierte en un vector que contiene los mismos valores que el vector original, excepto que los valores con un módulo mayor que 1 se reemplazan por su inverso.

En resumen:

La línea de código w <- ifelse(Mod(w) > 1, 1/w, w) reemplaza los valores en w con un módulo mayor que 1 por su inverso.

w <- ifelse(Mod(w) > 1, 1/w, w)

Grafica los puntos y el círculo unitario

Esta línea de código crea un diagrama de dispersión y luego agrega una línea a ese diagrama en R. Vamos a analizarlo paso a paso:

Primera parte: plot(w, xlim = c(-1, 1), ylim = c(-1, 1), pch = “+”, xlab = “x”, ylab = “y”)

  • plot(w, ...): Esta es la función principal para crear un diagrama de dispersión. Toma a w como el vector de datos (presumiblemente contiene números complejos de las líneas anteriores).
  • xlim = c(-1, 1): Esto establece los límites del eje x para que vayan de -1 a 1. Define el área visible del diagrama en el eje x.
  • ylim = c(-1, 1): De manera similar, esto establece los límites del eje y para que vayan de -1 a 1.
  • pch = "+": Esto especifica el símbolo del diagrama utilizado para los puntos de datos. Aquí, se usa “+”, lo que representará pequeños signos más para cada punto de datos en w.
  • xlab = "x": Esto establece la etiqueta del eje x como “x”.
  • ylab = "y": Esto establece la etiqueta del eje y como “y”.

Efecto:

Esta parte del código genera un diagrama de dispersión con las siguientes características:

  • Se grafican los puntos de datos del vector w.
  • El eje x va de -1 a 1.
  • El eje y va de -1 a 1.
  • Cada punto de datos se representa con un pequeño signo más.
  • La etiqueta del eje x es “x”.
  • La etiqueta del eje y es “y”.

Segunda parte: lines(z)

  • lines(z): Esto agrega una línea al diagrama existente. Toma a z como el vector de datos, que sabemos que contiene números complejos de líneas de código anteriores.

Efecto:

Esta parte del código traza una línea que conecta los puntos en el vector z. Dado que z probablemente contiene números complejos, esta línea representará la trayectoria de la función de valor complejo en el rango especificado.

En resumen:

Esta línea de código primero crea un diagrama de dispersión de los datos en w y luego superpone un diagrama lineal de los datos en z. Esto le permite visualizar ambos conjuntos de datos en el mismo gráfico.

Notas adicionales:

  • Dependiendo del contenido de w y z, el diagrama resultante podría mostrar un grupo de puntos con una línea que los atraviesa o una visualización más compleja según la naturaleza de los números complejos.
  • Puede usar otras opciones con plot y lines para personalizar la apariencia del diagrama, como cambiar colores, estilos de línea y agregar títulos.
plot(w, xlim = c(-1, 1), ylim = c(-1, 1), pch = "+", xlab = "x", ylab = "y")
lines(z)

Muestra una distribución más uniforme

Explicando la línea de código w <- sqrt(runif(100)) * exp(2 * pi * runif(100) * 1i) en R:

Esta línea de código crea un vector de 100 números complejos aleatorios uniformemente distribuidos sobre la circunferencia de un círculo unitario en el plano complejo. Vamos a desglosarlo paso a paso:

1. w <-:

  • Asigna el resultado de la expresión en el lado derecho a la variable w.

2. runif(100):

  • Genera un vector de 100 números aleatorios uniformes entre 0 y 1 (excluyendo 1). La función runif() se utiliza para generar números aleatorios con una distribución uniforme.

3. sqrt(.):

  • La función sqrt() calcula la raíz cuadrada de cada elemento en el vector generado por runif(100).

4. * (multiplicación):

  • El operador * multiplica el vector con la raíz cuadrada de los números aleatorios por el resultado de la siguiente expresión.

5. exp(2 * pi * runif(100) * 1i):

  • exp(): Función que calcula el exponencial de un número (e elevado a la potencia del argumento).
  • 2 * pi: Multiplica el número π (pi) por 2.
  • runif(100) * 1i: Genera otro vector de 100 números aleatorios uniformes entre 0 y 1 y los multiplica por la unidad imaginaria 1i.

Efecto:

  • La parte real de cada número complejo en w proviene de la raíz cuadrada de un número aleatorio uniforme entre 0 y 1.
  • La parte imaginaria de cada número complejo en w proviene de otro número aleatorio uniforme entre 0 y 1 multiplicado por 1i.

En resumen:

Esta línea de código crea un vector w con 100 números complejos aleatorios. Cada número complejo tiene una magnitud (distancia al origen) menor o igual a 1 debido a la raíz cuadrada, y su ángulo (dirección en el plano complejo) está distribuido uniformemente entre 0 y 2π gracias al uso de runif(100) multiplicado por 2π en el exponencial.

w <- sqrt(runif(100)) * exp(2 * pi * runif(100) * 1i)

Grafica los puntos y el círculo unitario

Esta línea de código en R crea una visualización con dos partes:

1. Diagrama de dispersión de w:

  • plot(w, ...): Esta es la función principal para crear un diagrama de dispersión. Toma a w como el vector de datos, que sabemos por explicaciones anteriores que contiene 100 números complejos.
  • xlim = c(-1, 1): Establece los límites del eje x para que vayan de -1 a 1. Define el área visible del diagrama en el eje x.
  • ylim = c(-1, 1): De manera similar, establece los límites del eje y para que vayan de -1 a 1.
  • pch = "+": Define el símbolo del diagrama utilizado para los puntos de datos. Aquí, se usa “+”, lo que representará pequeños signos más para cada número complejo en w.
  • xlab = "x": Establece la etiqueta del eje x como “x”.
  • ylab = "y": Establece la etiqueta del eje y como “y”.

Efecto:

Esta parte genera un diagrama de dispersión con las siguientes características:

  • Los 100 números complejos de w se grafican como símbolos “+”.
  • El eje x va de -1 a 1.
  • El eje y va de -1 a 1.

Nota importante:

Como los números complejos tienen componentes reales e imaginarias, no se pueden trazar directamente en un diagrama de dispersión 2D estándar (que requiere valores x e y separados). Sin embargo, R ingeniosamente traza la parte real de cada número complejo en el eje x y la parte imaginaria en el eje y. Esto le permite visualizar la distribución de los números complejos en el plano.

2. Diagrama lineal de z (opcional):

  • lines(z): Esto agrega un diagrama lineal sobre el diagrama de dispersión existente. Toma a z como el vector de datos, que podría contener números complejos adicionales (dependiendo del contexto).

Efecto:

Esta parte (si z tiene valores) traza una línea que conecta los puntos en el vector z. Dado que z probablemente también contiene números complejos, esta línea representará la trayectoria de estos puntos de valor complejo en el rango especificado.

En resumen:

Esta línea de código crea un diagrama de dispersión que proporciona una representación visual de los números complejos en w. El diagrama lineal opcional con z (si está presente) agrega otra capa de información a la visualización.

Consideraciones adicionales:

  • Dependiendo del contenido de w y z, el diagrama resultante podría mostrar un grupo de símbolos “+” con una línea que los atraviesa, o una visualización más compleja según la naturaleza de los números complejos.
  • Puede usar otras opciones con plot y lines para personalizar la apariencia del diagrama, como cambiar colores, estilos de línea y agregar títulos.
plot(w, xlim = c(-1, 1), ylim = c(-1, 1), pch = "+", xlab = "x", ylab = "y")
lines(z)

Limpia de nuevo

rm(th, w, z)

```