Saltar al contenido principal
LibreTexts Español

3.9: Respuestas a ejercicios

  • Page ID
    150025
  • \( \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}}\)

    Respuestas a la pregunta de coloración de barplot:

    Código\(\PageIndex{1}\) (R):

    sex <- c("male", "female", "male", "male", "female", "male", "male")
    sex.f <- factor(sex)
    plot(sex.f, col=1:2)
    

    o

    Código\(\PageIndex{2}\) (R):

    sex <- c("male", "female", "male", "male", "female", "male", "male")
    sex.f <- factor(sex)
    plot(sex.f, col=1:nlevels(sex.f))
    

    (Por favor, pruebe estos comandos usted mismo. La segunda respuesta es preferible porque funcionará incluso en los casos en que el factor tenga más de dos niveles.)

    Respuestas a la pregunta de recuentos de barplot. Para ver frecuencias, de mayor a menor, ejecute:

    Código\(\PageIndex{3}\) (R):

    lload("data/com12.rd")
    exists("com12")
    com12.plot <- barplot(com12, names.arg="")
    rev(sort(com12))
    

    o

    Código\(\PageIndex{4}\) (R):

    lload("data/com12.rd")
    exists("com12")
    com12.plot <- barplot(com12, names.arg="")
    rev(sort(com12))
    sort(com12, decreasing=TRUE)
    

    Respuesta a la pregunta de las cabezas florecientes. Primero, necesitamos cargar el archivo en R. Con url.show () o simplemente examinando el archivo en la ventana del navegador, revelamos que el archivo tiene múltiples columnas divididas con espacios amplios (probablemente símbolos Tab) y que la primera columna contiene nombres de especies con espacios. Por lo tanto, el encabezado y el separador deben definirse explícitamente:

    Código\(\PageIndex{5}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    

    El siguiente paso es siempre verificar la estructura del nuevo objeto:

    Código\(\PageIndex{6}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    str(comp)
    

    Dos columnas (incluyendo especies) son factores, otras son numéricas (enteras o no). El objeto resultante es un marco de datos.

    Lo siguiente es seleccionar nuestra especie y eliminar los niveles no utilizados:

    Código\(\PageIndex{7}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    c3 <- comp[comp$SPECIES %in% c("Anthemis tinctoria", "Cosmos bipinnatus", "Tripleurospermum inodorum"), ]
    c3$SPECIES <- droplevels(c3$SPECIES)
    

    Para seleccionar especies de árboles en un comando, utilizamos la expresión lógica hecha con el operador %in% (por favor vea cómo funciona con?” comando %en%”).

    La eliminación de niveles redundantes ayudará a usar los nombres de las especies para las parcelas de dispersión:

    Código\(\PageIndex{8}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    c3 <- comp[comp$SPECIES %in% c("Anthemis tinctoria", "Cosmos bipinnatus", "Tripleurospermum inodorum"), ]
    c3$SPECIES <- droplevels(c3$SPECIES)
    with(c3, plot(HEAD.D, RAYS, col=as.numeric(SPECIES), pch=as.numeric(SPECIES), xlab="Diameter of head, mm", ylab="Number of rays"))
    legend("topright", pch=1:3, col=1:3, legend=levels(c3$SPECIES))
    

    Por favor, haz esta trama tú mismo. La clave es usar el factor ESPECIES como número, con el comando.numeric (). La función con () permite ignorar cc$ y por lo tanto guarda la escritura.

    Sin embargo, hay un gran problema que al principio no es fácil de reconocer: en muchos lugares, los puntos se superponen entre sí y por lo tanto la cantidad de puntos de datos visibles es mucho menor que en el archivo de datos. Lo que es peor, no podemos decir si la primera y la tercera especie están bien o no bien segregadas porque no vemos cuántos valores de datos se encuentran en la “frontera” entre ellas. Este problema de diagrama de dispersión es bien conocido y hay soluciones alternativas:

    Código\(\PageIndex{9}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    c3 <- comp[comp$SPECIES %in% c("Anthemis tinctoria", "Cosmos bipinnatus", "Tripleurospermum inodorum"), ]
    with(c3, plot(jitter(HEAD.D), jitter(RAYS), col=as.numeric(SPECIES), pch=as.numeric(SPECIES), xlab="Diameter of head, mm", ylab="Number of rays"))
    

    Por favor, ejecute este código usted mismo. La función jitter () agrega ruido aleatorio a las variables y caga puntos permitiendo ver lo que está a continuación. Sin embargo, todavía es difícil entender la cantidad de valores sobretrazados.

    También hay:

    Código\(\PageIndex{10}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    c3 <- comp[comp$SPECIES %in% c("Anthemis tinctoria", "Cosmos bipinnatus", "Tripleurospermum inodorum"), ]
    with(c3, sunflowerplot(HEAD.D, RAYS))
    with(c3, smoothScatter(HEAD.D, RAYS))
    

    (Prueba estas variantes tú mismo. Cuando ejecutes la primera línea de código, verás la parcela de girasol, desarrollada exactamente a tales “casos de sobretrazado”. Refleja cuántos puntos se superponen. Sin embargo, no es fácil hacer que la parcela de girasoles () muestre un overplotting por separado para cada especie. El otro enfoque, SmoothScatter () sufre del mismo problema\(^{[1]}\).)

    Para superar esto, desarrollamos la función pPoints () (Figura\(\PageIndex{1}\)):

    Código\(\PageIndex{11}\) (R):

    comp <- read.table("http://ashipunov.info/shipunov/open/compositae.txt", h=TRUE, sep="\t")
    c3 <- comp[comp$SPECIES %in% c("Anthemis tinctoria", "Cosmos bipinnatus", "Tripleurospermum inodorum"), ]
    with(c3, plot(HEAD.D, RAYS, type="n", xlab="Diameter of head, mm", ylab="Number of rays"))
    with(c3, PPoints(SPECIES, HEAD.D, RAYS, scale=.9))
    legend("topright", pch=1:3, col=1:3, legend=levels(c3$SPECIES))
    
    Screen Shot 2019-01-09 a las 10.33.17 AM.png
    Figura\(\PageIndex{1}\) Gráfica de dispersión que muestra la densidad de puntos de datos para cada especie.

    Por último, la respuesta. Como se puede ver, el cosmos del jardín está realmente separado de otras dos especies que a su vez podrían distinguirse con cierta certeza, principalmente porque el número de rayos en la manzanilla amarilla es más de 20. Este enfoque es posible mejorar. El capítulo de “minería de datos” dice cómo hacerlo.

    Respuesta a la pregunta matricial. Al crear la matriz ma, definimos byRow=True, es decir, indicamos que los elementos deben unirse en una matriz fila por fila. En caso de byRow=false (default) habríamos obtenido la matriz idéntica a mb:

    Código\(\PageIndex{12}\) (R):

    m <- 1:4
    ma <- matrix(m, ncol=2, byrow=FALSE)
    ma

    Respuesta al ejercicio de clasificación. Para trabajar con columnas, tenemos que usar corchetes con coma y colocar comandos a la derecha:

    Código\(\PageIndex{13}\) (R):

    w <- c(69, 68, 93, 87, 59, 82, 72)
    x <- c(174, 162, 188, 192, 165, 168, 172.5)
    sex <- c("male", "female", "male", "male", "female", "male", "male")
    sex.f <- factor(sex)
    m.o <- c("L", "S", "XL", "XXL", "S", "M", "L")
    d <- data.frame(weight=w, height=x, size=m.o, sex=sex.f)
    row.names(d) <- c("Rick", "Amanda", "Peter", "Alex", "Kathryn","Ben", "George")
    d.sorted <- d[order(d$sex, d$height), ]
    d.sorted[, order(names(d.sorted))]

    Tenga en cuenta que no podemos simplemente escribir order () después de la coma. Este comando devuelve el nuevo orden de columnas, así le dimos nuestros nombres de columna (names () devuelve nombres de columna para un marco de datos dado). Por cierto, sort () también habría funcionado aquí, ya que solo necesitábamos reorganizar un solo vector.

    Referencias

    1. También hay paquete hexbin que utiliza formas hexagonales y sombreado de color.


    3.9: Respuestas a ejercicios is shared under a Public Domain license and was authored, remixed, and/or curated by LibreTexts.