1. Invoque y copie las primeras 5 filas de la tabla de datos survey
 library(MASS)  
attach(survey)
head(survey,n=5)
     Sex Wr.Hnd NW.Hnd W.Hnd    Fold Pulse    Clap Exer Smoke Height
1 Female   18.5   18.0 Right  R on L    92    Left Some Never  173.0
2   Male   19.5   20.5  Left  R on L   104    Left None Regul  177.8
3   Male   18.0   13.3 Right  L on R    87 Neither None Occas     NA
4   Male   18.8   18.9 Right  R on L    NA Neither None Never  160.0
5   Male   20.0   20.0 Right Neither    35   Right Some Never  165.0
       M.I    Age
1   Metric 18.250
2 Imperial 17.583
3     <NA> 16.917
4   Metric 20.333
5   Metric 23.667

2.Explique brevemente de que se trata este estudio

data.frame que contiene las respuestas de 237 estudiantes de Estadística I de la Universidad de Adelaida a una serie de preguntas.

3.Dentro de las variables bajo estudio que significa Wr.Hnd y W.Hnd.

Wr.Hnd: Distancia (cm) de la punta del pulgar a la punta del dedo meñique de la mano separada, de la mano con la que escribe
span (distance from tip of thumb to tip of little finger of spread hand) of writing hand, in centimetres.
W.Hnd: Mano con la que escribe
writing hand of student. (Factor, with levels “Left” and “Right”.)

4.Haga un resumen numérico de cada una de las variables de interés.

summary(survey)
     Sex          Wr.Hnd          NW.Hnd        W.Hnd          Fold    
 Female:118   Min.   :13.00   Min.   :12.50   Left : 18   L on R : 99  
 Male  :118   1st Qu.:17.50   1st Qu.:17.50   Right:218   Neither: 18  
 NA's  :  1   Median :18.50   Median :18.50   NA's :  1   R on L :120  
              Mean   :18.67   Mean   :18.58                            
              3rd Qu.:19.80   3rd Qu.:19.73                            
              Max.   :23.20   Max.   :23.50                            
              NA's   :1       NA's   :1                                
     Pulse             Clap       Exer       Smoke         Height     
 Min.   : 35.00   Left   : 39   Freq:115   Heavy: 11   Min.   :150.0  
 1st Qu.: 66.00   Neither: 50   None: 24   Never:189   1st Qu.:165.0  
 Median : 72.50   Right  :147   Some: 98   Occas: 19   Median :171.0  
 Mean   : 74.15   NA's   :  1              Regul: 17   Mean   :172.4  
 3rd Qu.: 80.00                            NA's :  1   3rd Qu.:180.0  
 Max.   :104.00                                        Max.   :200.0  
 NA's   :45                                            NA's   :28     
       M.I           Age       
 Imperial: 68   Min.   :16.75  
 Metric  :141   1st Qu.:17.67  
 NA's    : 28   Median :18.58  
                Mean   :20.37  
                3rd Qu.:20.17  
                Max.   :73.00  
                               

5.Calcule la media para variable “Height” por separado. Además, usando su propia función calcule la media recordada al 5% y compare ésta con función propia de R mean haciendo uso del argumento trim

mean(Height, na.rm = T)
[1] 172.3809
media = function(x, a) {
    x <- x[!is.na(x)]  # Eliminando los NA
    if (a == 0) {
        M = sum(x)/length(x)
        cat("Media=", M, "\n")
    } else if (a > 0 & a < 0.5) {
        x = sort(x)  # media recortada
        inf = which(x <= x[a * length(x)/2])
        sup = which(x > x[length(x) - a * length(x)/2])
        x_r = x[-c(inf, sup)]
        Mr = sum(x_r)/length(x_r)
        cat("Media=", Mr, "\n")
        print(length(x_r))
    } else {
        "valor de a fuera del rango"
    }
}
media(Height, 0)
Media= 172.3809 
media(Height, 0.05)
Media= 172.3938 
[1] 198
mean(Height, 0.05, na.rm = T)
[1] 172.2766
  1. Construya la siguiente tabla de datos.
  Nombres Edad Altura Peso Sexo
1    Luis   60    187   75    M
2  Carlos   18    173   90    M
3   Maria   45    154   51    F
4  Emilio   29    165   67    M
5   Sofia   13    145   43    F
6     Ana   53    179   81    F
Nombres=c("Luis","Carlos","Maria","Emilio","Sofia","Ana")
 Edad=c(60,18,45,29,13,53)
 Altura=c(187,173,154,165,145,179)
 Peso=c(75,90,51,67,43,81)
 Sexo=c("M","M","F","M", "F","F")
 (encuesta=data.frame(Nombres,Edad,  Altura,Peso,Sexo) )
encuesta[Sexo=="M",]
  Nombres Edad Altura Peso Sexo
1    Luis   60    187   75    M
2  Carlos   18    173   90    M
4  Emilio   29    165   67    M
encuesta[Sexo=="F",]
  Nombres Edad Altura Peso Sexo
3   Maria   45    154   51    F
5   Sofia   13    145   43    F
6     Ana   53    179   81    F
encuesta[Altura<=160,]  
  Nombres Edad Altura Peso Sexo
3   Maria   45    154   51    F
5   Sofia   13    145   43    F
encuesta[Altura>160,]
  Nombres Edad Altura Peso Sexo
1    Luis   60    187   75    M
2  Carlos   18    173   90    M
4  Emilio   29    165   67    M
6     Ana   53    179   81    F

7a.Construya una función que calcule la varianza muestral de un conjunto de datos compruébela con la función de biblioteca “var”

VAR = function(x) {
    x <- x[!is.na(x)]
    sigma2 = sum((x - mean(x))^2)/(length(x) - 1)
    print(sigma2)
}
VAR(Height)
[1] 96.9738
var(Height, na.rm = T)
[1] 96.9738
  1. Mejore la salida de la función anterior, usando la función “cat”
VAR = function(x) {
    x <- x[!is.na(x)]
    sigma2 = sum((x - mean(x))^2)/(length(x) - 1)
    cat(sigma2, sep = "", fill = T, labels = c("varianza="))
}
VAR(Height)
varianza= 96.9738
  1. Construya una función que calcule el coeficiente de variación de Pearson. Muestre el resultado en Porcentaje.
CV = function(x) {
    x <- x[!is.na(x)]
    M = sum(x)/length(x)
    V = sum((x - M)^2)/(length(x) - 1)
    Sd = sqrt(V)
    Cv = round(Sd/M * 100, 3)  # redondeando a 3 cifras decimales
    cat("Coeficiente de varacion=", Cv, sep = "", "\n")
}
CV(Height)
Coeficiente de varacion=5.713
  1. Construya una función general que calcule un I.C de un tanto por ciento de confianza (90%, 95% o 99%) para la diferencia de medias poblacional (\(\mu_1\) - \(\mu_2\)), bajo las siguientes condiciones:
    • Los tamaños muestrales \(n_1\) y \(n_2\) son menores que 30.
    • Medias muestrales \(\bar{x_1}\) y \(\bar{x_2}\) .
    • Desviaciones estándar muestrales \(s_1\) y \(s_2\). Y asuma que ambas poblaciones se distribuyen normalmente.
IC = function(x1, x2, alpha, which = 1) {
    if (which == 1 & alpha > 0 & alpha < 1) {
        # caso varianzas iguales
        x1 <- x1[!is.na(x1)]
        x2 <- x2[!is.na(x2)]
        X1 = mean(x1)
        X2 = mean(x2)
        n1 = length(x1)
        n2 = length(x2)
        Gl = n1 + n2 - 2
        Sp = sqrt(((n1 - 1) * var(x1) + (n2 - 1) * var(x2))/Gl)
        ttabla = qt(alpha/2, Gl, lower.tail = F)
        e = ttabla * Sp * sqrt(1/n1 + 1/n2)
        lim_inf = (X1 - X2) - e
        lim_sup = (X1 - X2) + e
        intervalo = cbind(lim_inf, lim_sup)
        # cat('Inter_conf',intervalo,'\n') print(c(lim_inf,lim_sup))
        limites = c("lim_inf", "lim_sup")
        valor = round(c(lim_inf, lim_sup), 3)
        Intervalo = rbind(limites, valor)
        print(Intervalo)
    }
    if (which == 2 & alpha > 0 & alpha < 1) {
        ### caso varianzas diferentes
        x1 <- x1[!is.na(x1)]
        x2 <- x2[!is.na(x2)]
        Xm1 = mean(x1)
        Xm2 = mean(x2)
        n1 = length(x1)
        n2 = length(x2)
        s1 = var(x1)/n1
        s2 = var(x2)/n2
        v = ceiling((s1 + s2)^2/(s1^2/(n1 - 1) + s2^2/(n2 - 1)))
        S = sqrt(s1 + s2)
        tt = qt(alpha/2, v, lower.tail = F)
        e1 = tt * S
        lim_inf = (Xm1 - Xm2) - e1
        lim_sup = (Xm1 - Xm2) + e1
        limites = c("lim_inf", "lim_sup")
        valor = round(c(lim_inf, lim_sup), 3)
        Intervalo = rbind(limites, valor)
        print(Intervalo)
    }
}

Probando la función bajo el supuesto de varianzas iguales

# generando dos muestras con distribucion normal
set.seed(1)
P1 = rnorm(25, mean = 35, sd = 3)
P2 = rnorm(20, mean = 30, sd = 9)
IC(P1, P2, 0.05, 1)
        [,1]      [,2]     
limites "lim_inf" "lim_sup"
valor   "2.759"   "8.603"  
t.test(P1, P2, var.equal = T, conf.level = 0.95)

    Two Sample t-test

data:  P1 and P2
t = 3.9205, df = 43, p-value = 0.0003126
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 2.758672 8.603057
sample estimates:
mean of x mean of y 
 35.50600  29.82513 

Probando la función bajo el supuesto de varianzas diferentes

IC(P1, P2, 0.05, 2)
        [,1]      [,2]     
limites "lim_inf" "lim_sup"
valor   "2.456"   "8.906"  
t.test(P1, P2, var.equal = F, conf.level = 0.95)

    Welch Two Sample t-test

data:  P1 and P2
t = 3.6281, df = 24.792, p-value = 0.001291
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 2.454674 8.907055
sample estimates:
mean of x mean of y 
 35.50600  29.82513 
  1. Crear dos funciones inventadas por usted mismos en donde se involucren las sentencias if - else y for - break. Explíque cada una de manera detallada.

La siguiente función con las sentencias if-else. Calcula la mediana para datos no agrupados

mediana = function(y) {
    y = sort(y)
    y <- y[!is.na(y)]
    n = length(y)
    if (n%%2 != 0) {
        ## identfcando si el tamaño de la muestra es impar
        Med = y[(n + 1)/2]  # dato central de la muestra ordenada 
    } else {
        Med = (y[n/2] + y[n/2 + 1])/2
    }  # promedio datos centrales
    cat("Mediana=", Med, "\n")
}
mediana(Height)
Mediana= 171 
median(Height, na.rm = T)
[1] 171
median(P2)
[1] 29.27054
mediana(P2)
Mediana= 29.27054 

La siguiente función con las sentencias for-break.Función que suma el cuadrado de variables aleatorias normales estándar ( chi cuadrada)

chi = function(n) {
    for (i in 2:100) {
        if (i == n) 
            break
        x <- rnorm(i)
        cat(i, ": ", sum(x^2), "\n", sep = "")
    }
    
}
chi(6)
2: 0.6334694
3: 1.379615
4: 1.924888
5: 7.52519