Mostrando entradas con la etiqueta MASS. Mostrar todas las entradas
Mostrando entradas con la etiqueta MASS. Mostrar todas las entradas

2019-06-10

Solving a system of linear equations in R

Problem

We want to solve a system of linear equations in R.

2x + 3y + 3z = 20
  x + 4y + 3z = 15
5x + 3y + 4z = 30

Solution

We use the function solve.

a <- rbind(c(2, 3, 3), 
           c(1, 4, 3), 
           c(5, 3, 4))
b <- c(20, 15, 30)
solve(a, b)
[1] -1.25 -6.25 13.75
If we'd like the resulst in fractions, we use the function fractions from the package MASS.

library(MASS)
fractions(solve(a, b))
[1]  -5/4 -25/4  55/4

Related posts

Spanish version

2018-08-27

Gráficos de An Introduction to Statistical Learning con ggplot2 - Figura 1.3.

Gráfico a replicar

Continuamos con la serie iniciada sobre la creación de gráficos del libro An Introduction to Statistical Learning con ggplot2 parte 1. En esta ocasión replicaremos el gráfico de la figura 1.3. Se trata de un diagrama de caja en el que representamos el resultado de un análisis discriminante cuadrático (lda). Aplicamos un análisis análisis discriminante cuadrático al subconjunyo de datos de Smarket comprendido entre 2001-2007 y predecimos la probabilidad de que el mercado de valores decrezca usando los datos de 2005.

Solución

# Análisis discriminante cuadrático
library(ISLR)
library(MASS)
library(ggplot2)
train <- (Smarket$Year < 2005)
Direction.2005 <- Smarket$Direction[!train]
Smarket.2005 <- Smarket[!train,]
qda.fit <-  qda(Direction ~ Lag1 + Lag2, data = Smarket, subset = train)
qda.class <- predict(qda.fit, Smarket.2005)$class
mean(qda.class == Direction.2005)
[1] 0.5992063
En media la predicción de probabilidad de que decrezca el mercado de valores es mayor en los días en los que el mercado decrece. Basándonos en estos resultados, podemos predecir correctamente la dirección del movimiento de mercado en un 60% de las veces.

  • Gráfico
  • En este caso la creación del gráfico es sencilla y prácticamente idéntica a la de la entrada anterior. El único reto es utilizar correctamente la salida de datos de qda.pred.

    qda.pred <- predict(qda.fit, Smarket.2005)
    qda.pred <- cbind(data.frame(qda.pred), pred = Direction.2005)
    
    ggplot(qda.pred, aes(x = pred, y = posterior.Down, fill = pred)) +
      stat_boxplot(geom = "errorbar", width = 0.5) +
      geom_boxplot(show.legend = FALSE, outlier.alpha = .5) +
      scale_fill_manual(values = c("royalblue", "orangered")) +
      labs(x = "Today's Direction", y = "Predicted probability")
    
    Dejo el panel de fondo por defecto pues ayuda a evaluar mejor el gráfico. Si lo que queremos en blanco tal y como el libro añadiríamos al código anterior:

    theme(panel.background = element_blank())

    Entradas relacionadas

    2015-02-13

    Sistemas de ecuaciones lineales en R

    Title En R se pueden resolver fácilmente sistemas de ecuaciones lineales con la función solve.

    Ejemplo

    2x + 3y + 3z = 20
      x + 4y + 3z = 15
    5x + 3y + 4z = 30

    Solución

    a <- rbind(c(2, 3, 3), 
               c(1, 4, 3), 
               c(5, 3, 4))
    b <- c(20, 15, 30)
    solve(a, b)
    
    [1] -1.25 -6.25 13.75
    
    Si queremos el resultado en fracciones, utilizamos la función fractions del paquete MASS.

    library(MASS)
    fractions(solve(a, b))
    
    [1]  -5/4 -25/4  55/4
    
    Nube de datos