Instalar el paquete “car”: install.packages(“car”) Cargar la librería car: library(car)
library("car")
Cargar los datos Chile del paquete car: data(Salaries, package=“car”) Ver los datos en su escritorio de trabajo (pantalla): Salaries Ver (ayuda) que representa y una descripción de los datos: help(Salaries) Ver los nombres exactos de las variables: names(Salaries)
datos<- Salaries
names(datos)
## [1] "rank" "discipline" "yrs.since.phd" "yrs.service"
## [5] "sex" "salary"
Tenga en cuenta quienes son variables cuantitativas y cuales cualitativas
head(datos)
## rank discipline yrs.since.phd yrs.service sex salary
## 1 Prof B 19 18 Male 139750
## 2 Prof B 20 16 Male 173200
## 3 AsstProf B 4 3 Male 79750
## 4 Prof B 45 39 Male 115000
## 5 Prof B 40 41 Male 141500
## 6 AssocProf B 6 6 Male 97000
A pesar que algunas variables no son cuantitativas, al contrario son categoricas y por ejemplo el rank es ordinal, vamos a realizar el diagrama de dispersión
pairs(datos,col="blue")
Teniendo en cuenta el gráfico vamos correr el modelo de regresión simple entre las variables: “yrs.since.phd” “yrs.service”, pero primero vamos a revisar la correlación entre las variables. Por lo tanto vamos a determinar el coeficiente de correlación asumiendo normalidad
cor(datos$yrs.since.phd,datos$yrs.service)
## [1] 0.9096491
Considera que la correlación entre estas dos variables es alta, interprete el resultado
regresion<- lm(yrs.since.phd ~ yrs.service, data=datos)
regresion
##
## Call:
## lm(formula = yrs.since.phd ~ yrs.service, data = datos)
##
## Coefficients:
## (Intercept) yrs.service
## 6.4384 0.9013
Es correcta la elección de la variable dependiente yrs.since.phd explique porque Escriba el modelo de la forma:y=intercepto+oendiente*x
Interprete el intercepto y la pendiente
summary(regresion)
##
## Call:
## lm(formula = yrs.since.phd ~ yrs.service, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.518 -3.748 -1.550 2.522 24.450
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.43838 0.45323 14.21 <2e-16 ***
## yrs.service 0.90132 0.02071 43.52 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.36 on 395 degrees of freedom
## Multiple R-squared: 0.8275, Adjusted R-squared: 0.827
## F-statistic: 1894 on 1 and 395 DF, p-value: < 2.2e-16
Teniendo en cuenta el p-value=2e-16 segun el resultado de la prueba, se rechaza o no la hipotesis con valor de significancia del 5%? que la pendiente es cero Teniendo en cuenta el p-value=2e-16 segun el resultado de la prueba, se rechaza o no la hipotesis alrededor de la pendiente con valor de significancia del 5%? Considera que la variable yrs.service es significativa en el modelo
Teniendo en cuenta el valor de R cuadrado adj=0.827 , considera usted que el modelo tiene un buen ajuste lineal? Interprete el valor R cuadrado ajustado Teniendo en cuenta que la prueba para verficar el ajuste de los datos al modelo esta dado por F-statistic: 1894 on 1 and 395 DF, p-value: < 2.2e-16 considera que el modelo cumple con el ajuste? ## Estimaciones con el modelo Encuentre las estimaciones de yrs.since.phd para los siguientes valores de la variable x:
x<- c(12,11,35)
x
## [1] 12 11 35
Graficas del modelo
plot(datos$yrs.service,datos$yrs.since.phd, xlab = "años de serivio", ylab = "años de PhD",col="red")
abline(regresion)
## Análisis de los Residuos Validación del modelo
En este caso se desea determinar los residuos(error)entre el modelo y lo observado y ver si los residuos cumplen con: 1. Tener media=0 2. Varianza= constante 3. Se distribuyen normal(0,constante) Los residuos se generan a continuación (por facilidad solo generamos los primeros 20 [1:20])
residuos <- rstandard(regresion)
residuos[1:20]
## 1 2 3 4 5 6
## -0.68414645 -0.16058147 -0.96218984 0.63921055 -0.63640410 -1.09326547
## 7 8 9 10 11 12
## 0.52900688 -0.37536060 -0.64730590 -0.87095822 -0.30826102 -0.23226232
## 13 14 15 16 17 18
## -1.18678371 -0.83107204 -0.49733467 0.53469705 -1.02094494 0.17157280
## 19 20
## 1.83697173 0.02133757
Valores ajustados, es decir el valor de la variable y dad0 por el modelo (por facilidad solo generamos los primeros 20 [1:20])
valores.ajustados <- fitted(regresion)
valores.ajustados[1:20]
## 1 2 3 4 5 6 7
## 22.662223 20.859574 9.142352 41.590044 43.392693 11.846326 27.168847
## 8 9 10 11 12 13 14
## 46.997993 24.464873 22.662223 13.648976 8.241027 7.339702 6.438377
## 15 16 17 18 19 20
## 22.662223 9.142352 24.464873 37.083420 27.168847 38.886070
Prueba de normalidad, utilizamos la prueba QQ que permite deducir si los datos se ajustan a la normal (si los datos estan cerca de la línea)
qqnorm(residuos,col="blue")
qqline(residuos,col="red")
Teniendo en cuenta esta grafica condidera que los que estan a más de dos desviaciones estandar se distribuyen normal?