Funciones R
sábado, 15 de marzo de 2025 11:00
CLASE 1, 13/3
• x = algo lo estoy nombrado, ej lo uso para df. Los cambios se harán ahí y no en la base de datos original
○ Recomendaciones para importar bases de datos: Importar como .csv, no usar acento, no la ñ, no dejar nombre en blanco
de la variable, decimales con coma y no con punto, no poner texto en otra columna (sino lo puede reconocer como
variable)
x$y y está contenido en x
• x$y = [Link](x$y) defino la variable como categorías / niveles y no simplemente texto. Tambien puede ser [Link]
summary(x) me da panorama general: min, quartiles, median, mean, max.
hist(x$y) grafica histograma
• boxplot (x$y) grafica boxplot
• sd(x$y) desvío estándar
• Puedo definir funciones, ej cv = sd(x$y) / mean(x$y)
• x$z = ifelse(condición ej. x$y >= 1, que hacer con si, que hacer con no) genera columna z (variable) en x
• [Link](table(x$z) permite analizar las proporciones de las frecuencias en la tabla. La tabla puede hacerse por separado
• boxplot(x$a ~ x$b) permite hacer un análisis bivariado, "~" indica que está condicionado
• tapply(x$a, x$b, summary) permite separar el summary en categorías a y b por separado, en formato de tabla
• quantile (x$y, 0.1) permite calcular un percentil, va de 0 a 1 (expresar como decimal) ej en este caso sería 10%
De cuestionario 1:
• qqnorm(x$y)
qqline(x$y) grafica QQplot con la línea de referencia de dist. normal (pendiente = 1). Qqplot exagera el apartamiento de la
normalidad. En este orden! Si pongo qqline primero no me da la línea
CLASE 2, 20/3
• Random_gamma <- rgamma(100,1) Le digo que me genere distribucion gamma con esos datos. No me da distribucion normal.
• La flechita es lo mismo que igual =. La flechita es de asignación, asigno objeto al nombre del lado izq.
• Si veo una fc que no se como se usa: pongo en la pestaña de abajo ?nombrefuncion
• nombre=rnorm(n=20,mean=100,sd=40) le estoy diciendo generame la "r" es de random, "norm" según distribución normal.
Son al azar, distinto cada vez que se corre, sirve para simulaciones.
• [Link](table(x$z),1 ó 2 ó 3) esto me hace el porcentaje con respecto a cada columna, el 2 esta para que me lo haga por
columna y no por fila que es el 1, el 3 es la suma(?
• Estimación por intervalo de confianza:
○ media, desvío estándar, n, y confianza son los 4 elementos que necesito!! el resto salen de ahí. Para que sea más
cómodo más adelante me conviene definir:
▪ media = mean(x$y) esto es x raya, estimador puntual del parámetro mu que es la media poblacional
▪ de = sd(x$y) esto es s, estimador puntual del parámetro sigma que es el desvío poblacional
▪ n = length(x$y) cuenta cuántos datos hay
▪ confianza = 0.% poner el porcentaje como decimal
○ Una vez que tengo esos 4 elementos, defino:
▪ gl = n-1
▪ alfa = 1 - confianza_95 esto es opcional pero me parece más cómodo
▪ tstudent = qt(alfa/2, gl, [Link] = FALSE) cuantil de la distribucion t: automatizo con el area y gl ej. 0.025, y lower
tail le dijo izquierda o derecha con true o false. Si lo dejo como true me va a dar el negativo (me da lower tail osea
izq), si lo dejo false me da el positivo (me da a la derecha). Verifico corriendo el valor de tstudent
○ Luego ya puedo calcular:
▪ lim_inferior = media + (-tstudent)*(de/sqrt(n)) ojo paréntesis, sqrt es square root
lim_superior_95 = media + tstudent*(de/sqrt(n))
▪ amplitud_95 = lim_superior_95 - lim_inferior_95
CLASE 3, 27/3:
• categoria_z = df[which(df$y == "categoria z" ),] de mi base de datos mira la columna "y", conservame solo los que coincidan
con la "categoría z", contenida en y, que yo quiero
[] Corchetes: pido que corte base de datos. Tengo que decirle dos valores: que filas (izq) y que columnas (der) que quiero
conservar (acordarme con Feliz Cumpleaños, en ese orden).
Para pedirle todas las columnas y/o filas hay que dejarlo vacio, quiero todas las columnas y solo algunas filas. "which" es
pedirle que mire donde esta ese dato que quiero, en este ejemplo quiero todas las columnas y seleccionar solo algunas filas
○ Esto es asumiendo que está establecido df$y = [Link](df$y), lo puedo chequear con summary(df$y)
Esto crea una df nueva para cada categoría, puedo poner view(categoria_z) y lo veré en un script aparte. A partir de ahí hago
intervalos de confianza por separado, ej mean, sd, length los pongo todos como = categoria_z$variable_que_quiero_relacionar
puedo usar los mismos nombres para las variables pero debo correrlas por separado.
• Si la muestra es aleatoria, pero la variable no se distribuye normalmente y n < 30, entonces puedo estimar si se ajusta
razonablemente a una distribución normal con un qqnorm(categoria_z), qqline(categoria_z)
• Intervalo de confianza para una proporción:
○ Definir parámetros
proporcion_exitos = z/y en proporción y no porcentaje
Bioestadística página 1
proporcion_exitos = z/y en proporción y no porcentaje
Confianza = 0.
n = length(df$y) 1
○ Calcular el error estándar de la proporción (podría insertarlo en la fórmula del límite pero lo defino para que sea más cómodo):
error_estandar = sqrt(proporcion_exitos * (1 - proporcion_exitos) / n)
○ Calcular el intervalo de confianza:
alpha = 1 - nivel_confianza
z_critico = qnorm(1 - alpha / 2) Valor crítico de la distribución normal
LI = proporcion_exitos - z_critico * error_estandar
LS = proporcion_exitos + z_critico * error_estandar
Amplitud = LS - LI
confianza = 0.95
amplitud = 0.05
p = 0.1944
alpha = 1-confianza
z_critico = qnorm(1-alpha/2)
z_critico
n = ((z_critico)^2 * p * (1-p))/((amplitud/2)^2)
n
n será mayor a MAYOR confianza y MENOR amplitud.
Bioestadística página 2