Para realizar un informe de este tipo debemos instalar los programas R y RStudio, ambos de carácter gratuito. A continuación se indica las páginas webs donde podremos descargarnos los archivos ejecutables de estos programas y realizar la instalación en nuestro ordenador.
| Funciones | Argumentos | Descripción |
|---|---|---|
| read.table | file; sep; header | Importar datos |
| knitr::kable | x | Crear tablas en LaTeX, HTML, Markdown |
| min | … | Mínimo |
| max | … | Máximo |
| dim | x | Dimensión de un objeto |
| c | … | Combinar valores en un vector o lista |
| mean | x | Media aritmética |
| ColMeans | x | Media por columnas |
| round | x; digits | Redondear números |
| format | x; big.mark; decimal.mark | Formato para números |
| plot | x; y; xlab; ylab; main; col | Nube de puntos |
| hist | x; xlab; ylab; main | Histograma |
| lm | formula; data | Ajuste de un modelo lineal |
En una determinada población se desea explicar la riqueza por unidad de consumo de sus individuos (en miles de euros) en función de la renta por unidad de consumo (variable \(x_{2}\) y expresada en miles de euros), edad (variable \(x_{3}\) y medida en años) y número de hijos (\(x_{4}\)). Para ello, se plantea el siguiente modelo de regresión lineal múltiple:
\(y_{i}=\beta_{1} + \beta_{2}x_{2i}+ \beta_{3}x_{3i} + \beta_{4} x_{4i} + u_{i}; \quad i=\{1,\ldots,n\}\)
Para importar datos se deben incluir los ficheros correspondientes en la carpeta donde has guardado este documento RMarkdown.
Se usa la función read.table() de R para importar los datos. Algunos argumentos de esta función son:
DATOS<- read.table(file="000.txt", sep="", header = T)
Los datos están guardados en una matriz que hemos denominado DATOS. Nos puede interesar ver, por ejemplo, la información del primer individuo de esta matriz. Para ello se utiliza la siguiente orden en R. Los corchetes se utilizan para seleccionar elementos de la matriz. Si se indica un número antes de la coma (,), R nos mostrará esa fila de la matriz:
DATOS[1,]
## RIQUEZA RENTA EDAD HIJOS
## 1 80.6 1.5993 64 2
Si queremos conocer la información del individuo 20 de la muestra, escribiremos en R:
DATOS[20,]
## RIQUEZA RENTA EDAD HIJOS
## 20 47.5 1.8536 33 1
Si queremos consultar, conjuntamente, la información de los individuos 1 y 20, crearemos el vector (1,20), y para ello usaremos la orden c(1,2):
DATOS[c(1,20),]
## RIQUEZA RENTA EDAD HIJOS
## 1 80.6 1.5993 64 2
## 20 47.5 1.8536 33 1
Otra función de R que nos puede interesar es dim(). A partir de la siguiente instrucción podremos saber el número de filas y el número de columnas de la matriz DATOS, o equivalente, conocer el número de individuos en mi muestra (número de filas) y el número de variables (número de columnas):
dim(DATOS)
## [1] 10000 4
La media aritmética de una variable se obtiene mediante la función mean(). Por ejemplo, para obtener la media de la primera columna de la matriz DATOS (la variable riqueza) habrá que aplicar la función mean() sobre DATOS[,1], es decir:
mean(DATOS[,1])
## [1] 44.42003
Con la función colMeans() podremos obtener las medias aritméticas de todas las columnas de una matriz. Por ejemplo:
colMeans(DATOS)
## RIQUEZA RENTA EDAD HIJOS
## 44.420030 2.002418 44.402700 1.702000
También puede resultar muy útil incluir un código de R (codigoR) dentro del texto. Para ello se utiliza la siguiente instrucciónen el lugar del texto donde se desea incluir el código: ` r codigoR `. Por ejemplo, para incluir dentro del texto la riqueza media, medida en euros, se deberá incluir dentro del texto la expresión ` r 1000*DATOS[,1] `. Siguiendo esta instrucciones nos quedaría:
La riqueza media de los individios de la muestra es de 44.420,03 euros.
Con las funciones min() y max() se pueden obtener, respectivamente, el mínimo y el máximo de una variable. Por ejemplo, para conocer la edad mínima y máxima de los individuos de nuestra muestra (columna 3 de la matriz DATOS) habrá que indicar en R:
min(DATOS[,3])
## [1] 25
max(DATOS[,3])
## [1] 64
Con la función plot() se pueden realizar gráficos de dispersión entre dos variables. Algunos argumentos de esta función son:
plot(x=DATOS[,2], y=DATOS[,1], main="Gráfico de dispersion", xlab="Renta", ylab="Riqueza", col="blue")
La función hist() permite realizar un histograma de una variable, tal como puede verse a continuación para la variable riqueza:
hist(DATOS[,1], main="Histograma de la variable riqueza", xlab="Riqueza", ylab="Frecuencia")
Importe en R sus datos personales para realizar esta práctica desde la carpeta Riqueza de PRADO, y teniendo en cuenta sus últimos 3 dígitos de su DNI. Por ejemplo, si su DNI es 12345678, deberá importar el fichero 678.txt. Guarde los datos en un objeto denominado DATOS.
¿Cuál es el tamaño de muestra (n) de su conjunto de datos?
¿Cuál es el valor de las distintas variables para el individuo que ocupa la posición 5000 en su muestra?
¿Cuál es la media de cada variable?
¿Cuál es la renta mínima y máxima de los individuos de la muestra?
Realizar gráficos de dispersión donde en el eje Y siempre se sitúe la variable endógena (riqueza), y en el eje X, de cada gráfico de disersión, el resto de variables (las variables exógenas).
AjusteMCO <- lm(RIQUEZA ~ RENTA+EDAD+HIJOS, DATOS)
summary(AjusteMCO)
##
## Call:
## lm(formula = RIQUEZA ~ RENTA + EDAD + HIJOS, data = DATOS)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.936 -5.677 -0.009 5.747 32.734
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 20.51019 0.39292 52.199 <2e-16 ***
## RENTA 0.58586 0.25720 2.278 0.0228 *
## EDAD 0.89530 0.01145 78.163 <2e-16 ***
## HIJOS -9.99828 0.07153 -139.780 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.609 on 9996 degrees of freedom
## Multiple R-squared: 0.6828, Adjusted R-squared: 0.6827
## F-statistic: 7174 on 3 and 9996 DF, p-value: < 2.2e-16
anova(AjusteMCO)
## Analysis of Variance Table
##
## Response: RIQUEZA
## Df Sum Sq Mean Sq F value Pr(>F)
## RENTA 1 5679 5679 76.623 < 2.2e-16 ***
## EDAD 1 141293 141293 1906.269 < 2.2e-16 ***
## HIJOS 1 1448188 1448188 19538.365 < 2.2e-16 ***
## Residuals 9996 740906 74
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1