1 Objetivo

Creación y manipulación de objetos en R; principalmente vectores, matrices y funciones, para las operaciones básicas de cálculo, álgebra y probabilidad.

2 Introdución

R es un lenguaje de programación y de distribución libre que funciona en los sistemas operativos de Windows, Linux, Macintosh y Unix.

R fue creado en \(1992\) en Nueva Zelanda por Ross Ihaka y Robert Gentleman adoptando la sintaxis del lenguaje S desarrollado por Bell Laboratories, actualmente Lucent Tecnologies. El lenguaje S fue desarrollado en \(1976\) por John Chambers y colaboradores.

Ventajas que se tienen al utilizar R, como lenguaje de programación:

  • Es un software con código totalmente libre.

  • Se puede almacenar y manipular objetos como vectores, matrices, arreglos, listas, funciones, etc.

  • Las contribuciones de los usuarios, http://cran.r-project.org/bin/windows/contrib/ hacen de R una herramienta completa y potente para la programación, edición y procesamiento de datos.

El ambiente de trabajo en R es intuitivo y relativamente simple, ya que solo necesitamos identificar las funciones y paquetes que vamos a utilizar, para empezar a trabajar. Si ocupamos de un paquete que no está instalado en R, entonces se instala y se carga al archivo de trabajo. Todas las funciones empleadas en R están contenidas en paquetes (bibliotecas).

Actualmente, el repositorio de paquetes CRAN tiene alrededor de \(18,365\) paquetes disponibles:

Paquetes que se pueden instalar en R:

3 Instalación de R

3.1 Instalación de R

Para instalar R en el sistema operativo de Windows:,

3.3 Instalación de RStudio

Paquetes a los que se tienen acceso una vez que se instala R:

search()
   [1] ".GlobalEnv"        "package:rmarkdown" "package:tinytex"  
   [4] "package:knitr"     "package:stats"     "package:graphics" 
   [7] "package:grDevices" "package:utils"     "package:datasets" 
  [10] "package:methods"   "Autoloads"         "package:base"

Instalación de R en Mac:

4 Instalación de paquetes

Un paquete: Se instala con la función install.packages() y se activar con la función library(). La instalación de un paquete solo se realiza una vez, mientras que la activación del paquete se realiza siempre que se utilicen las funciones del paquete en cuestión.

El paquete ggplot2 se utiliza para la creación de gráficos.

Guía del paquete ggplot2: https://raw.githubusercontent.com/rstudio/cheatsheets/main/translations/spanish/data-visualization_es.pdf

install.packages("ggplot2")  # Instalación del paquete ggplot2
install.packages("plotly")
library("ggplot2")   #ggplot    # Activación del paquete ggplot2
library("plotly")     #ggplotly
library(help=ggplot2)   # Funciones y bases de datos del paquete ggplot2

Para pedir ayuda al R con la función geom_line del paquete ggplot2

?geom_line        
help(geom_line )

Funciones relacionadas con la instalación de paquetes

  • install.packages( ,dependence=T):

  • install.packages( ,dependencies =c(“Depends”,“Imports”))

  • remove.packages(): Quita un paquete de R.

  • update.packages(): Actualiza un paquete de R.

  • updata.packages(): Actualiza los paquetes de R.

  • Para instalar paquetes de R desde GitHub primero se instala el paquete devtools: install.packages(devtools) y library(devtools); para poder usar la función install_github; la forma de usar esta función es la siguiente: install_github(“tidyverse/ggplot2”), con esta indicación se está instalando el paquete ggplot2.

  • Si se quiere usar la función de un paquete el cual no se ha instalado previamente, se puede usa la siguiente instrucción: devtools::install_github(“tidyverse/ggplot2”)

  • Ejemplos de instalación de paquetes: https://r-coder.com/instalar-paquetes-r/

5 Creación y manejo de objetos

Tipos de objetos en R:

Objetos en R:

  • vector(): Vectores

  • matrix(): Matrices, es decir, arreglos de \(2\) dimensiones.

  • array(): Arreglos con más de dos dimensiones.

  • data.frame(): Arreglos para manipular bases de datos.

  • list(): Las listas tienen la capacidad de guardar vectores, matrices, funciones, listas, etc.

  • function(): La creación de funciones es útil cuando se tiene una gran cantidad de código y se quiere optimizar el proceso.

La función class() es útil para identificar el tipo es el objeto con el cual se está trabajando; otras funciones de utilidad son attributes() y str.

Por ejemplo utilicemos estas funciones con la base de datos iris que se encuentra disponible en R.

class(iris)
  [1] "data.frame"
attributes(iris)
  $names
  [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"     
  
  $class
  [1] "data.frame"
  
  $row.names
    [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
   [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
   [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
   [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
   [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
   [91]  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108
  [109] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
  [127] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
  [145] 145 146 147 148 149 150
str(iris)
  'data.frame': 150 obs. of  5 variables:
   $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
   $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
   $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
   $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
   $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

6 Cálculo

Grupo de funciones:

Funciones matemáticas:

  • Operaciones aritméticas que se pueden realizar en R:
?Arithmetic
  • funciones trigonométricas:
?Trig 
  • Más funciones:
?Special

6.1 Operaciones elementales

Dados \(a\) y \(b\), en \(\mathbb{R}\):

# forma 1
a<-8
b<-2

a  # muestra lo que se guardo en a
  [1] 8
b  # muestra lo que se guardo en b
  [1] 2
# forma 2

(a<-8)
  [1] 8
(b<-2)
  [1] 2
# forma 3

a=8; a
  [1] 8
b=2; b
  [1] 2
  • Suma: \(a+b\)
a+b  
  [1] 10
  • Resta: \(a-b\)
a-b  
  [1] 6
  • Multiplicación: \(a∗b\)
a*b  
  [1] 16
  • División: \(a/b\)
a/b  
  [1] 4
  • División entera: se tiene la parte entera de la división: \(a%/%b\)
a%/%b  
  [1] 4
  • Módulo: se tiene el residuo al dividir dos números: \(a%%b\)
a%%b  
  [1] 0
  • Potencia: \(a^b\)
a^b  
  [1] 64
  • Raíz cuadrada: \(sqrt()\)
sqrt(a)  
  [1] 2.828427
  • Logaritmos: \(log()\), \(log10()\)
log(a)  
  [1] 2.079442
  • Exponente de un número: \(exp()\)
exp(a)  
  [1] 2980.958
  • Valor absoluto de un número: \(abs()\)
abs(a) 
  [1] 8
  • Funciones trigonométricas: \(sin()\), \(cos()\), \(asin()\) y \(acos()\).
sin(a)
  [1] 0.9893582

6.2 Graficos de funciones

Función polinómica: \[ f(x)=x^2+x \]

n<-100
x<-seq(-n,n, by=10)
fx<-x^2+x
plot(x, fx, pch = "❤️",col="red") # Grafico

Creación de un data.frame

dat<-data.frame(x,fx) # creación de un data.frame

Generación de un gráfico con funciones del paquete ggplot2:

p<-ggplot(dat, aes(x, fx))+
   geom_line(col="purple",size=2)+ # geom_line agrega la línea
   theme_dark() # theme_dark especifica el diseño del gráfico

ggplotly(p)

Función racional:

\[ f(x)=\frac{x}{1+x^2} \]

n<-100
x<-seq(-n,n, by=0.5)
fx<- x/(1+x^2)

dat<-data.frame(x,fx) # creación de un objeto data.frame
p<-ggplot(dat, aes(x, fx))+
   geom_line()+    #  geom_line: generar la línea
   geom_point(aes(x, fx))  # geom_point: agrega los puntos

ggplotly(p)
p<- ggplot(dat, aes(x, fx, group=1)) +
    geom_line(linetype = "dashed",color="black", size=1)+ #  geom_line generar la línea
    geom_point()  # geom_point agrega los puntos

ggplotly(p)

6.3 Integración

Dada la función \[ f(x)=e^{-\frac{x^2}{2}} \] integrarla en el intervalo \([1,\infty)\)

f<-function(x) 
    {
     exp(-x^2/2)
    }

integrate(f, lower=1, upper=Inf)
  0.3976897 with absolute error < 1.2e-06

Dada la función \[ f(x)=\frac{\sin(x)}{x+1} \] integrarla en el intervalo \([0,1]\)

f<-function(x) 
    {
     sin(x)/(x+1)
    }

integrate(f, lower=0, upper=1)$value
  [1] 0.284227

Calcular la siguiente integral

\[ F_{X}(x)=P(X<1)= \int_{-\infty}^{1}\frac{1}{\sqrt{2\pi}}e^{- \frac{x^2}{2}}dx \]

#--- Definición de una función
h <- function(x){
                (1/sqrt(2*pi))*exp(-(x^2)/2)
                }


#--- valor exacto de la integral
integrate(h,-Inf,1)$value
  [1] 0.8413448

7 Álgebra

Las funciones que se emplean en esta sección pertenecen al paquete base; lo cual se puede verificar ejecutando la línea library(help=base).

7.1 Vectores

Existen varias formas de crear vectores en R, una de ellas es con la función c(), la cual ayuda a agrupar datos numéricos, alfabéticos y alfanuméricos. Vectores de números:

a <- c(-3,-2,-1, 1, 2, 3, 4, 5); a
  [1] -3 -2 -1  1  2  3  4  5
b <- -3:5; b
  [1] -3 -2 -1  0  1  2  3  4  5
f <- seq(from = -3, to = 5, by = 2);f
  [1] -3 -1  1  3  5
g <- seq(from = -3, to = 5, length = 30);g
   [1] -3.00000000 -2.72413793 -2.44827586 -2.17241379 -1.89655172 -1.62068966
   [7] -1.34482759 -1.06896552 -0.79310345 -0.51724138 -0.24137931  0.03448276
  [13]  0.31034483  0.58620690  0.86206897  1.13793103  1.41379310  1.68965517
  [19]  1.96551724  2.24137931  2.51724138  2.79310345  3.06896552  3.34482759
  [25]  3.62068966  3.89655172  4.17241379  4.44827586  4.72413793  5.00000000

Vectores de letras:

y <-c("a","b","c");y
  [1] "a" "b" "c"
let <-LETTERS[1:10];let
   [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
# vectores
a<-c(2,4,6) # la función c concatena elementos
b<-c(1,3,5)
# Suma de vectores: a+b
a+b
  [1]  3  7 11
# Resta de vectores:    a-b
a-b
  [1] 1 1 1
# Multiplicación de vectores:   a∗b
a*b
  [1]  2 12 30
# División de vectores a/b
a/b
  [1] 2.000000 1.333333 1.200000
# División entera:  a%/%b
a%/%b
  [1] 2 1 1
# Potencia: a^{b}
a^b
  [1]    2   64 7776
# Raíz cuadrada:    sqrt()
sqrt(a)
  [1] 1.414214 2.000000 2.449490
# logaritmo 
log(a)
  [1] 0.6931472 1.3862944 1.7917595
# seno()
sin(b)
  [1]  0.8414710  0.1411200 -0.9589243

Funciones:

  • diff(): Diferencia entre los elementos de un vector dado.
diff(a)
  [1] 2 2
  • cumsum(): Se obtiene la suma de los elementos de un vector dado.
cumsum(a)
  [1]  2  6 12
  • cumprod(): Se obtiene el producto de los elementos de un vector dado.
cumprod(a)
  [1]  2  8 48
  • cummax(): Se obtiene el máximo de los elementos de un vector dado.
cummax(a)
  [1] 2 4 6
  • cummin(): Se obtiene el mínimo de los elementos de un vector dado.
cummin(a)
  [1] 2 2 2

7.2 Matrices

Una matriz:

  • Es un arreglo con dos dimensiones.

  • Es una colección de datos del mismo tipo.

  • Es un vector con un atributo adicional (dim).

Una matriz se puede crear con la función matrix(). Dada la matriz \(A\):

  • A[i,j]: indica la entrada (i,j) de la matriz \(A\).

  • A[i,]: indica la i-ésima fila de la matriz \(A\).

  • A[,j]: indica la j-ésima columna de la matriz \(A\).

Matrices:

\[ A=\begin{pmatrix} 2 & 5 & 0\\ 7 & 3 & 8\\ 3 & 0 & 1 \end{pmatrix} \]

A<-matrix(c(2,7,3,5,3,0,0,8,1),3,3) # Capturar la información por columna
A
       [,1] [,2] [,3]
  [1,]    2    5    0
  [2,]    7    3    8
  [3,]    3    0    1

\[ B=\begin{pmatrix} 1 & 1 & 2\\ 2 & 2 & 3\\ 4 & 6 & 1 \end{pmatrix} \]

B<-matrix(c(1,2,4,1,2,6,2,3,1),3,3)
B
       [,1] [,2] [,3]
  [1,]    1    1    2
  [2,]    2    2    3
  [3,]    4    6    1

Funciones para matrices en R:

  • dim(): Devuelve las dimensiones de la matriz.
dim(A)
  [1] 3 3
  • sum(): Devuelve la suma de todas las entradas de la matriz.
sum(A)
  [1] 29
  • prod(): Devuelve el producto de todas las entradas de la matriz.
prod(A)
  [1] 0
  • mean(): Devuelve la media aritmética de todas las entradas de la matriz.
mean(A)
  [1] 3.222222
  • colSums(): Devuelve las sumas por columnas de la matriz.
colSums(A)
  [1] 12  8  9
  • rowSums(): Devuelve las sumas por filas de la matriz.
rowSums(A)
  [1]  7 18  4
  • colMeans(): Devuelve las medias aritméticas por columnas de la matriz.
colMeans(A)
  [1] 4.000000 2.666667 3.000000
  • rowMeans(): Devuelve las medias aritméticas por filas de la matriz.
rowMeans(A)
  [1] 2.333333 6.000000 1.333333
  • diag(): Devuelve la diagonal de la matriz. La diagonal de una matriz cuadrada son los elementos que están en la diagonal principal de la matriz dada.
diag(A) # diagonal de la matriz A
  [1] 2 3 1
  • La traza de una matriz cuadrada \(A_{k\times k}\), es la suma los elementos de la diagonal

\[ tr(A)=\sum_{i=1}^ka_{ij} \]

sum(diag(A)) # Traza de la matriz A
  [1] 6
  • Para una matriz cuadrada, el determinante está dado por \[ |A|=\sum_{j=1}^{k}a_{ij}|A_{ij}|(-1)^{i+j} \] Con det() se calcula el determinante de una matriz.
det(A) 
  [1] 91
  • t(): Calcula la transpuesta de la matriz \(A\).
t(A) 
       [,1] [,2] [,3]
  [1,]    2    7    3
  [2,]    5    3    0
  [3,]    0    8    1
  • Para una matriz cuadrada no singular, \(A\), existe una única matriz inversa \(B\), tal que \(AB=I\) de igual modo \(BA=I\).

Con la función solve(), se calcula la inversa de una matriz.

solve(A) # inversa de la matriz A
              [,1]        [,2]       [,3]
  [1,]  0.03296703 -0.05494505  0.4395604
  [2,]  0.18681319  0.02197802 -0.1758242
  [3,] -0.09890110  0.16483516 -0.3186813
  • Con eigen() se calcula la descomposición espectral de una matriz. Con eigen() se pueden obtener los valores y vectores propios obtenidos de la descomposición espectral de una matriz cuadrada:

\[ A=\sum_{i=1}^{κ}\lambda_{i}e_{i}e_{i}´ \]

eigen(A)
  eigen() decomposition
  $values
  [1]  9.523447+0.000000i -1.761724+2.540018i -1.761724-2.540018i
  
  $vectors
                [,1]                  [,2]                  [,3]
  [1,] -0.5432879+0i  0.6371432+0.0000000i  0.6371432+0.0000000i
  [2,] -0.8174795+0i -0.4793513+0.3236711i -0.4793513-0.3236711i
  [3,] -0.1912212+0i -0.3749493-0.3448492i -0.3749493+0.3448492i

Eigenvalores: 9.523447+0i, -1.761724+2.540018i, -1.761724-2.540018i

Eigenvalores: -0.543288+0i, -0.81748+0i, -0.191221+0i, 0.637143+0i, -0.479351+0.323671i, -0.374949-0.344849i, 0.637143+0i, -0.479351-0.323671i, -0.374949+0.344849i

  • svd(): Descomposición en valores singulares de una matriz. Para una matriz \(A\) de \(m\times k\), existe una matriz ortogonal \(U\) de \(m\times m\) y \(V\) ortogonal de \(k\times k\), tal que \[ A=UAV' \] La descomposición en valores singulares de \(A\) puede escribirse como

\[ A=\sum_{i=1}^{r}\lambda_{i}\mathbf{u}_{i}\mathbf{v}_{i}' \]

svd(A)
  $d
  [1] 11.711634  4.577856  1.697312
  
  $u
             [,1]       [,2]       [,3]
  [1,] -0.2639427 -0.9630370 -0.0537965
  [2,] -0.9376196  0.2430923  0.2485471
  [3,] -0.2262825  0.1160428 -0.9671247
  
  $v
             [,1]        [,2]       [,3]
  [1,] -0.6634489  0.02702149 -0.7477335
  [2,] -0.3528604 -0.89253749  0.2808315
  [3,] -0.6597917  0.45016293  0.6016878
  • qr(): Descomposición QR de una matriz. La descomposición o factorización QR de una matriz es una descomposición de la matriz dada, \(A\), como producto de una matriz ortogonal,\(Q\), por una triangular superior, \(R\), tal que \[ A=QR \]
qr(A)
  $qr
             [,1]       [,2]      [,3]
  [1,] -7.8740079 -3.9370039 -7.493007
  [2,]  0.8890009  4.3011626 -1.278724
  [3,]  0.3810004  0.6312972 -2.686951
  
  $rank
  [1] 3
  
  $qraux
  [1] 1.254000 1.775541 2.686951
  
  $pivot
  [1] 1 2 3
  
  attr(,"class")
  [1] "qr"
  • A %*% B : producto de las matrices \(A\) y \(B\)
A %*% B
       [,1] [,2] [,3]
  [1,]   12   12   19
  [2,]   45   61   31
  [3,]    7    9    7
  • solve(A,b) : solución del sistema de ecuaciones \(Ax=b\).

Dado el sistema

\[ x+y=7 \]

\[ x-2y=1 \]

Encontrar el valor de \(x\) y \(y\). En este caso

\[ A=\begin{pmatrix} 1 & 1 \\ 1 & -2 \end{pmatrix} \]

y \[ b=\begin{pmatrix} 7 \\ 1 \end{pmatrix} \]

A<-matrix(c(1,1,1,-2),2,2)
A
       [,1] [,2]
  [1,]    1    1
  [2,]    1   -2
b<-c(7,1)
b
  [1] 7 1
solve(A,b)
  [1] 5 2

Luego \(x=5\) y \(y=2\)

8 Probabilidad

8.1 Algebra de conjuntos

Definición: Si cada elemento de \(A\) pertenece también a \(B\), entonces \(A\subset B\).

Definición: El complemento de un conjunto \(A\) con respecto a \(\Omega\) denotado por \(A^c\), es el conjunto de todos los elementos que están en \(\Omega\) pero que no están en \(A\).

Definición: Dado \(A\) y \(B\) dos conjuntos de \(\Omega\) la unión de \(A\) y \(B\), dado por \(A\cup B\), es el conjunto de todos los elementos que están en \(A\) o en \(B\) o en ambos.

Definición: Dado \(A\) y \(B\) dos conjuntos de \(\Omega\) la intersección de \(A\) y \(B\), dado por \(A\cap B\), es el conjunto que contiene a todos los elementos que están en \(A\) y en \(B\).

Definición: Dos conjuntos \(A\) y \(B\) definidos en \(\Omega\) se dice que son mutuamente excluyentes o disjuntos si no tienen elementos en común, es decir, \(A\cap B= \varnothing\)

Definición: Dados \(A\) y \(B\) conjuntos definidos en \(\Omega\), el conjunto de elementos que están en \(A\) pero que no están en \(B\) es el conjunto diferencia y se denota con \(A-B\).

Operaciones en R:

Dado: \(A=\{a,k,m\}\), \(B=\{b,k,f\}\), encontrar \(A\cup B\) y \(A\cap B\) :

A<-c("a","k","m")
B<-c("b","k","f")
union(A,B) # Conjunto unión
  [1] "a" "k" "m" "b" "f"
intersect(A,B) # Conjunto intersección
  [1] "k"
setdiff(A,B) # Conjunto diferencia.
  [1] "a" "m"

Ejercicio:

  • Dado \(U=\{1,3,5,7,9\}\), \(A=\{1,3\}\) y \(B=\{1,5,7\}\). Calcular \(U\cap A\) y \(U\cap B\)

  • Dado \(A=\{1,3,5\}\) y \(B=\{1,5,7\}\), calcular \(A-B\)

8.2 Métodos de conteo

El factorial de un número esta dado por \[ n!=\prod_{k=1}^{n} k \] Ejemplo:

n<-4
factorial(n) # factorial de 4
  [1] 24

Definición: De un conjunto de \(n\) elementos distintos se seleccionan \(k\) elementos uno a la vez sin remplazo. El resultado es una perpetuación de \(n\) elementos tomados \(k\) a la vez. Así el número de ordenamientos distintos de \(k\) objetos seleccionados sin remplazo de una colección de \(n\) objetos diferentes está dado por:

\[ P_{n,k}=\frac{n!}{(n-k)!} \] Ejercicio: Calcular \(P_{4,2}\), es decir, \(n=4\) y \(k=2\)

n<-4
k<-2
  
factorial(n)/factorial(n-k)
  [1] 12

Si el muestreo es realizado con remplazo, entonces el número de formas en las que se puede seleccionar una muestra ordenada de \(k\) objetos de un conjunto de \(n\) objetos distintos es

\[ n^k \]

Ejemplo:

n^k
  [1] 16

Definición: Dado un conjunto de \(n\) elementos diferentes, cada subconjunto de tamaño \(k\) elegido del conjunto sin remplazo, se le conoce como combinación de \(n\) elementos \(k\) a la vez. El número de estas combinaciones está dado por

\[ C_{n,k}=\binom{n}{k} = \frac{n!}{k!(n - k)!} \]

Así el número de formas en la cual se puede seleccionar una muestra (no ordenada) de \(k\) objetos sin remplazo de un conjunto con \(n\) objetos diferentes, está dado por \(C_{n,k}\).

Ejemplo:

n<-4
k<-2
choose(n, k) # número de combinaciones
  [1] 6

Si el muestreo es realizado con remplazo, entonces el número de formas en la cual se puede seleccionar una muestra de \(k\) objetos de un conjunto con \(n\) objetos diferentes está dado por \[ \frac{(n-1+k)!}{k!(n-1)!} \]

Ejemplo:

n<-4
k<-2
factorial(n-1+k)/(factorial(k)*factorial(n-1))
  [1] 10

Resumen:

Muestra Ordenada No ordenada
Sin remplazo \(P_{n,k}=\frac{n!}{(n-k)!}\) \(C_{n,k}= \frac{n!}{k!(n - k)!}\)
Con remplazo \(n^k\) \(\frac{(n-1+k)!}{k!(n-1)!}\)

La función nsamp del paquete prob también ayudan con los cálculos del Resumen anterior.

Instalación del paquete prob

install.packages("prob")
library(prob)

Ejemplo de: \[ P_{n,k}=\frac{n!}{(n-k)!} \]

nsamp(n=4,k=2,replace=F,ordered = T)
  [1] 12

Ejemplo de: \[ n^k \]

nsamp(n=4,k=2,replace=T,ordered = T)
  [1] 16

Ejemplo de \[ C_{n,k}= \frac{n!}{k!(n - k)!} \]

nsamp(n=4,k=2,replace=F,ordered = F)
  [1] 6

Ejemplo de

\[ \frac{(n-1+k)!}{k!(n-1)!} \]

nsamp(n=4,k=2,replace=T,ordered = F)
  [1] 10

Ejercicio: Generar un número aleatorio

sample(1:23,1)
  [1] 7

8.3 Variables aleatorias

#install.packages("vistributions")
library(vistributions)

Si \(X\), tiene distribución normal estándar, entonces \[ f_{X}(x)=\frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}} \] donde \(-\infty<x<\infty\)

Ejemplo: Sea \(X\) una v.a con distribución normal con media \(0\) y varianza \(1\), calcular \[ P(1\leq X \leq 3) \]

vdist_normal_prob(c(1,3),mean = 0,sd=1,type="both")