Uso: Emplee la herramienta de búsqueda por palabra (en Google Chrome es "Ctrl+F") para encontrar información sobre el comando que usted requiera.
Consultar sobre un comando en R
?nombre_del_comando
Ejemplo:
?boxplot
Exportar archivo de código R hacia PDF, Microsoft Word o HTML
Resulta útil para ahorrar tiempo al momento de presentar las soluciones en las evaluaciones.
Abrir en RStudio el archivo .R que desea exportar y presione “Ctrl+Shift+K”.
Seleccione en cuál de los tres formatos presentados desea exportar el archivo y listo.
Importante: Es posible que necesite instalar la librería “knitr” para que funcione la exportación; así que, si no funcionó, ejecute install.packages("knitr") en la consola de RStudio y después intente de nuevo.
Importante: Tenga cuidado con la longitud de las líneas de código en su archivo, pues, tras exportar el archivo via “Ctrl+Shift+K”, si una línea de código es muy larga, esta no se escribirá por completo en el archivo exportado. Por ejemplo, si intenta exportar un archivo que contenga la siguiente línea:
datos <- haven::read_sav("http://portal.susalud.gob.pe/wp-content/uploads/archivo/base-de-datos/2015/CUESTIONARIO%2001%20-%20CAPITULOS.sav")Uso de tildes
Si empleas tildes en tu código, selecciona la opción UTF-8 al momento de guardar el archivo para ellas no desaparezcan. Asimismo, cuando cargues un archivo con tildes, selecciona en RStudio "File" y luego "Reopen with encoding" para que se muestren en el código.
Ejecutar código seleccionado
Resaltar el código relevante y presionar "Ctrl+R".
Vaciar la consola de RStudio
Ingrese a la consola y presione "Ctrl+L"
Data environment
"obs." y "variables" se pueden interpretar como filas y columnas de un dataset, respectivamente.
Convertir código en comentario
Resalta el texto que quieres que sea comentario y presiona "Ctrl+shift+C".
Crear una función
Ejemplos:
reescalar <- function(x) 3*x
media <- function(x){
suma <- sum(x) # suma
n <- length(x) # número de elementos
media <- suma/n # calcula media
media
}Código más ordenado en RStudio
#* subtítulo ----
Apretar "Ctrl+Shift+O" para abrir el menú de subtítulos.
Redondear número para obtener un entero
round(n,0) # Redondear a "n" sin decimales.lista <- append(lista,elemento) # 'elemento' se añade al final de 'lista'.
lista <- append(elemento,lista) # 'elemento' se añade al inicio de 'lista'.Cantidad de filas
nrow(datos)
Lista de valor repetido
rep(valor,n) # Donde "m" es la cantidad de veces que desees se repita ese "valor" fijo pero arbitrario.Lista formada por las sumas por filas de un data set
rowSums(datos)
Lista de progresión aritmética
seq(a,b,by=n) # Lista de "a" a "b", via incrementos de n.
Ver las primeras n filas de los datos
head(datos,n)
Ver las últimas n filas de la datos
tail(datos,n)
setwd("C:/") # En este caso asignamos el disco C como directorio.library(haven)
datos <- read.csv("datos_edadesposos.csv")
names(datos) # Ver los nombres de las columnas.library(haven)
datos <- read.csv(file.choose())library(readxl)
setwd("C:/Users/HP/Downloads/")
datos <- read_excel("datos_edadesposos.xlsx") library("readxl")
datos <- read_excel(file.choose())enlace <-"https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer/breast-cancer.data"
datos <- read.table(enlace, sep=",",stringsAsFactors=TRUE)
# En caso sea un archivo de tipo .sav:
library(haven)
datos<- read_sav("http://portal.susalud.gob.pe/wp-content/uploads/archivo/base-de-datos/2015/CUESTIONARIO%2002%20-%20CAPITULOS.sav")
datos <- haven::read_sav("http://portal.susalud.gob.pe/wp-content/uploads/archivo/base-de-datos/2015/CUESTIONARIO%2001%20-%20CAPITULOS.sav")# Llamemos datos a un data.frame ya definido previamente en el código.
library(writexl)
write_xlsx(datos,"directorypath/nombre-del-archivo-por-crear.xlsx")write.csv(nombre_data_frame,"nombre_archivo.csv", row.names=T)
# El "row.names = T" es para preservar la separación via columnas que posee el data frame por exportar.etiquetas_todos <- sapply(datos, attr,"label")
DT::datatable(data.frame(etiquetas_todos))Conseguir los labels de las variables del data frame (datos)
library(labelled)
val_labels(datos)
Obtener ciertos elementos de un data frame
Ejemplos:
# Considere un data frame llamado "datos"
datos[1:5,]
datos[c(1,4,5),]
datos[datos$bmi > 40,]
datos[datos$bmi < 40 & datos$edad > 50,]colnames(datos) <- c("nombre.1","nombre.2",...,"nombre.n")
rownames(datos) <- c("nombre.1","nombre.2",...,"nombre.n")summary(datos) # También te muestra la cantidad de valores "NA" en "datos".
# También puedes usar:
library(skimr)
skimr::skim(datos)table(datos) # Muestra en la consola los resultados respecto a las frecuencias.
barplot(table(data),xlab="titulo x",ylab="Frecuencia",main="Distribución de x")
# Para datos numéricos puedes usar table:
nombre_tabla <- table(datos > 5) # Te devuelve las cantidades de valores en "datos" mayores y menores, respectivamente, que 5.
nombre_tabla
# En ese caso, puedes acceder a los elementos de tal tabla via los comandos nombre_tabla[1] y nombre_tabla[2]
# También puedes emplear prop.table(table(datos > 5)) .Frecuencia acumulada
barplot(cumsum(lista_de_frecuencias_de_los_datos))
Porcentaje acumulado
barplot(100*( (cumsum(lista_de_frequencias_de_los_datos)) / sum(lista_de_frequencias_de_los_datos) ) )
Proporciones de las frecuencias de los datos
prop.table(table(datos))
# Más ordenado y compacto que prop.table .
janitor::tabyl(datos)
# Parecido al comando anterior, pero mejor.
summarytools::freq(datos, order = "freq") hist(datos) # Las alturas de los rectángulos son las frecuencias
hist(datos,prob=T) # Las alturas de los rectángulos son la proporción respecto a la frecuencia.
lines(density(datos)) # Graficar encima del histograma la aproximación de la función densidad. # Ejemplo:
set.seed(42)
p1 <- hist(rnorm(500,4)) # centered at 4
p2 <- hist(rnorm(500,6)) # centered at 6
plot( p1, col=rgb(0,0,1,1/4), xlim=c(0,10)) # first histogram
plot( p2, col=rgb(1,0,0,1/4), xlim=c(0,10), add=T) # second boxplot(datos)
boxplot(datos, outline = FALSE) # No graficar los valores atípicos.
# Añadir un boxplot encima de otro boxplot, en el mismo gráfico
boxplot(datos.1)
boxplot(datos.2,add=TRUE,border="red")Obtener solo los datos de tipo distinto a "NA"
nuevos.datos <-subset(datos, !is.na(datos))
Diagrama de cajas comparando una variable cuantitativa con una cualitiativa
boxplot(datos$variable.cuantitativa ~ datos$variable.cualitativa, datos)
Ojo que debe ser en ese orden, primero la variable cuantitativa (eje Y), y luego la variable cualitativa (eje X).
Boxplots múltiples en una misma imagen, respecto a categorias dentro de categorías
# Ejemplo:
library(readxl)
setwd("C:/Users/HP/Desktop/")
datos <- read_excel("Mate_II_PCs_Secciones_A_y_D.xlsx")
notas = data.frame(Sección = datos$Seccion,PC1 = datos$PC1,PC2= datos$PC2,PC3 = datos$PC3,PC4 = datos$PC4)
tabla <- reshape2::melt(notas, id.var = "Sección", value.name ="Nota",variable.name = "Práctica")
require(ggplot2)
ggplot(data = tabla, aes(x=Práctica, y=Nota) + geom_boxplot(aes(fill=Sección)) )tabla_conti <- table(datos.1,datos.2)
tabla_conti
tabla1 <- 100*prop.table(tabla_conti, margin=1) # margin = 1: porcentaje por filas; =2, por columnas.
round(tabla1,2)
# Ejemplos:
factor1 <- factor(c("<6",">=6"))
normal <- c(70,198)
sobrepeso <- c(12,14)
tabla <- data.frame(Tiem_lac_exc = factor1, normal,sobrepeso)
tablaFunción densidad
No es bueno usar cuando tienes pocos datos. Si tienes más de 50 datos, úsala entonces.
density(datos)
plot(density(datos))
Función densidad acumulada
Fn = ecdf(datos)
# Por convención, ecdf(.) descarta los valores de tipo NA en la dataset "datos".
plot(Fn,xlab="data",ylab="Densidad acumulada",main="Función de densidad acumulada")
lines(ecdf(datos.2),col=2) # Inserta otra función densidad sobre la misma gráfica. "Col" asigna un cierto color.
Fn(m) # Proporcion de datos cuyo valor es menor o IGUAL a m.# Ejemplo:
par(mfrow=c(1,2)) # mfrow=c(1,n) es para tener n gráficas en una misma imagen.
barplot(100*prop.table(tabla_sexo), ylim=c(0,100),names.arg = c("Hombre","Mujer"), ylab="Porcentaje")
barplot(100*prop.table(tabla_contrato), ylim=c(0,100),col=1:6, ylab="Porcentaje",xaxt="n") Gráfico de variable discreta con las imagenes unidas via líneas punteadas
plot(variable_discreta, valores_asociados)
lines(variable_discreta,valores_asociados,lty=2)
Más detalle en los ejes de una gráfica
# Ejemplo:
axis(1, seq(0,10,1)) # axis(2, rango_en_eje_y)# Ejemplo:
x <- (-1):10
points(x,ppois(x, lambda = 2.5), col = "dark red", pch=19) # Ejemplo:
f <- function(x) (1/60)*exp(-x/60)
plot(f(-1:500), type='l')# Ejemplo:
f <- function(x) (1/60)*exp(-x/60)
F <- function(x) integral(f, 0, x)
sapply(0:10,F) # Lista formada por F(i) con i en {0,1,2,...,10}.# Ejemplo:
# Datos
plot(prop.table(table(datos$Y)),xlab="Y",ylab="Proporción",ylim=c(0,0.3))
# Modelo
points(0:max(datos$Y) +0.1,dpois(0:max(datos$Y),2),type='h', xlab='',ylab='',col=2, ylim=c(0,0.3))
# Leyenda
legend(4,0.6, legend=c("Modelo","Datos"), col=c("red","blue"), pch=15,bty="n")
# 4: coordenada x , 0.6: coordenada y
# bty = "o" # Incluir caja alrededor de la leyenda
# bty = "n" # No incluir aquella caja.type = "s" dentro del plot( … ) adecuado.
Mediana
median(datos)
Media
mean(datos)
Cuantiles
# cuantil p de un dataset "datos":
quantile(datos, p)
# cuartiles de un dataset "datos":
quantile(datos,probs=c(0.25,0.5,0.75))Rango
range(datos)
Rango intercuartílico
IQR(datos)
Interpretación:
Podemos interpretar el rango intercuartil como que la mitad de los valores obtenidos están concentrados en
un intervalo [Q1,Q3] de tamaño Q3 - Q1.
Desviación estándar
sd(datos)
Coeficiente de variación
CV <- sd(datos)/mean(datos)
Básicamente, CV<10 es muy bueno, entre 10 y 20 es bueno, entre 20 y 30 es aceptable y CV>30 no es bueno.
Coeficientes de asimetría
Fisher <- function(x) mean((x - mean(x))^3)/sd(x)^3
Fisher(data_numerica)Pearson <- function(x) 3*(mean(x) - median(x))/sd(x)
Pearson(data_numerica)Valores atípicos
# MANERA LENTA
# Límite superior
Ls = quantile(datos,0.75) + 1.5*IQR(datos)
# Límite inferior
Li = quantile(data,0.25) - 1.5*IQR(data)
atipicos <- datos[datos > Ls | datos < Li]
atipicos
length(atipicos) # Cantidad de valores atípicos
length(datos) # Cantidad de datos.
# MANERA RÁPIDA
b <- boxplot(datos)
b$out # Devuelve una lista formada por los valores atípicos.
length(b$out) # Cantidad de valores atípicos.
# Si ejecturas "b" (nombre del boxplot) en la consola, obtienes relevante sobre tal boxplot.
# Basta la existencia de al menos un valor atípico para ya considerar al rango intercuartilico como mejor medida de dispersión que la desviación estándar. De manera análoga para la media y la mediana.
Gráfico de dispersión
plot(datos.x,datos.y)
Añadir recta al gráfico 2D
abline(a,m)
Inserta la recta y = m*x + a en el gráfico 2D mostrado.
Cálculo a mano de beta0 y beta1
sd.y = sd(data_y)
# Si obtiene "NA", use sd(data,na.rm=T). Es para evitar las entradas vacías en nuestra data.
sd.x = sd(data_x)
cor.xy = cor(data_y,data_x)
mean.x = mean(data_x)
mean.y = mean(data_y)
beta1 = cor.xy*sd.y/sd.x
beta0 = mean.y - beta1*mean.x
beta0
beta1pairs(data) # Graficos de dispersión
cor(databmi) # Matriz de correlacionesrecta = lm(datos_y ~ datos_x,datos)
# data_y es la variable a ser explicada, la dependiente.
# Con data_x y data_y dentro de data, como categorías.
recta # Para ver beta0 y beta1
# También puedes ejecutarlo así:
recta = lm(datos$datos_y,datos$datos_x)
# Para añadir esa recta sobre el grafico relevante de dispersion, puedes emplear:
abline(coef(recta))
# Línea vertical:
abline(v = valor_de_x_fijo, lty = 2) # lty también puede valer otros enteros positivos.
# Línea horizontal:
abline(h = valor_de_y_fijo,col = n) # Donde n es un entero positivo o string como "blue".# R-cuadrado y R-cuadrado ajustado
summary(recta)
library(performance)
performance(recta)
# Comentario de la profesora para añadir a conclusiones:
# Para un modelo lm(Y~X) donde R^2 = 0.65: el modelo explica el 65% de la variabilidad de Y (la variable que estamos modelando).
# Para un modelo lm(Y~X) donde R^2 ajustado = 0.65: Ajustando por el número de variables,
# el modelo explica el 65% de la variabilidad de Y (la variable que estamos modelando).Comparar rectas de ajuste lineal
Tienes dos rectas de ajuste lineal obtenidas via lm(…): recta1 y recta2
library(performance)
compare_performance(recta1,recta2)
Puedes incluir más de 2 argumentos dentro de compare_performance().
Caso cuando se usa una variable cualitativa en un modelo de regresión lineal simple
# Ejemplo: datos que represente datosvef.csv
modelo <- lm(vef ~ sexo, datos) # Donde sexo es "Hombre" o "Mujer"
# En ese caso, R le asigna por su cuenta valores numéricos a "sexo" para poder hacer el modelo de regresión lineal
# Puedes ver qué valores numéricos les asignó R via el comando:
contrasts(factor(datos$sexo))
# Lo que está dentro de contrasts() debe ser de tipo "factor", por eso se le añade "factor" si es necesario.
# Ejemplos:
modelo = lm(variable_y ~ variable_x + variable_z) # Donde la variable_y es la que desea explicarse.
modelo # Ver los beta_i
summary(modelo)modelo = lm(variable_y ~ variable_x + variable_z,datos) # Las variables z, x e y como parte de "datos".
modelo
datos_predichos <- predict(modelo, datos)
# La función predict considera las variables denotadas en el lm de "modelo", por eso es que no requieres
# añadir en el código que consideras cierta variable de "datos" nomás, no todo "datos".residuales <- datos - datos_predichos
sum(residuales^2)
# También puedes usar ese indicador, suma de cuadrados de los errores, para comparar modelos.
# Pero tal valor no considera el tamaño de la muestra.
mean(residuales^2) # También es válido como indicador.
(mean(residuales^2))^0.5 # Error cuadrado promedio
set.seed(n) # Donde n es un número cualquiera.
sample(poblacion, size = m, replace = T)
# El comando set.seed() debe estar justo una línea antes de usar sample.sample(x=200, size =20 , replace=T) # x: Tamaño de poblacion, size: tamaño de muestra, replace = T: Muestreo con reposición.
sample(x=200, size =20 , replace=F) # x: Tamaño de poblacion, size: tamaño de muestra, replace = F: Muestreo sin reposición.
poblacion <- 1:100
sample(poblacion,size=10,replace=T)Estratificado
Nos fuerza a que se representen las partes de la población, incluso si son pequeñas.
En ese sentido, hacer un muestreo simple para una encuesta nacional del Perú estaría mal.
Puede ser con o sin reposición.
Ejemplo:
En la población, 2/3 son del estrato A y 1/3 es del estrato B. Entonces, en la muestra escogeremos lo siguiente:
sample(poblacion [1:20] , size =10 , replace = T) # 2/3
sample(poblacion [21:30] , size =5 , replace = T) # 1/3
Tiro de moneda justa
sample(c(0,1), numero.de.tiros, replace=T)
Comparar los cuartiles entre grupo control y el otro
by(datos$edad,datos$grupo,summary)
Comparar desviación entre grupo control y el otro
by(datos$edad,datos$grupo,sd)
Selccionar aleatoriamente 2 grupos de un data set
# Tenemos un data frame llamado "datos".
set.seed(2021) # Semilla cualquiera
filas.seleccionadas <- sample(1:nrow(datos),tamaño.grupo.1)
# Usualmente se escoge que el tamaño del grupo sobre el cual se crea el modelo sea
# el 70% del tamaño de "datos" (grupo total/inicial)
data.grupo.1 <- datos[filas.seleccionadas,]
data.grupo.2 <- datos[-filas.seleccionadas,] # Todas las filas, excepto por las asociadas a filas.seleccionadas.
# Ejemplo con tiro de dos dados:
library(prob)
posibles_resultados = 1:6
espacio_muestral = urnsamples(posibles_resultados,size = 2, # Número de dados lanzados. replace = T, # Reemplazo. ordered = TRUE) # ¿Importa el orden? Sí: TRUE
# Tamaño del espacio muestral
n.omega <- dim(espacio_muestral)[1]
# Evento A: La suma de los resultados es mayor a 5
# número de elementos en A:
cond_A = (rowSums(espacio_muestral) > 5) # rowSums: suma de elementos de una fila.
# cond_A es una lista formada por TRUE o FALSE, en caso cumplan la condición los casos testeados.
nA = sum(cond_A)
nA
# Probabilidad
pA = nA/n.omega
pA
# Evento B: La diferencia de los resultados es 2
cond_R = (abs(espacio_muestral$X1 - espacio_muestral$X2) == 2)
sum(cond_R)/nOmega # Probabilidad deseadaTécnicas de conteo
Factorial
factorial(n) # n!
Permutación
permutacion = function(n,k) factorial(n)/factorial(n-k) # permutacion(4,2)
Combinatoria
combinatoria = function(n,k) factorial(n)/(factorial(k)*factorial(n-k)) # combinatoria(4,2)
Independencia
Respecto a 2 variables en una base de datos, podemos revisar si ambas variables (eventos) son independientes via el uso de una apropiada tabla de contingencia.
La profesora recomienda que cuando comparemos un modelo probabilístico con un conjunto de datos,
hagamos la comparación con el histograma de los datos, no con la aproximación de la función densidad
de los datos (density(datos)), puesto que, si el tamaño del data set es pequeño, esto sesgaría a la función densidad empírica.
Esperanza y varianza
Interpretación
E(X): Es el valor al que se aproxima la media de los resultados obtenidos en los experimentos, a medida que realizemos cada vez más de estos. Si X es una variable aleatoria continua, entonces también puede interpretarse E(X) como el valor que esperaríamos observar al realizar el experimento asociado a X.
Var(X): Es el cuadrado de cuanto se espera que varien los valores del experimento con respecto a su valor esperado.
Un valor grande (pequeño) significa que los resultados del experimento varian bastante (poco) con respecto a su valor esperado.
Maneras de presentar la gráfica de la funcion de probabilidad f(x)
# Ejemplo:
plot(dbinom(1:50,50,0.5),type="p") # Puntos en la gráfica
plot(dbinom(1:50,50,0.5),type="l") # Líneas en la gráfica (medio que la hace parecer continua a a gráfica de variable discreta)library(Rlab)
# Función de distribución
dbern(0,prob=0.7) # Probabilidad de que falle el experimento, cuando la proabilidad de éxito vale 0.7.
# Función de distribución acumulada
pbern(0, prob=0.7) # Vale 0.3 .
pbern(1, prob=0.7) # Vale 1 .
# Simulación
rbern(n,prob=p) # n es la cantidad de datos que quieres para la simulación.# Función de distribución
dbinom(0, size=10, p=0.5)
# Size es la cantidad de experimentos Bernoulli independientes realizados; p, la probabilidad de éxito del experimento de Bernoulli.
# Función de distribución acumulada
pbinom(m, size=10, p=0.5)
# Simulación
rbinom(n,size,p)Distribución hiper geométrica
Parecida a la binomial, pero se realizan los experimentos SIN reposición, mas, aún de manera independiente.
Cuando la población es mayor que 100 y la probabilidad de éxito es menor o igual a 10%, entonces se puede aproximar via una binomial.
Denotemos las siguientes variables:
x: Número de éxitos en la muestra.
m: Número de éxitos en la población.
n: Número de fracasos en la población.
k: Número de extracciones realizadas (tamaño de la muestra seleccionada)
dhyper(x,m,n,k) # m: número de éxitos, n: número de fracasos, k: tamaño de la muestra
phyper(x,m,n,k) # Probabilidad acumulativa
qhyper(x,m,n,k)
rhyper(cantidad_de_datos_por_simular,m,n,k)Distribución Poisson
dpois(x,lambda) # P(X=x)
ppois(x,lambda) # Probabilidad acumulativa
qpois(x,lambda)
rpois(n,lambda)# Ejemplo:
# Definamos la función de densidad
densidad <- function(x) (3/100^3)*(x^2) # Con x entre 0 y 100.
# Función de distribución acumulada
densi_acumulada <- function(x) pracma::integral(densidad,0,x) # Con x positivo.
auxiliar <- function(x,cuantil_deseado) abs(densi_acumulada(x)-cuantil_deseado)
# Cuantil 0.5
optimize(auxiliar,c(0,100), 0.5)$minimum
# optimize(funcion_auxiliar, extremos del intervalo sobre el cual se va a buscar el cuantil pedido ( [0;100] en el ejemplo pasado) , valor entre 0 y 1) library(pracma)
# Ejemplo:
funcion.densidad <- function(x) (1/60)*(exp(-x/60))
integral(funcion.densidad,0,60) # P(0 < X < 60)
integral(funcion.densidad,60,Inf) # P(60 < X > infinito)
# Puedes emplear -Inf como "menos infinito", siempre y cuando la integral por calcular serep de antemano que converge.Exponencial
dexp(x, rate = lambda)
pexp(q, lambda)
qexp(p, lambda)
rexp(n,lambda)
Ejemplo de comparación entre modelo exponencial y datos
# Modelo vs Datos
library(haven)
# Encuesta Nacional ENSUSALUD 2015: Pacientes
salud.paciente <- read_sav("http://portal.susalud.gob.pe/wp-content/uploads/archivo/base-de-datos/2015/CUESTIONARIO%2001%20-%20CAPITULOS.sav")
# Datos de pacientes: Duración de atención
attr(salud.paciente$C1P14,"label")
hist(salud.paciente$C1P14,prob=T, xlab="Duraciónn de atenciónn", ylab="Densidad",main="")
x = seq(0,80,by=0.1)
points(x,dexp(x,rate=0.08),col=2,type="l")
points(x,dexp(x,rate=0.09),col=3,type="l")
points(x,dexp(x,rate=0.1),col=4,type="l")
legend(50,0.08,legend=c(0.08,0.09,0.1), title = expression(lambda), bty ="n",pch=15,col=2:4)Función Gamma
Esto es extra al tema de v.a. continuas, pero lo incluyo acá pues podría ser necesario usarse en las dos siguientes distribuciones.
gamma(x)
Distribucion Gamma
dgamma(x, shape, rate) # = dgamma(x,r,lambda) # rate = tasa
pgamma(x, shape, rate)
qgamma(x, shape, rate)
rgamma(n,r,lambda)dweibull(x, shape, scale) # = dweibull(x,alpha,beta) # scale = 1/rate (= 1/lambda, cuando shape vale 1)
pweibull(x,alpha,beta)
qweibull(x,alpha,beta)
rweibull(n,alpha,beta)dnorm(x,media,desviacion.estandar)
pnorm(x,media,desviacion.estandar)
qnorm(x,media,desviacion.estandar)
rnorm(n,media,desviacion.estandar)dt(x, df) # df = Degrees of freedom "=" número de observaciones - 1 (como lo usaremos en el curso)
pt(q, df)
qt(p, df)
rt(n, df)
# Forma rápida de hallar el intervalo de confianza:
t.test(datos, conf.level = 0.95)
# Podemos usarlo en el caso B también, pero mínimo debe cumplirse que el tamaño de la muestra es mayor o igual a 30.t.test(datos,mu=media_planteada,conf.level = 0.95)
# Por default, t.test considera significancia de 5% . Ejemplo:
\(H_0 : \mu \leq 50\)
t.test(datos,mu=50, alternative = "greater")
\(H_0 : \mu \geq 50\)
t.test(datos,mu=50, alternative = "less")