Вы находитесь на странице: 1из 10

# Factor = x

# Respuesta = y

# MODELOS----
# 1) Analiticamente----
#pongo el modelo0 cuando no hay variable #factor./regresora. y=mu+e
modelo0=lm(Respuesta~1)
summary(modelo0)
modelo1=lm(Respuesta~Factor)
summary(modelo1)

# 2) Graficamente----
plot(respuesta~factor)
abline(modelo0,col="Red")
abline(modelo1,col="Green")

# 3) Residuos----
par(mfrow=c(2,2))
plot(modelo1)
library(car)
influenceIndexPlot(modelo1)
library(car)
outlierTest(modelo1)

#Graficando
modelo1$residuals
plot(modelo1$residuals,main="Residuos vs indices")
# Diferencia minima
sum(modelo1$residuals^2)
# estimación de sigma
sqrt(sum(modelo1$residuals^2)/(length(Factor)-2))
# BETA1 y BETA0----
beta1=sum((Factor-mean(Factor))*(Respuesta-
mean(Respuesta)))/sum((Favtor-mean(Factor))^2)
beta0=mean(Respuesta)-beta1*mean(Factor)

#INTERVALOS DE CONFIANZA Y
PREDICCION----
# Bandas de confianza y de prediccion
predict(modelo0,interval="confidence")
predict(modelo0,interval="predict")
modelo1 = lm(Respuesta~Factor)
conf = predict(modelo1, interval = "confidence")
pred = predict(modelo1, interval = "predict")
plot(Factor, Respuesta, ylim = c(min(pred),max(pred)))
Factoror = order(Factor)
lines(Factor, modelo1$fitted, col = "green")
# Bandas de confianza
lines(Factor[Factoror], conf[,2][Factoror], col = "green")
lines(Factor[Factoror], conf[,3][Factoror], col = "green" )
# Bandas de prediccion
lines(Factor[Factoror], pred[,2][Factoror], col = "red" )
lines(Factor[Factoror], pred[,3][Factoror], col = "red" )

# Intervalo de confianza (CANTIDAD


MEDIA)
Factornuevo = data.frame(Factor = )
predict(modelo1, Factornuevo, interval = "confidence")
# Intervalo de prediccion
Factornuevo = data.frame(Factor = )
predict(modelo1, Factornuevo, interval = "predict")
# TRANSFORMACIONES-----
library(MASS)
boxcox(Respuesta~Factor)
#grafico cae en intervalo con
#cero:transformo logaritmicamente de la variable respuesta
modelo_log = lm(log(respuesta)~factor)
summary(modelo_log )
# log(respuesta) = ordenada + pendiente*x

# graficamos el modelo final en la escala transformada


plot(factor, log(respuesta), xlab = 'Puntaje', ylab = '')
abline(modelo_log ,col='red')
#conclusion

# graficamos el modelo final en la escala original (rojo) y el modelo


# sin transformar (verde)
plot(factor,respuesta)
points(sort(factor),exp(ordenada) * exp(pendiente* sort(factor)),col=2,type='l')
abline(ajuste,col='green')
# aqui se puede observar que el modelo final (transformado - rojo) ajusta
# mejor a los datos que el modelo sin transformar (verde)

# f)
# plot de los residuos
par(mfrow = c(2,2))
plot(modelo_log )
# graficamente puede observarse que ahora los residuos no siguen un patron, la
varianza parece ser constante y el supuesto de normalidad tambien parece
verificarse
# test de outliers
outlierTest(modelo_log )
# el test de outliers muestra un p-valor = 0.28004 lo que indica que ahora no
tenemos evidencia suficiente para afirmar que existen outliers

# g)
summary(modelo_log )
# el p-valor correspondiente a la pendiente es 2e-16, entonces sí tenemos
# evidencia suficiente para afirmar que la variable Score afecta a la variable
salario máximo mensual

# h) log(respuesta) = ordenada + pendiente * x


# MaxSalary = exp(7.046e+00) * exp(1.889e-03 * Score)
# un incremento de 100 unidades en el Score produce un
# incremento de
exp(1.889e-03*100)
# 1.20792
# en el salario maximo mensual
# es decir, un aumento del 20,79% en el salario.

# i)
nuevoscore = data.frame(Score = )
predict(ajustetrans, nuevoscore, interval = "confidence")
# fit lwr upr
# 7.801612 7.787247 7.815978
# este intervalo esta dado en la escala transformada (escala logaritmica)
# para volver a la escala original deberíamos aplicar la funcion
# exponencial:
# fit lwr upr
# exp(7.801612) exp(7.787247) exp(7.815978)
# 2444.539 2409.675 2479.911

HACER TODO EL ANALISIS ANTERIOR PERO CON MODELO NUEVO.


boxcox(log(Respuesta)~Factor) ---->>> lo verifico con esto y si o si el
intervalo debe caer en 1 para dejar de transformar.
#uno :no hago nada
#diferente : busco el valor mas facil para transformar.
boxcox(log(MaxSalary)~Score, lambda = seq(-2,5,0.01))
# Si por ejemplo hubiese quedado una transformacion del tipo logartmica
y queremos graficarla
points(Score[order(Score)],exp(7.046e+00) * exp(1.889e-03 *
Score[order(Score)]),col=2,type="l")
################################################
plot(log(respuesta)~factor)
points(sort(Score),exp(factor) * exp(pendiente *
sort(Score)),col=2,type='l')
abline(modelo1nuevo,col='green')
#modelo logaritmico
log(y)=beta1*x+beta0
mediana (y)=exp(beta0)*exp(beta1)*x
log(y)=beta1*(x+1)+beta0
mediana (y)=(exp(beta0)*exp(beta1)*x)*exp(beta1*100)
# Cuando diga que busquemos un estimador de la varianza, en
el summary del modelo buscamos el
# Residual standard error
#si nos dicen el estimador de la varianza elevamos al cuadrado este valor

#modelo raiz cuadrada


modelo_raiz = lm(sqrt(respuesta)~factor)
summary(modelo_raiz)

# estimación del modelo:


# sqrt(Y_i) = ordenada - pendiente * x_i

# i)
par(mfrow = c(2,2))
plot(modelo_raiz)
## conlcusion
outlierTest(modelo_raiz)
# conlcucion....
plot(factor,sqrt(respuesta))
abline(modelo_raiz,col='red')

# si quisiera ver sobre los datos en la escala original:


plot(factor,respuesta)
lines(sort(factor), (ordenada - pendiente * sort(factor))^2, col=2)

# j)
# con la variable transformada
nuevopH = data.frame(pH= )
predict(modelo_raiz, nuevopH, interval = "confidence")
# fit lwr upr
#
# En la escala original (vuelvo a la variable original)
(predict(modelo_raiz, nuevopH, interval = "confidence"))^2
# fit lwr upr
#

# Intervalo de confianza para la pendiente------


pendiente = # Estimate
SE= # Std. Error
n=length(Factor)
t=qt(1-alfa/2,n-2)
LI=pendiente-t*SE
LS=pendiente+t*SE
IC=c(LI,LS)

# MODELO--------
# Y = beta0 + beta1*x_i+e_i-- i:nro de datos
# y = variable aleatoria ya que e es aleatoria, es la/el...
(variable que me dicen) , cuando varia la/el (variable
factor), toma diferentes valores.
# x = es la variable regresora no aleatoria, se mide con error
despreciable
# beta0= ordenada, el valor de y cuando x vale 0
# beta1= pendiente, muestra como cambia y con alteracion
de x
# ei= error aleaotorio o alteracion aleatoria, con varianza
#cte
#E(ei) = 0, var(ei) = sigma^2

#Supuestos
# varianzas ctes
# datos independientes
# errores independientes normales con ~N(0,sigma)

#PLANTEAMOS EL TEST
#H0:beta1=0
#HO:beta1=!0

#como leer cada cosa


cuando hago el modelo y el summary nos tira esto
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.82540 1.07497 5.419 5.68e-05 ***
temp 0.56762 0.02367 23.980 5.73e-14 ***
#con el valor de p-valor respondo al test que al variar x varia o no y
#donde : ordenada al origen, pendiente, p-valor, t-value

t-value= T=(pendiente-pendente0)/desvio(pendiente)
se planteada la hipotesis de pendiente igual a cero(nula) contra distinto de
cero(alternativa)
p-valor:2*(tcritgradosdelib>tcritico (T))
#conclusion rechazo la nula porque el p-valor es 5.73e-14.
OUTLIERTEST.
SE PROPONE

# Quizas haya un outlier en el dato 13 y 18.


# Para ello, realizamos el siguiente test
# H0: Hay outliers
# H1: No hay outliers

#HAGO EL TETS
librari(car)....

No Studentized residuals with Bonferonni p < 0.05


Largest |rstudent|:
rstudent unadjusted p-value Bonferonni p
18 -2.063973 0.056766 NA

#ME VAN A APARECER TODOS LOS VALORES POSIBLES, ME GUIO POR EL


P-VALOR,
#EL NA SIGNIFICA QUE EL P-VALOR ES MUCHO MAYOR A UNO, CON LO
CUAL ACEPTO LA NULA, Y DIGO QUE NO HAY OUTLIERS.

#en el nfluenceIndexPlot, nos aparece 4 diagramas, miro el primero y el cuarto.


Me fijo entre todos los palitos cual es el mas allto.. el mas alto sera el mas influyente,
pero no quiere decir que sea outlier.

#CUANDO NOS PIDEN INTERVALO DE CONFIANZA PARA LA


PENDIENTE
BUSCO EN EL SUMMARY DEL MODELO

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.82540 1.07497 5.419 5.68e-05 ***
temp 0.56762 0.02367 23.980 5.73e-14 ***

#CUANDO ME PREGUNTA... POR EJEMPLO


MODELO : Y=PENDIENTE*X+ORDENADA
CASO PARTICULAR SALARIOMAXIMO=PENDIENTE*SCORE+ORDENADA

Tiene evidencia suficiente para afirmar que la variable score afecta el salario
mensual m´aximo? Informe el valor de la tabla que utiliza para responder dicha
pregunta.
#HACEMOS UN SUMMURY(MODELO) Y ME FIJO EL PVALOR....
PLANTEAMOS LA HIPOTESIS..
HO:NO AFECTA
H1:AFECTA
P-VALOS<0,05,,, AFECTA PORQUE RECHAZO LA NULA.
(VIENE DE LA HIPOTESIS PENDIENTE DISTINTO DE CERO)

#ME PUEDEN DECIR TAMBIEN


De acuerdo al modelo con el que se qued´o, ¿qu´e incremento en el salario m
´aximo mensual produce un incremento de 100 unidades en el score?

#AHI LO QUE HACEMOS ES, VOLVER AL MODELO ORIGINAL, SI ES QUE


TRANSFORME CON ANTERIORIDAD.
POR EJEMPLO SUPONIENDO QUE NUESTRA TRANSFORMADA ERA...

log(MaxSalary) = 7.046e+00 + 1.889e-03* Score


log(MaxSalary) = 7.046e+00 + 1.889e-03* (Score+100)
(y)=(exp(beta0)*exp( beta)*x)*exp(beta1*100)
despejo.....
(y)=(exp(7.046e+00)*exp( 1.889e-03)*x)*exp( 1.889e-03*100)

nos interesa
exp( 1.889e-03*100)
#el 100 va porque nos dice que aumenta en 100 unidades.
Si nos da 1,70 , quiere decir que aumento un 70%
si nos da 0,80, quiere decir que disminuyo 20%.

#ELIMINACION DE OUTLIERS
redefinomos las variables factor y respuesta y usamos esas
solo uno
Gan=log(Ganancia)[-c(23)]
pagan=CantPag[-c(23)]

mas de uno
Publi = CantPag[-c(2,23)]
Gan = Ganancia[-c(2,23)]

#EJEMPLO
#transformacion +eliminacion outlier
modelo = lm(Ganancia~CantPag)
summary(modelo)

plot(CantPag,Ganancia)
abline(modelo)
# la recta no parece ajustarse a los datos, hay un posible outlier

# c)
par(mfrow=c(2,2))
plot(modelo)
# Se observa una curvatura en los residuos y no parece cumplirse el
supuesto de
# normalidad de los residuos.
# hay posible outlier

# d)
library(car)
influenceIndexPlot(modelo)
outlierTest(modelo)

# outlier en los datos 2 y 23. Los quitamos.

Publi = CantPag[-c(2,23)]
Gan = Ganancia[-c(2,23)]
modelo2 = lm(Gan ~Publi)
summary(modelo2)

par(mfrow=c(2,2))
plot(modelo2)

# se sigue observando cierta curvatura en los residuos


# y la falta de normalidad de los mismos

# e)
boxcox(modelo2)
# la transformacion correcta parece ser la raiz cuadrada

modelo3 = lm(sqrt(Gan)~Publi)
par(mfrow=c(2,2))
plot(modelo3)
influenceIndexPlot(modelo3)
outlierTest(modelo3)

# los residuos mejoran notablemente y ya no hay outliers


# Por lo tanto, el modelo final es:
# Ganancia^1/2 = 1.09866 + 0.20136 * CantPag

# f)
summary(modelo3)
# el p-valor = 5.19e-12 < 0.05, por lo tanto, el número de páginas
dedicadas a la
# publicidad, afecta la ganancia obtenida

# g) Modelo final estimado:


# Ganancia^1/2 = 1.09866 + 0.20136 * CantPag

# h)
sqrt_GANANCIA16 = 1.09866 + 0.20136 * 16
# 4.32042
# Por lo tanto, la ganancia media si se dedican 16 paginas a
# publicidad, es 4.32042^2 = 18.666

Вам также может понравиться