2.1. ¿Cuál será el resultado de ejecutar las siguientes instrucciones?:

x = c(1,3,5,7,9) 
y = c(2,4,6,7,11,12) 
x+1 
## [1]  2  4  6  8 10
y*2
## [1]  4  8 12 14 22 24
length(x) & length(y)
## [1] TRUE
x + y
## Warning in x + y: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1]  3  7 11 14 20 13

“No tienen la misma londitud, no se pueden sumar”

sum(x>5) & sum(x[x>5])
## [1] TRUE
sum(x>5 | x< 3)
## [1] 3
y[2]
## [1] 4
y[-2] 
## [1]  2  6  7 11 12
y[x]
## [1]  2  6 11 NA NA
  1. ¿Que significa NA?
(NA)
## [1] NA
y[y>=8]
## [1] 11 12

2.2. Un conductor europeo de viaje por Estados Unidos apunta las millas recorridas por su coche cada vez que llena el tanque de gasolina. La relación de las últimas 10 veces que lo ha llenado es la siguiente:

  1. Crea una variable llamada “millas” que contenga los datos anotados
millas =c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)
  1. Crea una nueva variable “kms” y asígnale el valor de “millas” transformado en kms (una milla son 1,609 km)
kms=millas*1609
  1. ¿Qué resultado produce la función diff aplicada sobre los datos anteriores?
diff(millas)
## [1]  424  333   16  533  310  168  422 -489   44
diff(kms)
## [1]  682216  535797   25744  857597  498790  270312  678998 -786801   70796
  1. ¿Qué funciones son adecuadas para resumir estos datos?
summary(kms)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 104972769 106197218 107323518 106958919 107788519 108522223

2.3. Una persona dispone de un contrato de pago mínimo telefónico, con el que cuenta poder controlar sus gastos. A pesar de esto cada mes tiene que pagar cantidades diferentes, que finalmente decide revisar. En el último año estas cantidades, en euros, han sido las siguientes: 47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32

  1. ¿Cuánto le ha costado la factura del último año?
facturas=c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)
tail(facturas,n=1)
## [1] 32
  1. ¿Cuánto ha pagado en promedio cada mes?
mean(facturas)
## [1] 39.83333
  1. ¿Cuáles son las cantidades mínimas y máximas pagadas?
min(facturas)
## [1] 30
max(facturas)
## [1] 49
  1. ¿En qué mes se realizó cada pago?
meses=c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")
matrix = cbind (meses, facturas)
matrix
##       meses facturas
##  [1,] "Ene" "47"    
##  [2,] "Feb" "32"    
##  [3,] "Mar" "40"    
##  [4,] "Abr" "36"    
##  [5,] "May" "49"    
##  [6,] "Jun" "31"    
##  [7,] "Jul" "49"    
##  [8,] "Ago" "30"    
##  [9,] "Sep" "49"    
## [10,] "Oct" "35"    
## [11,] "Nov" "48"    
## [12,] "Dic" "32"
  1. ¿Cuantos meses pagó más de 40 euros?
sum(facturas > 40)
## [1] 5
  1. ¿Qué porcentaje del gasto total representa esta cantidad?
parcial=sum(facturas[facturas>40])#
porcentaje=parcial/sum(facturas)*100
porcentaje
## [1] 50.62762

2.4. Con los datos siguientes: 61, 88, 73, 49, 41, 72, 99, 07, 12, 13, 87, 91, 05, 17, 97

  1. Haz un diagrama de porcentual
diagrama=c(61, 88, 73, 49, 41, 72, 99, 07, 12, 13, 87, 91, 05, 17, 97)
etiquetas= c("1", "2", "3", "4", "5") 
pie(diagrama, main="Diagrama porcentual")

  1. Obtén resúmenes numéricos de los datos
head(diagrama)
## [1] 61 88 73 49 41 72
  1. ¿Qué diferencias hay entre summary(x) y fivenum(x)?
summary(diagrama)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00   15.00   61.00   54.13   87.50   99.00
fivenum(diagrama)
## [1]  5.0 15.0 61.0 87.5 99.0

“R/ Se puede ver que”summary” muestra los datos un poco mas especificos, mientras “fivenum” los ubica en un vector sin mencionar a que tipo de dato pertenece.”

2.5. R permite generar datos aleatorios con gran facilidad mediante instrucciones específicas que empiezan con “r” (rnorm, rpois, rbinom,…).

  1. Genera 100 valores de una distribución normal con rnorm(100).
CIEN_VALORES= rnorm(100)
CIEN_VALORES
##   [1] -1.332258662 -0.136139790  0.099560969  1.336278399 -1.031388960
##   [6] -0.225046513  1.755281691  1.397596273 -1.577527742 -1.259075675
##  [11] -1.306179074 -1.027254033 -0.496007598  1.573740708 -0.739747293
##  [16] -1.825214873 -0.209195433 -0.039797468 -0.416543273 -1.287628274
##  [21] -0.205132630 -0.728168850 -0.672619088  2.270708551 -0.568658269
##  [26]  1.605731061  0.025590383  0.920973594  0.492785215  1.595852658
##  [31]  0.242031229 -0.086698899  0.402815638 -1.470090688  0.389781026
##  [36]  0.872378370  2.569235051 -0.188291139 -0.752223063  1.732987882
##  [41]  1.600403046 -1.036171265 -1.651159386  0.738441322 -1.854598753
##  [46]  0.979125976  1.614613530 -0.713387210 -1.019800303  1.512661945
##  [51] -2.569556473  0.552535578  1.817916092  0.523654391  0.803417786
##  [56] -0.746464728 -0.019333214 -1.244518220 -0.414824949  0.169066998
##  [61] -0.779669375 -0.310405439 -0.327429968 -2.875736668  1.314734710
##  [66] -0.163446816 -1.097041739  0.571628316  0.011533033  0.294528285
##  [71] -0.535321137  1.094254984 -0.386410571 -0.870080090  1.315615780
##  [76] -0.092227269 -0.447436819  0.699553454  0.953936934  0.829552384
##  [81]  0.600764121  0.250941780  0.001711249  0.241833946  1.290193330
##  [86] -0.616424961  1.846728514 -1.614186830  0.579600655 -1.662519494
##  [91]  1.149814293  0.040140557 -1.184278076 -1.026133306  0.890274847
##  [96] -0.059831283  0.368848349  1.307796397 -0.555638904  1.364942900
  1. Realiza un histograma de los valores. Repite el proceso un par de veces. ¿Qué observas?
hist(CIEN_VALORES)

Cuando se ejecuta el programa los valores cambian y junto con ellos el histograma.

  1. Realiza un resumen numérico de los datos.
summary(CIEN_VALORES)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -2.87574 -0.74143 -0.02957  0.03159  0.87685  2.56924

2.6. De forma similar al ejercicio genera 30 valores de una distribución binomial de parámetros (n=5 y p=0,9).

VALBINOM= rbinom(30, size=5, prob=0.9)
VALBINOM
##  [1] 4 4 5 5 5 5 4 5 5 4 5 4 3 4 5 3 5 4 4 4 5 5 4 5 5 4 4 5 4 5
  1. Representa los resultados con un diagrama de barras o de pastel.
VALBINOM
##  [1] 4 4 5 5 5 5 4 5 5 4 5 4 3 4 5 3 5 4 4 4 5 5 4 5 5 4 4 5 4 5
pie(table(VALBINOM), main="Distribución Binomial")

  1. Realiza un resumen numérico de los datos y compáralo con el del ejercicio anterior. ¿Qué deberías hacer para obtener un resumen similar?
summary(VALBINOM)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   4.000   4.500   4.433   5.000   5.000

“R/ La grafica de diagrama de pastel muestra mayor variación que el histograma anterior, por lo que se deberia tener una distribucion normal para que sean mas similares ambas graficas.”

2.7. El número de fallos en los 23 primeros intentos de puesta en órbita de un satélite fue: 0 1 0 NA 0 0 0 0 0 1 1 1 0 0 3 0 0 0 0 0 2 0 1 (NA significa ”not available” – se ha perdido el dato).

  1. Representa gráficamente estos datos. Qué representación es más adecuada una diagrama boxplot o un diagrama de barras?
NUM_FALLOS = c(0, 1, 0, NA, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1)
boxplot(NUM_FALLOS)

barplot(NUM_FALLOS)

R/ “El diagrama de cajas no nos proporciona la información de forma precisa, habría que suministrar otros datos, en mi opinión es mas adecuada la representación de un diagrama de barras.”

  1. Tabula los datos y calcula el número medio de errores (Puedes tener que probar con mean(x,na.rm=TRUE) o x[!is.na(x)] para prescindir de los valores faltantes.
errores = mean(NUM_FALLOS,na.rm = TRUE)
errores
## [1] 0.4545455

En una encuesta en la que se evalúa el funcionamiento de un curso se han recogido las siguientes respuestas de 10 estudiantes a tres preguntas P1, P2 y P3:

Estudiantes= c("P1","P2","P3")
E1=c(3,5,1)
E2=c(3,5,3)
E3=c(3,2,1)
E4=c(4,2,3)
E5=c(3,5,3)
E6=c(4,2,3)
E7=c(3,2,1)
E8=c(4,5,3)
E9=c(4,5,1)
E10=c(3,2,1)

tabla = data.frame(Estudiante = Estudiantes, E1 = E1, E2 = E2, E3 = E3, E4 = E4, E5 = E5, E6 = E6, E7 = E7, E8 = E8, E9 = E9, E10 = E10)

print(tabla)
##   Estudiante E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
## 1         P1  3  3  3  4  3  4  3  4  4   3
## 2         P2  5  5  2  2  5  2  2  5  5   2
## 3         P3  1  3  1  3  3  3  1  3  1   1

“R/ a) datos mediante c().”

  1. Tabula los resultados de cada pregunta por separado.
datos=matrix(c(3,5,1,3,5,3,3,2,1,4,2,3,3,5,3,4,2,3,3,2,1,4,5,3,4,5,1,3,2,1),nrow = 3)
rownames(datos)=c("P1","P2","P3")
colnames(datos)=paste0("E",1:ncol(datos))
datos
##    E1 E2 E3 E4 E5 E6 E7 E8 E9 E10
## P1  3  3  3  4  3  4  3  4  4   3
## P2  5  5  2  2  5  2  2  5  5   2
## P3  1  3  1  3  3  3  1  3  1   1
P1=datos[1,]
P1
##  E1  E2  E3  E4  E5  E6  E7  E8  E9 E10 
##   3   3   3   4   3   4   3   4   4   3
P2=datos[2,]
P2
##  E1  E2  E3  E4  E5  E6  E7  E8  E9 E10 
##   5   5   2   2   5   2   2   5   5   2
P3=datos[3,]
P3
##  E1  E2  E3  E4  E5  E6  E7  E8  E9 E10 
##   1   3   1   3   3   3   1   3   1   1
  1. Realiza tablas de contingencia cruzadas para cada pregunta, de 2 en 2 y las 3 a la vez.
tabla=c("P1","P2","P3")
matriz= matrix(tabla,3,10,byrow=TRUE)
ROW = rownames(matriz)=c("P1","P2","P3")
COL = colnames(matriz)=paste("Estudiantes",1:10)
matriz[2,]
##  Estudiantes 1  Estudiantes 2  Estudiantes 3  Estudiantes 4  Estudiantes 5 
##           "P2"           "P3"           "P1"           "P2"           "P3" 
##  Estudiantes 6  Estudiantes 7  Estudiantes 8  Estudiantes 9 Estudiantes 10 
##           "P1"           "P2"           "P3"           "P1"           "P2"
  1. Haz un diagrama de barras apiladas de las preguntas 2 y 3.
grafica1= barplot(matrix(c(P1,P2),nrow=2,byrow=T),
              main = "GRAFICA DEL CURSO",
              xlab = "Estudiantes", col = c("pink","violet"))
legend("topleft",c("P2","P3"), fill = c("pink","violet"))

  1. Haz un diagrama de barras con las tres preguntas simultáneamente.
grafica2=barplot(datos,
                 main = "GRAFICA DEL CURSO SEGUNDA PARTE",
                 xlab = "Estudiantes",col = c("blue","pink","violet"),beside = TRUE)
legend("topleft",c("Pregunta 1","Pregunta 2","Pregunta 3"),
       fill = c("blue","pink","violet"))

2.9. Genera 2 vectores de 50 valores cada de una distribución normal con rnorm (50).

vector1 = rnorm(50)
print(vector1)
##  [1] -0.60101460 -0.86346203 -0.44659949 -1.11097402  2.00716379 -0.05644252
##  [7] -1.98484206 -0.02235612 -0.19193580  1.49047576  0.27262974 -0.10154471
## [13] -0.99869045 -0.79417198 -2.39501154  0.33696864 -0.51970653 -0.70677004
## [19]  0.84807555 -0.71072682 -0.43007325  0.16988105  0.70812823 -1.12488186
## [25]  0.42839323 -0.25264225 -1.19676355 -1.34047353 -1.18740970  1.29597749
## [31]  0.69214584  1.12392527 -0.75568411 -1.21859025 -2.27647374  0.89791319
## [37] -1.33706445 -0.98309000 -0.57021017 -0.92528624  0.02508351  0.50558367
## [43] -0.67828466 -0.07334505 -0.67653961 -1.39650148  0.04294547 -1.02139944
## [49] -0.65633380  0.69205432
vector2 = rnorm(50)
print(vector2)
##  [1]  0.68992186 -0.19778799  1.29926815  0.93649843  1.04102226 -1.05121630
##  [7] -2.19412589  0.26360956  0.23829973  0.30119816  0.11335976  0.21059209
## [13] -0.37415779  0.63378971 -0.78322230 -0.95666129 -0.68274364 -0.70879924
## [19]  0.81642948  0.20272297 -0.16629595 -0.61043638  1.15756104 -0.36214112
## [25]  0.69780348  1.38593460  0.99697252  0.97279452 -0.44165468 -0.68426473
## [31] -0.91811944 -1.80102773 -0.48624818  1.14262949 -2.20575371 -0.83251157
## [37] -0.25713834 -0.25143693 -1.79634651  0.26453093 -0.00396740  0.74612304
## [43] -0.02322536 -0.50189939  0.15881228  0.53647032  0.63940486 -0.21720039
## [49] -0.53054381  2.37389635
  1. Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector.
shapiro_test_vector1 = shapiro.test(vector1)
print(shapiro_test_vector1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector1
## W = 0.98295, p-value = 0.6812
shapiro_test_vector2 = shapiro.test(vector2)
print(shapiro_test_vector2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector2
## W = 0.97907, p-value = 0.5136
  1. Determine si entre los vectores hay o no diferencias significativas, t-student test
t_test_result = t.test(vector1, vector2)
print(t_test_result)
## 
##  Welch Two Sample t-test
## 
## data:  vector1 and vector2
## t = -1.7963, df = 98, p-value = 0.07553
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.70924238  0.03529556
## sample estimates:
##   mean of x   mean of y 
## -0.36135902 -0.02438561

2.10. Genera un vector de 50 valores por medio de rnorm y un vector de 50 valores por medio rbinom.

vector_rnorm =rnorm(50)
print(vector_rnorm)
##  [1] -0.44179640  0.22818019 -0.42145562  0.16797986  0.69325967 -0.39199459
##  [7] -0.83139242  0.11159238 -1.35854572 -0.91769239  0.38332229 -1.44122209
## [13]  0.70966988  0.11330529  0.71649675 -0.72575944  0.97279077  0.17978315
## [19] -0.38083825 -0.86192949  0.33670963  0.40218927  0.61161370 -0.09506194
## [25] -0.20253256  0.06252016 -0.59910684  0.34646906  0.21561609  0.36058062
## [31] -0.15324753 -0.97957806 -0.23993057  2.76723296  1.33145900 -0.48352584
## [37]  0.30677836  0.44959846 -1.51488429 -1.35198177 -0.19314908  1.29609043
## [43] -0.51940223 -1.23450859 -0.32888286  0.36931722  1.99808705 -0.14813564
## [49]  0.31689722 -1.08560308
vector_rbinom =rbinom(50, size = 1, prob = 0.5)
print(vector_rbinom)
##  [1] 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1
## [39] 1 0 1 1 0 1 0 0 0 0 0 1
  1. Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector
shapiro_test_rnorm = shapiro.test(vector_rnorm)
print(shapiro_test_rnorm)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector_rnorm
## W = 0.95619, p-value = 0.06156
shapiro_test_rbinom = shapiro.test(vector_rbinom)
print(shapiro_test_rbinom)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector_rbinom
## W = 0.63157, p-value = 5.904e-10
  1. Determine si entre los vectores hay o no diferencias significativas, t-student test
t_test_result =t.test(vector_rnorm, vector_rbinom)
print(t_test_result)
## 
##  Welch Two Sample t-test
## 
## data:  vector_rnorm and vector_rbinom
## t = -3.3536, df = 79.277, p-value = 0.001225
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7474932 -0.1906915
## sample estimates:
##   mean of x   mean of y 
## -0.02909236  0.44000000