#PREGUNTA 2
2.1. ¿Cuál será el resultado de ejecutar las siguientes instrucciones?: a) x = c(1,3,5,7,9)

x = c(1,3,5,7,9)
print(x)
## [1] 1 3 5 7 9
  1. y = c(2,4,6,7,11,12)
y = c(2,4,6,7,11,12)
print(y)
## [1]  2  4  6  7 11 12
  1. x+1
x+1
## [1]  2  4  6  8 10
  1. y*2
y*2
## [1]  4  8 12 14 22 24
  1. length(x) and length(y)
print("longitud de x: ")
## [1] "longitud de x: "
length(x) 
## [1] 5
print("longitud de y: ")
## [1] "longitud de y: "
length(y)
## [1] 6
  1. x + y
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
  1. sum(x>5) and sum(x[x>5])
sum(x>5)
## [1] 2
sum(x[x>5])
## [1] 16
  1. sum(x>5 | x< 3)
sum(x>5 | x< 3) 
## [1] 3
  1. y[2]
 y[2]
## [1] 4
  1. y[-2]
y[-2]
## [1]  2  6  7 11 12
  1. y[x]
y[x]
## [1]  2  6 11 NA NA
  1. (¿Que significa NA?) #R/ NA se usa para representar datos perdidos, omitidos o faltantes (NA significa ”not available” – se ha perdido el dato)

  2. y[y>=8]

y[y>=8] 
## [1] 11 12

#PREGUNTA 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 = 1.609*millas
print(kms)
##  [1] 104972.8 105655.0 106190.8 106216.5 107074.1 107572.9 107843.2 108522.2
##  [9] 107735.4 107806.2
  1. ¿Qué resultado produce la función diff aplicada sobre los datos anteriores?
kms_diff= diff(kms)
print("kms_diff:")
## [1] "kms_diff:"
print(kms_diff)
## [1]  682.216  535.797   25.744  857.597  498.790  270.312  678.998 -786.801
## [9]   70.796
millas_diff= diff(millas)
print("millas_diff:")
## [1] "millas_diff:"
print(millas_diff)
## [1]  424  333   16  533  310  168  422 -489   44
  1. ¿Qué funciones son adecuadas para resumir estos datos?
resum_kms=summary(kms)
print("resum_kms:")
## [1] "resum_kms:"
print(resum_kms)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  104973  106197  107324  106959  107789  108522
resum_millas=summary(millas)
print("resum_millas:")
## [1] "resum_millas:"
print(resum_millas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   65241   66002   66702   66475   66991   67447

#PREGUNTA 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:

#meses para poder calcular bien los pagos
meses= c("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre") 

#pagos por mes
pagos_telef=c(47,32,40,36,49,31,49,30,49,35,48,32)
print(pagos_telef)
##  [1] 47 32 40 36 49 31 49 30 49 35 48 32
pago_total = sum(pagos_telef)
print("El pago total en euros del telefono en el ultimo año ha sido de :")
## [1] "El pago total en euros del telefono en el ultimo año ha sido de :"
print(pago_total)
## [1] 478
  1. ¿Cuánto ha pagado en promedio cada mes?
pago_prom= mean(c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32))
print("El pago total en en promedio cada mes ha sido de :")
## [1] "El pago total en en promedio cada mes ha sido de :"
print(pago_prom)
## [1] 39.83333
  1. ¿Cuáles son las cantidades mínimas y máximas pagadas?
cantid_mini = min(pagos_telef)
print("El pago minimo en euros ha sido de :")
## [1] "El pago minimo en euros ha sido de :"
print(cantid_mini)
## [1] 30
cantid_maxi= max(pagos_telef)
print("El pago maximo en euros ha sido de :")
## [1] "El pago maximo en euros ha sido de :"
print(cantid_maxi)
## [1] 49
  1. ¿En qué mes se realizó cada pago?
mes_pago= cbind(meses,pagos_telef)
print("pago correspondientes a cada mes:")
## [1] "pago correspondientes a cada mes:"
print(mes_pago)
##       meses        pagos_telef
##  [1,] "enero"      "47"       
##  [2,] "febrero"    "32"       
##  [3,] "marzo"      "40"       
##  [4,] "abril"      "36"       
##  [5,] "mayo"       "49"       
##  [6,] "junio"      "31"       
##  [7,] "julio"      "49"       
##  [8,] "agosto"     "30"       
##  [9,] "septiembre" "49"       
## [10,] "octubre"    "35"       
## [11,] "noviembre"  "48"       
## [12,] "diciembre"  "32"
  1. ¿Cuantos meses pagó más de 40 euros?
mes_super40= sum(pagos_telef>40)
print("Cantidad de meses en el que su pago fue mayor a 40 euros :")
## [1] "Cantidad de meses en el que su pago fue mayor a 40 euros :"
print(mes_super40)
## [1] 5
  1. ¿Qué porcentaje del gasto total representa esta cantidad?
porce_mes_super40 = (sum(pagos_telef[pagos_telef > 40])/sum(pagos_telef))*100
print("porcentaje del gasto total de los pagos mayores de 40 euros :")
## [1] "porcentaje del gasto total de los pagos mayores de 40 euros :"
print(porce_mes_super40)
## [1] 50.62762

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

datos1= c(61, 88, 73, 49, 41, 72, 99, 07, 12, 13, 87, 91, 05, 17, 97)
  1. Haz un diagrama de porcentual
etiquetas = paste0(round(100 * datos1/sum(datos1), 2), "%")
pie(datos1, labels = etiquetas, main= "Diagrama porcentual", col= rainbow(length(etiquetas)))

  1. Obtén resúmenes numéricos de los datos.
resumen_numer = summary(datos1)
print("Resumen numerico de los datos:")
## [1] "Resumen numerico de los datos:"
print(resumen_numer)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00   15.00   61.00   54.13   87.50   99.00
  1. ¿Qué diferencias hay entre summary(x) y fivenum(x)?
fivenum(datos1)
## [1]  5.0 15.0 61.0 87.5 99.0

#R/Diferencia entre summary(x) y fivenum(x)

La función summary() da un recopiación mas amplio de los datos entre esas incluyendo la media, brindando una percepción mas generaly permitiendo ejecutar valores ausentes.Por otro lado,la funcion Fivenum() no proporciona la media pero esta nos da informacion mas concreta de la distribución de los datos.

#PREGUNTA 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).
datos2= rnorm(100)
print(datos2)
##   [1] -1.586579825 -0.772989388  1.750644057 -0.564975853 -0.024093927
##   [6] -1.161933983 -0.265441015  0.953753100  0.436207367  2.017985789
##  [11] -0.161073066  0.328118577  0.136791883  0.633187534 -1.349934565
##  [16]  0.775870950  0.418412525  0.602334476  0.296125115  0.270474410
##  [21]  0.332925536  0.388934354  0.457888655  0.306345182  0.123216331
##  [26] -0.524680956 -0.724611846 -0.374234528 -1.004498859 -0.561531036
##  [31]  0.042386024  0.689413690  1.113032842  0.876150334  1.031491404
##  [36] -0.641177063  0.388226255 -0.455723580 -1.768829352 -1.997994544
##  [41] -0.526494564  0.905966112  0.298404806 -0.917972229  2.102778774
##  [46] -1.360242045 -0.243917443 -0.391040057  0.868320212  1.861308578
##  [51] -1.251654821  0.661046473  0.683877536  0.500480312 -0.188689207
##  [56]  0.050565062  1.364441821  0.517569818  0.747090976  0.156706090
##  [61]  0.617511559 -1.142712159 -2.323108128  0.244207113 -0.984596858
##  [66] -0.979550727 -0.315807286 -0.343052322 -1.752341401  0.308511164
##  [71] -0.838254829  0.120493488 -1.043019192  0.258160705 -0.077098721
##  [76]  1.700893713  1.266971203 -1.825661950 -0.759049758 -2.056961824
##  [81]  1.079782410 -0.252785451  0.992336092  0.244034719 -1.021456551
##  [86] -0.124522764  1.626438698  0.188572589 -0.455842229 -1.618190183
##  [91]  0.756615034 -1.957745830  1.187884319 -0.174156680 -0.009855824
##  [96] -0.433669402  1.179748227  1.065189138  1.198693145 -0.048725159
  1. Realiza un histograma de los valores. Repite el proceso un par de veces. ¿Qué observas?
hist(datos2, col = "red")

#R/ Al repetir el proceso de los vectores generados se observa cambios generados en el histograma.

  1. Realiza un resumen numérico de los datos.
summary(datos2)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -2.32311 -0.58403  0.12185 -0.00234  0.66675  2.10278

#PREGUNTA 2.6

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

distri_bino = rbinom(30,5,0.9)
print("valores de distribucion binomial:")
## [1] "valores de distribucion binomial:"
print(distri_bino)
##  [1] 5 5 5 5 5 5 4 5 5 5 4 5 5 5 5 4 5 5 5 4 4 5 5 5 4 5 5 4 5 4
  1. Representa los resultados con un diagrama de barras o de pastel.
barplot(distri_bino, main = "Distribución binomial", xlab = "Valores", ylab = "Frecuencia",col="pink")

  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(distri_bino)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.000   4.250   5.000   4.733   5.000   5.000

#PREGUNTA 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).

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)
print("Numero de fallos en los primeros intentos:")
## [1] "Numero de fallos en los primeros intentos:"
print(Num_fallos)
##  [1]  0  1  0 NA  0  0  0  0  0  1  1  1  0  0  3  0  0  0  0  0  2  0  1
  1. Representa gráficamente estos datos. Qué representación es más adecuada una diagrama boxplot o un diagrama de barras?
barplot(Num_fallos, main = "Numero de fallos en los primeros intentos",col="purple")

boxplot(Num_fallos, main = "Numero de fallos en los primeros intentos",col="orange") 

#R/En este caso el diagrama de barras es mas adecuado para la representacion de estos datos ya que permite visualizar mas facil las veces que ocurre cada cantidad de fallos sin necesariamente tener en cuenta la dispersión o la perdida de un dato. Por lo contrario, el uso del diagrama de cajas no es la mejor opcion en este caso para representacion de datos ya que no se desea visualizar la dispersion o valores atipicos.

  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.
Num_med_errores = mean(Num_fallos,na.rm = TRUE)
print("Numero medio de errores")
## [1] "Numero medio de errores"
print(Num_med_errores)
## [1] 0.4545455

#PREGUNTA 2.8 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: a) Entra los datos mediante c(), scan(), read.table() y data.entry().

Estudiante = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
print("Estudiante:")
## [1] "Estudiante:"
print(Estudiante)
##  [1]  1  2  3  4  5  6  7  8  9 10
P1 = c(3, 3, 3, 4, 3, 4, 3, 4, 4, 3) 
print("P1:")
## [1] "P1:"
print(P1)
##  [1] 3 3 3 4 3 4 3 4 4 3
P2 = c (5, 5, 2, 2, 5, 2, 2, 5, 5, 2)
print("P2:")
## [1] "P2:"
print(P2)
##  [1] 5 5 2 2 5 2 2 5 5 2
P3 = c(1, 3, 1, 3, 3, 3, 1, 3, 1, 1)
print("P3:")
## [1] "P3:"
print(P3)
##  [1] 1 3 1 3 3 3 1 3 1 1
  1. Tabula los resultados de cada pregunta por separado.
tabla = c(P1,P2,P3)
matriz_pregun = matrix(tabla,3,10,byrow = TRUE)
rownames(matriz_pregun)= c("P1","P2","P3")
colnames(matriz_pregun)=paste("Est",Estudiante)
print(matriz_pregun)
##    Est 1 Est 2 Est 3 Est 4 Est 5 Est 6 Est 7 Est 8 Est 9 Est 10
## 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
  1. Realiza tablas de contingencia cruzadas para cada pregunta, de 2 en 2 y las 3 a la vez.
matriz_pregun[2,]
##  Est 1  Est 2  Est 3  Est 4  Est 5  Est 6  Est 7  Est 8  Est 9 Est 10 
##      5      5      2      2      5      2      2      5      5      2
cat("\n")
cat("\n")
cat("\n")
matriz_pregun[3,]
##  Est 1  Est 2  Est 3  Est 4  Est 5  Est 6  Est 7  Est 8  Est 9 Est 10 
##      1      3      1      3      3      3      1      3      1      1
  1. Haz un diagrama de barras apiladas de las preguntas 2 y 3.
pregun_2 = c(P2,P3)
print("pregun_2:")
## [1] "pregun_2:"
print(pregun_2)
##  [1] 5 5 2 2 5 2 2 5 5 2 1 3 1 3 3 3 1 3 1 1
pregun_3 = matrix(pregun_2,2,10,byrow = TRUE)
cat("\n")
cat("\n")
print("pregun_3:")
## [1] "pregun_3:"
print(pregun_3)
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,]    5    5    2    2    5    2    2    5    5     2
## [2,]    1    3    1    3    3    3    1    3    1     1
barplot(pregun_3,beside=F,xlab = "Estudiantes", col= "brown")

e) Haz un diagrama de barras con las tres preguntas simultáneamente

barplot(matriz_pregun,beside = T,xlab = "Estudiantes",col= "green")

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

vector1=rnorm(50)
print("vector1")
## [1] "vector1"
print(vector1)
##  [1]  0.15261953 -0.59664176 -0.07248820 -0.40490033 -1.30362078  1.57451934
##  [7] -1.14174946  0.20459517  0.05777972  0.52625231  1.04976745 -1.24645488
## [13]  1.70556314 -0.33922807 -0.11933689 -0.20721460  0.96514616  0.50328838
## [19] -0.72587172  1.40961801 -2.64611719 -0.89046735 -0.19199616 -0.89611787
## [25]  0.35976137  0.67684998 -0.11735431  1.25195921 -1.69093510  0.73242672
## [31]  0.46380417  0.47146683 -1.60142941  0.15437206 -0.18009756  1.16559404
## [37] -0.67656073  0.59453725  0.15775001  0.58113120 -0.51790014 -1.11412176
## [43] -1.65769932 -0.50666678 -0.04663370 -0.38212350 -0.89822866 -2.10482251
## [49]  0.11170157  0.28417494
cat("\n")
cat("\n")
vector2=rnorm(50)
print("vector2")
## [1] "vector2"
print(vector2)
##  [1]  0.78426780 -1.99260096 -0.34461364 -0.01132526  0.06402622  2.08484703
##  [7] -0.82608608 -0.80485471 -1.87710499  0.15486237 -1.34382981  1.46263568
## [13]  0.50819803  2.42562565 -2.26482371  1.75711027  0.34738978 -0.57491907
## [19] -0.37113679  0.43518623  2.06883846  0.12744733 -0.34052420  0.50967339
## [25]  0.74930556 -0.98327968  0.75137052  0.15754455 -1.36520905 -0.29237698
## [31] -1.51441968  1.28801093 -0.32499841  1.31606023  0.14276164 -0.08208586
## [37] -1.46348410  0.52926068  1.66691783 -0.08992596 -1.71017874  0.80078975
## [43] -0.65664246 -0.13653822  1.82104092  0.40277755  0.71043678  1.28782109
## [49] -0.30244234 -0.21108695
  1. Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector.
print("shapiro.test 1")
## [1] "shapiro.test 1"
shapiro.test(vector1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector1
## W = 0.98788, p-value = 0.8847
cat("\n")
cat("\n")
print("shapiro.test 2")
## [1] "shapiro.test 2"
shapiro.test(vector2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector2
## W = 0.98389, p-value = 0.7228
  1. Determine si entre los vectores hay o no diferencias significativas,t-student test
print("t-student test 1")
## [1] "t-student test 1"
t.test(vector1)
## 
##  One Sample t-test
## 
## data:  vector1
## t = -1.0562, df = 49, p-value = 0.296
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.4134463  0.1285623
## sample estimates:
## mean of x 
## -0.142442
cat("\n")
cat("\n")
print("t-student test 2")
## [1] "t-student test 2"
t.test(vector2)
## 
##  One Sample t-test
## 
## data:  vector2
## t = 0.56116, df = 49, p-value = 0.5772
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.2307346  0.4095234
## sample estimates:
##  mean of x 
## 0.08939437
cat("\n")
cat("\n")
print("t-student testS JUNTOS")
## [1] "t-student testS JUNTOS"
t.test(vector1,vector2)
## 
##  Welch Two Sample t-test
## 
## data:  vector1 and vector2
## t = -1.1108, df = 95.401, p-value = 0.2695
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.6461722  0.1824995
## sample estimates:
##   mean of x   mean of y 
## -0.14244200  0.08939437

#R/ se debe tener en cuenta que el valor umbral aceptable es de 0.05. #El resultado de la prueba t de Welch muestra un valor de p de 0.1065. Dado que este valor de p es mayor que el umbral aceptado, No se dispone de suficiente evidencia para descartar la hipótesis nula que plantea que las medias de ambos vectores son iguales.

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

VECTOR_R1= rnorm(50)
print("rnorm")
## [1] "rnorm"
print(VECTOR_R1)
##  [1] -1.14210839 -0.67087685  2.08242403  1.12570630  1.03291131 -0.64596438
##  [7] -0.25071951  0.16606114 -1.82019336 -0.02643809  1.36164989  0.69065261
## [13]  0.32656848  0.33149946  0.07912768  0.25388632  1.20429389 -1.01998771
## [19] -0.33809905 -0.37245965  1.35821544  0.60226788  0.64909583  0.97230421
## [25] -1.75563034 -0.10086567 -0.59735619 -0.17990399  1.22883368  0.88988474
## [31] -0.36988453 -1.29015798  1.10860834 -0.15057102 -0.46031614  1.33339586
## [37]  0.51309050  1.06403764 -0.22252930  1.34953772 -0.76226855 -0.07414270
## [43]  1.49846323 -2.56942478  2.15790789  0.40632344  0.33322987  0.53434304
## [49]  1.88134425  0.38421419
cat("\n")
cat("\n")
VECTOR_R2=rbinom(50,6,0.7)
print("rbinom")
## [1] "rbinom"
print(VECTOR_R2)
##  [1] 5 4 6 4 4 5 3 4 5 4 4 4 6 5 4 4 5 6 5 5 4 6 4 5 2 4 4 3 5 4 4 4 5 3 2 4 3 3
## [39] 5 5 5 5 3 4 4 6 2 3 4 5
  1. Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector.
print("test de vector 1")
## [1] "test de vector 1"
shapiro.test(VECTOR_R1)
## 
##  Shapiro-Wilk normality test
## 
## data:  VECTOR_R1
## W = 0.98121, p-value = 0.6038
cat("\n")
cat("\n")
print("test de vector 2")
## [1] "test de vector 2"
shapiro.test(VECTOR_R2)
## 
##  Shapiro-Wilk normality test
## 
## data:  VECTOR_R2
## W = 0.90573, p-value = 0.0007468
  1. Determine si entre los vectores hay o no diferencias significativas, t-student test
diferencias = t.test(VECTOR_R1,VECTOR_R2)
print(diferencias)
## 
##  Welch Two Sample t-test
## 
## data:  VECTOR_R1 and VECTOR_R2
## t = -19.613, df = 97.998, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -4.402528 -3.593472
## sample estimates:
## mean of x mean of y 
## 0.2419996 4.2400000

#R/Los resultados de la prueba indican que uno de los vectores se ajusta a una distribución normal, mientras que el otro sigue una distribución nominal; por ende,hay una diferencia significativa entre los dos grupos.