You are on page 1of 16

Universidad de Puerto Rico en Aguadilla

Regresin Lineal con R


Prof. Jos Neville Daz Caraballo
1. Qu es R?
R es un sistema para la realizacin de clculos estadsticos y la
creacin de grficas. Este consiste en un lenguage, acceso a funciones
en el sistema y la habilidad de correr programas guardados en archivos
script. R es ms all de un paquete estadstico, es un lenguage.
Existen versiones para Windows, Mac, Unix y Linux. Este documento
estar presentado en Linux Fedora Core 3.
2. Cmo obtener R?
R es gratis, su licencia es GPL. Para obtener su copia visite
http://www.r-project.org/.
Este
es
uno
de
los
proyectos
importantes del open sorce.

ms

3. Pantalla Inicial
El Programa luce de esta manera:

Los comandos deben ser escritos en la lnea de comandos > . Para


ejecutar debes oprimir enter. Para comandos usaremos BitstreamChartery
para comentario el signo de # seguido del comentario todo en Bitstream
Vera Sans Mono.

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


4. Regresin Lineal
>datos<read.table("ftp://math.uprag.edu/pub/areaprecio.dat",header=T)
#read.table commando para leer datos
>attach(datos)
>?plot

#attach comando que establece el conjunto de datos a


#utilizar

#? el signo de pregunta junto al comando nos da la ayuda de ese


#comando en particular.

>plot(area,precio)

#plot diagrama de dispersin de las variables rea y


#precio

>cor(area,precio)
[1]0.85818

#cor correlacin Pearson

>cor.test(area,precio)

#cor.test correlacin Pearson con prueba de hiptesis

Pearson'sproductmomentcorrelation
data:areaandprecio
t=6.0275,df=13,pvalue=4.251e05
alternativehypothesis:truecorrelationisnotequalto0
95percentconfidenceinterval:
0.61728320.9519517
sampleestimates:
cor

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


0.85818
>r1<lm(precio~area)
>r1

#lm(y ~ x) regresin lineal

Call:
lm(formula=precio~area)
Coefficients:
(Intercept)area
73167.7538.52
>r2<lm(precio~0+area)
>r2

#lm(y ~ 0+x) regresin lineal a travs del origen

Call:
lm(formula=precio~0+area)
Coefficients:
area
73.86
>summary(r2)

#summary resumen de un objeto. En este caso de


#regresin sin intercepto

la

Call:
lm(formula=precio~0+area)
Residuals:
Min1QMedian3QMax
47013622183232292541253
Coefficients:
EstimateStd.ErrortvaluePr(>|t|)
area73.8613.34422.092.79e12***

Signif.codes:0`***'0.001`**'0.01`*'0.05`.'0.1`'1
Residualstandarderror:25680on14degreesoffreedom
MultipleRSquared:0.9721,AdjustedRsquared:0.9701
Fstatistic:487.9on1and14DF,pvalue:2.786e12

>plot(area,precio)
>abline(r1)
#abline aade la lnea de regresin al diagrama de puntos

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla

> summary(r1)
Call:
lm(formula=precio~area)
Residuals:
Min1QMedian3QMax
1962387592745915731263
Coefficients:
EstimateStd.ErrortvaluePr(>|t|)
(Intercept)73167.74812674.1435.7736.46e05***
area38.5236.3916.0284.25e05***

Signif.codes:0`***'0.001`**'0.01`*'0.05`.'0.1`'1
Residualstandarderror:14120on13degreesoffreedom
MultipleRSquared:0.7365,AdjustedRsquared:0.7162
Fstatistic:36.33on1and13DF,pvalue:4.251e05

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


>resid(r1)#resid residuales de lm(precio~area)
1234567
12048.3468304.66215713.8911752.2598213.89115481.12419623.119
891011121314
9604.5667509.2762744.5418823.0339490.7246956.87331263.038
15
9213.891
>coef(r1)#coef coeficientes de lm(precio~area)
(Intercept)area
73167.7483838.52307

valor estimado que nos da el modelo lm(precio~area)


>fitted(r1)#fitted y
12345678
191048.3134804.7150213.9123247.7150213.9148518.9165623.1119395.4
9101112131415
142509.3121244.5151177.0142509.3115543.1188737.0150213.9
>anova(r1)#anova tabla de anlisis de varianza
AnalysisofVarianceTable
Response:precio
DfSumSqMeanSqFvaluePr(>F)
area17241245891724124589136.3314.251e05***
Residuals132591087442199314419

Signif.codes:0`***'0.001`**'0.01`*'0.05`.'0.1`'1

>par(mfrow=c(2,2))

#par(mfrow=c(2,2)) divide la pantalla en dos filas


#y dos columnas

>attributes(r1)#attributes demuestra los atributos de un objeto


s
$names
[1]"coefficients""residuals""effects""rank"
[5]"fitted.values""assign""qr""df.residual"
[9]"xlevels""call""terms""model"
$class
[1]"lm"

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


>plot(r1)

#r1 objeto con los atributos de lm(precio ~ area)


#plot(r1) grficas de anlisis de residuales

Warningmessage:
X11usedfontsize8when7wasrequested
>datos
areaprecio
13060179000
21600126500
32000134500
41300125000
52000142000
61956164000
72400146000
81200129000
91800135000
101248118500
112025160000
121800152000
131100122500
143000220000
152000141000
>area2<area^2

#creando el vector de rea al cuadrado

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


>precio2<precio^2
>length(area)

#creando el vector de precio al cuadrado

#length calcula el tamao del objeto, similar a count en


#minitab

[1]15
>Sxx<sum(area2)(sum(area)^2)/length(area)
>Syy<sum(precio2)(sum(precio)^2)/length(precio)
>as.numeric(area)

#as.numeric se utiliza para eliminar el problema de


#overflow
[1]306016002000130020001956240012001800124820251800110030002000
>as.numeric(precio)
[1]179000126500134500125000142000164000146000129000135000118500
[11]160000152000122500220000141000
>Sxy<sum(as.numeric(area*precio))
sum(as.numeric(precio))*sum(as.numeric(area))/length(area)
>beta<Sxy/Sxx
#calculando beta
>beta
[1]38.52307
>alpha<mean(precio)beta*mean(area)
#calculando alpha
>alpha
[1]73167.75

>install.packages("Simple",contriburl="http://www.math.csi.cuny.edu/Statistics/R/simpleR/")
#instalando un paquete desde una direccin de internet
>library("Simple")

#library llamando la librera Simple

>>simple.lm(area,precio,show.ci=TRUE,conf.level=.90)

#simple.lm excelente rutina


#creando bandas de
#confianzas

Call:
lm(formula=y~x)
Coefficients:
(Intercept)x
73167.7538.52

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla

>?simple.lm

#?simple.lm solicitando ayuda sobre la funcin

>simple.lm(area,precio,pred=c(2500))

#prediciendo el valor de una casa


#con rea de 2500

[1]169475.4
Call:
lm(formula=y~x)
Coefficients:
(Intercept)x
73167.7538.52

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla

>data(emissions) #data se utiliza para llamar el conjunto de datos


>attach(emissions) #attach hacindolo disponible
>simple.hist.and.boxplot(perCapita) #Esta rutina pertenece a la librera Simple

Departamento de Matemticas

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


>simple.scatterplot(perCapita,CO2)#Esta rutina pertenece a la librera Simple

>summary(precio)
Min.1stQu.MedianMean3rdQu.Max.
118500127800141000146300156000220000
>sd(precio)
[1]26501.12
>x<rnorm(100,146300,26501)#Vector con media y sd igual a precio
>hist(precio,probability=TRUE)#hist histograma de la variable precio
>curve(dnorm(x,mean=mean(x),sd=sd(x)),lty=3,add=T)#Esta aade la curva normal

Departamento de Matemticas

10

Regresin Lineal

Universidad de Puerto Rico en Aguadilla

>rendimiento<
read.table("/home/jneville/Desktop/Documentos/Regresion/rendimiento.dat",header=T)
#llamando el conjunto de datos
>rendimiento
YX1X2X3X4X5X6
167616475608145
267714567808648
352596764697954
452713244486543
566625172718143
655675160688139
742654158717635
868786573937742
980765784857935
1050584355568440
1187867081827530
1284833883697941
1370848268647837
1479785382847839
1583654982655538
1675866379848041
>library("MASS")#llamando la librera MASS que contiene la funcin stepAIC
>rendimiento.lm<lm(Y~.,data=rendimiento)#creando el objeto que contiene la
#regresin multivariada
>rendimiento.backward<stepAIC(rendimiento.lm,k=log(length(rendimiento)))

Departamento de Matemticas

11

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


#realizando el stepwise, importante usar k=log(length(rendimiento) este nos
#brinda la salida ms similar a Minitab. Recuerde, este es un curso
#introductorio y no estaremos discutiendo las diferencias entre los
#mtodos que utiliza Minitab y R.
Start:AIC=55.89
Y~X1+X2+X3+X4+X5+X6
DfSumofSqRSSAIC
X613.54228.1554.19
X217.28231.8854.45
X5126.96251.5655.76
<none>224.6055.89
X4159.75284.3657.72
X11226.19450.7965.09
X311123.711348.3182.62
Step:AIC=54.19
Y~X1+X2+X3+X4+X5
DfSumofSqRSSAIC
X216.64234.7852.71
X5123.91252.0553.84
<none>228.1554.19
X4159.26287.4155.94
X11243.94472.0963.88
X311120.521348.6780.68
Step:AIC=52.71
Y~X1+X3+X4+X5
DfSumofSqRSSAIC
X5129.25264.0452.64
<none>234.7852.71
X4161.35296.1454.48
X11237.31472.0961.94
X311135.841370.6278.99
Step:AIC=52.64
Y~X1+X3+X4
DfSumofSqRSSAIC
<none>264.0452.64
X41115.92379.9656.52
X11261.92525.9661.72
X311289.161553.2079.05

Departamento de Matemticas

12

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


Haciendo predicciones en regresin lineal simple
>new<c(1800,2000,2500,3000)#vector con los valores que se desean predecir
>attributes(r1)
$names
[1]"coefficients""residuals""effects""rank"
[5]"fitted.values""assign""qr""df.residual"
[9]"xlevels""call""terms""model"
$class
[1]"lm"
>r1$coefficients[1]#intercepto r1<-lm(precio~area)
(Intercept)
73167.75
>r1$coefficients[2]#pendiente
area
38.52307
>predictions<r1$coefficients[1]+r1$coefficients[2]*new
>predictions
[1]142509.3150213.9169475.4188737.0
Haciendo predicciones en regresin lineal mltiple
>attributes(rendimiento.backward)
$names
[1]"coefficients""residuals""effects""rank"
[5]"fitted.values""assign""qr""df.residual"
[9]"xlevels""call""terms""model"
[13]"anova"
$class
[1]"lm"
>rendimiento.backward$coefficients#observando los coeficientes
(Intercept)X1X3X4
20.33581870.50998091.04328510.3132179
>rendimiento#observando el conjunto de datos
YX1X2X3X4X5X6
167616475608145
267714567808648
352596764697954
452713244486543
566625172718143
655675160688139
742654158717635
Departamento de Matemticas

13

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


868786573937742
980765784857935
1050584355568440
1187867081827530
1284833883697941
1370848268647837
1479785382847839
1583654982655538
1675866379848041
>predictionsstep<
rendimiento.backward$coefficients[1]+rendimiento.backward$coefficients[2]*rendimiento[2]+r
endimiento.backward$coefficients[3]*rendimiento[4]+rendimiento.backward$coefficients[4]*ren
dimiento[5]
>predictionsstep
X1
170.22633
260.71550
354.91127
446.74292
564.16106
655.13120
751.08501
866.47325
979.43517
1049.08356
1182.34477
1286.97323
1373.40003
1478.68177
1578.00316
1679.63177
>predictionsstep<
rendimiento.backward$coefficients[1]+rendimiento.backward$coefficients[2]*rendimiento[2]+r
endimiento.backward$coefficients[3]*rendimiento[4]+rendimiento.backward$coefficients[4]*ren
dimiento[5]
>residuales<predictionssteprendimiento[1]#

e = y y

>residuales
X1
13.2263315
26.2844971
32.9112726
45.2570835
51.8389393
Departamento de Matemticas

14

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


60.1311975
79.0850119
81.5267519
90.5648346
100.9164423
114.6552270
122.9732325
133.4000259
140.3182251
154.9968381
164.6317670
>mean(residuales)#siempre la media de los residuales es cero
X1
8.881784e16
>S2<1/(dimension[1](3)1)*sum(residuales^2) #Estimacin de la varianza
#poblacional
>S2
[1]22.00309
>sqrt(S2)#Estimacin de la desviacin estandar poblacional
[1]4.690746
>z<residuales/sqrt(S2)#Residuales estudentizados residuales divididos
#entre la estimacin de la desviacin poblacin.
>z
X1
10.68780782
21.33976507
30.62064176
41.12073516
50.39203561
60.02796944
71.93679483
80.32548171
90.12041468
100.19537241
110.99242794
120.63385073
130.72483699
140.06784106
151.06525456
160.98742661

Departamento de Matemticas

15

Regresin Lineal

Universidad de Puerto Rico en Aguadilla


>predic<read.table("/home/jneville/Desktop/Documentos/Regresion/predic.dat",header=F)
>predic
V1V2V3
1706859
2716669
3686756
4547185
>predictionsstep<
rendimiento.backward$coefficients[1]+rendimiento.backward$coefficients[2]*predic[1]+rendimi
ento.backward$coefficients[3]*predic[2]+rendimiento.backward$coefficients[4]*predic[3]
>predictionsstep
V1
167.82638
263.11761
366.70279
454.65288
>rendimiento.backward
Call:
lm(formula=Y~X1+X3+X4,data=rendimiento)
Coefficients:
(Intercept)X1X3X4
20.33580.51001.04330.3132
>>predict(rendimiento.backward,newdata=data.frame(X1=55,X3=69,X4=66))
[1]59.02743
#De esta forma puedes predecir una observacin
#Como exportar un conjunto de datos de R para ser usado en otro paquete
estadstico
>library("UsingR")#Librera la cual contiene el conjunto de datos
>data("babies")#Conjunto de datos que deseamos exportar
>write.table(babies,"babies.txt",sep="",quote=FALSE,row.names=FALSE,col.names=TRUE)
#Comando para exportar. Note babies conjunto de datos, "babies.txt"
nombre del archivo a guardar, sep=" " separacin.
> help.start() #pedir ayuda, saldr en el browser. Visite packages y
#seleccione el archivo que desea.

Departamento de Matemticas

16

Regresin Lineal

You might also like