library(knitr)
library(printr)
## Registered S3 method overwritten by 'printr':
## method from
## knit_print.data.frame rmarkdown
library(jtools)
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
El modelo de precios de activos de capital (CAPM) es un modelo importante en el campo de las finanzas. Explica las variaciones en la tasa de rendimiento de un valor en función de la tasa de rendimiento de una cartera que consiste en todas las acciones que cotizan en bolsa, lo que se denomina cartera de mercado. En general, la tasa de rendimiento de cualquier inversión se mide en relación con su costo de oportunidad, que es la rentabilidad de un activo libre de riesgo. La diferencia resultante se llama la prima de riesgo, ya que es la recompensa o el castigo por hacer una inversión arriesgada. El CAPM dice que la prima de riesgo sobre la seguridad j es proporcional a la prima de riesgo en la cartera de mercado. Es decir,
\[ r_{j}-r_{f}=\beta_{j}(r_{m}-r_{f}) \]
Donde \(r_j\) y \(r_f\) son los retornos del security j y la tasa libre de riesgo, respectivamente, \(r_m\) es el rentorno de la cartera de mercado, y \(\beta_j\) es el valor beta del j-ésimo valor. El beta de una acción es importante para los inversores, ya que revela la volatilidad de la acción. Mide la sensibilidad del retorno del security j a la variación en todo el mercado de valores. Como tal, los valores beta inferiores a 1 indican que el stock es “defensivo” ya que su variación es menor que la del mercado. Un beta mayor que 1 indica una ‘’acción agresiva’‘. Los inversores generalmente quieren una estimación del beta de una acción antes de comprarla. El modelo CAPM mostrado anteriormente es el’‘modelo económico’’ en este caso. El “modelo econométrico” se obtiene incluyendo un intercepto en el modelo (aunque la teoría dice que debe ser cero) y un término de error,
\[ r_{j}-r_{f}=\alpha_{j}+\beta_{j}(r_{m}-r_{f})+e \]
El modelo es un modelo de regresión simple porque puede ser escrito como
\[ y = \beta_0 + \beta_1x+e \]
donde \(y=r_{j}-r_{f}\), \(x=r_{m}-r_{f}\), \(\beta_0=\alpha_j\) y \(\beta_1=\beta_j\).
library(foreign)
capm<-read.dta("Datos/Ejemplo2.dta")
head(capm)
| date | dis | ge | gm | ibm | msft | xom | mkt | riskfree |
|---|---|---|---|---|---|---|---|---|
| 19980130 | 0.080884 | 0.056218 | -0.046296 | -0.056153 | 0.154255 | -0.030644 | 0.004529 | 0.004188 |
| 19980227 | 0.047368 | 0.003226 | 0.198490 | 0.059620 | 0.136154 | 0.081728 | 0.073230 | 0.004268 |
| 19980331 | -0.046343 | 0.112379 | -0.017226 | -0.005386 | 0.056047 | 0.060784 | 0.051322 | 0.004358 |
| 19980430 | 0.168337 | -0.011603 | -0.005535 | 0.115523 | 0.006983 | 0.080407 | 0.010862 | 0.003940 |
| 19980529 | -0.090818 | -0.021277 | 0.074212 | 0.015922 | -0.058946 | -0.029461 | -0.025755 | 0.003806 |
| 19980630 | -0.072296 | 0.089955 | -0.070435 | -0.022872 | 0.277819 | 0.012411 | 0.031954 | 0.003919 |
capm$mktfree<-capm$mkt-capm$riskfree
capm$msftfree<-capm$msft-capm$riskfree
capm$disneyfree<-capm$dis-capm$riskfree
capm$gefree<-capm$ge-capm$riskfree
capm$gmfree<-capm$gm-capm$riskfree
capm$ibmfree<-capm$ibm-capm$riskfree
capm$xomfree<-capm$xom-capm$riskfree
microsoft<-lm(msftfree ~ mktfree,data=capm)
GE<-lm(gefree~mktfree,data=capm)
GM<-lm(gmfree~mktfree,data=capm)
IBM<-lm(ibmfree~mktfree,data=capm)
DISNEY<-lm(disneyfree~mktfree,data=capm)
MOBIL<-lm(xomfree~mktfree,data=capm)
stargazer(microsoft, GE, GM, IBM, DISNEY, MOBIL, type="latex")
% Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu % Date and time: Wed, Apr 06, 2022 - 22:36:13
| Dependent variable: | ||||||
| msftfree | gefree | gmfree | ibmfree | disneyfree | xomfree | |
| (1) | (2) | (3) | (4) | (5) | (6) | |
| mktfree | 1.319*** | 0.899*** | 1.261*** | 1.188*** | 0.898*** | 0.414*** |
| (0.161) | (0.099) | (0.202) | (0.126) | (0.124) | (0.090) | |
| Constant | 0.006 | -0.001 | -0.012 | 0.006 | -0.001 | 0.008* |
| (0.008) | (0.005) | (0.010) | (0.006) | (0.006) | (0.004) | |
| Observations | 132 | 132 | 132 | 132 | 132 | 132 |
| R2 | 0.341 | 0.389 | 0.230 | 0.405 | 0.289 | 0.141 |
| Adjusted R2 | 0.336 | 0.385 | 0.224 | 0.400 | 0.283 | 0.134 |
| Residual Std. Error (df = 130) | 0.089 | 0.055 | 0.112 | 0.070 | 0.068 | 0.050 |
| F Statistic (df = 1; 130) | 67.288*** | 82.874*** | 38.909*** | 88.321*** | 52.744*** | 21.292*** |
| Note: | p<0.1; p<0.05; p<0.01 | |||||
Las acciones de Microsoft, General Motors e IBM son agresivas y Microsoft es la más agresiva con un valor beta de \(\beta_1= 1.319\). General Electric, Disney y Exxon-Mobil están a la defensiva, siendo Exxon-Mobil la más defensiva con un valor beta de \(\beta_1 = 0.414\).
Todas las estimaciones de \(\alpha_j\) son cercanas a cero y, por lo tanto, son consistentes con la teoría financiera. La línea de regresión ajustada y la dispersión de datos para Microsoft se representan en la siguiente figura
library(ggplot2)
ggplot(data=capm,aes(mktfree,msftfree))+geom_point(color="blue") +
geom_smooth(method='lm',formula=y~x,color="red")
Los estimadores para \(\beta_j\) dado \(\alpha_j =0\) son los siguientes
microsoft1<-lm(msftfree ~ mktfree - 1,data=capm)
GE1<-lm(gefree~mktfree - 1,data=capm)
GM1<-lm(gmfree~mktfree - 1,data=capm)
IBM1<-lm(ibmfree~mktfree- 1,data=capm)
DISNEY1<-lm(disneyfree~mktfree - 1,data=capm)
MOBIL1<-lm(xomfree~mktfree - 1,data=capm)
stargazer(microsoft1, GE1, GM1, IBM1, DISNEY1, MOBIL1, type = 'latex')
% Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu % Date and time: Wed, Apr 06, 2022 - 22:36:15
| Dependent variable: | ||||||
| msftfree | gefree | gmfree | ibmfree | disneyfree | xomfree | |
| (1) | (2) | (3) | (4) | (5) | (6) | |
| mktfree | 1.319*** | 0.899*** | 1.262*** | 1.188*** | 0.898*** | 0.413*** |
| (0.161) | (0.098) | (0.203) | (0.126) | (0.123) | (0.091) | |
| Observations | 132 | 132 | 132 | 132 | 132 | 132 |
| R2 | 0.340 | 0.389 | 0.229 | 0.403 | 0.289 | 0.137 |
| Adjusted R2 | 0.335 | 0.385 | 0.223 | 0.398 | 0.283 | 0.131 |
| Residual Std. Error (df = 131) | 0.089 | 0.054 | 0.112 | 0.070 | 0.068 | 0.050 |
| F Statistic (df = 1; 131) | 67.440*** | 83.489*** | 38.840*** | 88.313*** | 53.144*** | 20.865*** |
| Note: | p<0.1; p<0.05; p<0.01 | |||||
La restricción \(\alpha_j = 0\) ha llevado a pequeños cambios en el \(\hat \beta_j\); No ha cambiado el carácter agresivo o defensivo de la acción.
Los propietarios de un motel descubrieron que se utilizaba un producto defectuoso en su construcción. Tardaron siete meses en corregir los defectos, durante los cuales 14 habitaciones en el motel de 100 unidades fueron sacadas de servicio por 7 meses (a partir del mes 17). El motel perdió beneficios debido a estos cierres, y se desea saber cómo calcular las pérdidas. Para este ejercicio, utilice los datos en motel.dat.
motel<-read.csv("Datos/Ejemplo3.csv",sep=',')
head(motel)
| time | days | motel_rate | comp_rate | motel_pct | comp_pct | repair | relprice |
|---|---|---|---|---|---|---|---|
| 1 | 31 | 54.81 | 71.63 | 66.7 | 57.1 | 0 | 0.765182 |
| 2 | 30 | 53.59 | 74.21 | 95.6 | 54.8 | 0 | 0.722140 |
| 3 | 31 | 53.37 | 74.57 | 95.8 | 61.3 | 0 | 0.715703 |
| 4 | 30 | 53.83 | 77.66 | 96.2 | 76.9 | 0 | 0.693150 |
| 5 | 31 | 56.83 | 83.70 | 94.5 | 78.4 | 0 | 0.678973 |
| 6 | 31 | 58.50 | 81.32 | 89.2 | 81.4 | 0 | 0.719380 |
Las gráficas de las tasas de ocupación para el motel y sus competidores para el período de 25 meses se muestran en la siguiente figura.
library(ggplot2)
ggplot(data=motel,aes(time)) +
geom_line(aes(y=motel_pct, colour="motel_pct")) +
geom_line(aes(y=comp_pct, colour="comp_pct")) +
geom_vline(xintercept = c(17,23))
El período de reparación comprende esos meses entre las dos líneas verticales. La evidencia gráfica sugiere que el motel dañado tuvo la mayor tasa de ocupación antes y después del período de reparación. Durante el período de reparación, el motel dañado y los competidores tuvieron tasas de ocupación similares.
ggplot(data=motel,aes(comp_pct,motel_pct))+geom_point()
Parece haber una relación positiva entre las dos variables. Tal relación puede existir ya que tanto el motel dañado como el competidor (es) enfrentan la misma demanda de habitaciones de motel. Es decir, las tasas de ocupación de los competidores reflejan la demanda general en el mercado de habitaciones de motel.
modelo1<-lm(motel_pct~comp_pct,data=motel)
summary(modelo1)
##
## Call:
## lm(formula = motel_pct ~ comp_pct, data = motel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -23.876 -4.909 -1.193 5.312 26.818
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 21.4000 12.9069 1.658 0.110889
## comp_pct 0.8646 0.2027 4.265 0.000291 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11.02 on 23 degrees of freedom
## Multiple R-squared: 0.4417, Adjusted R-squared: 0.4174
## F-statistic: 18.19 on 1 and 23 DF, p-value: 0.0002906
La regresión estimada es:
\[ \widehat {motel\_pct} = 21.4+0.8646comp\_pct \]
Las tasas de ocupación de los competidores se relacionan positivamente con las tasas de ocupación de motel, como se esperaba. La regresión indica que para un aumento de un punto porcentual en la tasa de ocupación de la competencia, se espera que la tasa de ocupación del motel dañado aumente en 0.8646%.
residuos1<-modelo1$residuals
ggplot(data=motel,aes(time,residuos1))+geom_point(color="blue") +
geom_hline(yintercept = 0) +
geom_vline(xintercept = c(17,23))
Los residuos durante el período de ocupación son aquellos entre las dos líneas verticales. Todos excepto uno son negativos, lo que indica que el modelo ha sobreestimado la tasa de ocupación del motel durante el período de reparación.
Esperamos que el coeficiente de pendiente de una regresión lineal de \(motel\_pct\) en \(relprice\) sea negativo, ya que cuanto mayor sea el precio relativo de las habitaciones dañadas del motel, menor será la demanda de esas habitaciones, manteniendo constantes otros factores.
¿El signo de la pendiente estimada está de acuerdo con su expectativa?
modelo2<-lm(motel_pct~relprice,data=motel)
summary(modelo2)
##
## Call:
## lm(formula = motel_pct ~ relprice, data = motel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -33.779 -6.181 4.003 8.842 21.760
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 166.66 43.57 3.825 0.000868 ***
## relprice -122.12 58.35 -2.093 0.047589 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 13.52 on 23 degrees of freedom
## Multiple R-squared: 0.16, Adjusted R-squared: 0.1234
## F-statistic: 4.38 on 1 and 23 DF, p-value: 0.04759
La regresión estimada es
\[ \widehat {motel\_pct} = 166.66- 122.12*relprice \]
El signo de la pendiente estimada es negativo, como se esperaba.
La regresión lineal con una variable indicador es
\[ motel\_pct = \beta_0 + \beta_1 repair + e \]
De esta ecuación tenemos que:
\[ E(motel\_pct) = \beta_0 + \beta_1 repair = \begin{cases}\beta_0 + \beta_1 & \mbox{si }repair = 1\\ \beta_0 & \mbox{si } repair=0\end{cases} \]
La tasa de ocupación esperada para el motel dañado es \(\beta_0 + \beta_1\) durante el período de reparación; Es \(\beta_0\) fuera del período de reparación. Por lo tanto, \(\beta_1\) es la diferencia entre las tasas de ocupación esperadas para el motel dañado durante los períodos de reparación y no reparación.
modelo3<-lm(motel_pct~repair,data=motel)
summary(modelo3)
##
## Call:
## lm(formula = motel_pct ~ repair, data = motel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -26.91 -10.55 -0.55 10.99 16.85
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 79.350 3.154 25.158 <2e-16 ***
## repair -13.236 5.961 -2.221 0.0365 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 13.38 on 23 degrees of freedom
## Multiple R-squared: 0.1765, Adjusted R-squared: 0.1407
## F-statistic: 4.931 on 1 and 23 DF, p-value: 0.03651
La regresión estimada es:
\[ \widehat {motel\_pct} = 79.35 - 13.236* repair \]
En el período de no reparación, el motel dañado tenía una tasa de ocupación estimada del \(79.35\)%. Durante el período de reparación, la tasa de ocupación estimada fue de \(79.35 - 13.24 = 66.11\)%. Por lo tanto, parece que el motel sufrió una pérdida de ocupación y ganancias durante el período de reparación.
De la regresión anterior, tenemos
\[ \begin{array}{lclcll} \overline{motel_0} & = & \beta_0 & = & 79.35\% & \\ \overline{motel_1} & = & \beta_0 + \beta_1 &= & 79.35 - 13.24 & = 66.11\% \end{array} \]
\(\overline{motel_0} = \beta_0=79.35\%\)
\(\overline{motel_1} = \beta_0 + \beta_1=79.35 - 13.24 = 66.11\%\)
Para los competidores, la regresión estimada es:
modelo4<-lm(comp_pct~repair,data=motel)
summary(modelo4)
##
## Call:
## lm(formula = comp_pct ~ repair, data = motel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.471 -7.689 -1.189 10.411 20.529
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 62.4889 2.6697 23.407 <2e-16 ***
## repair 0.8825 5.0453 0.175 0.863
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11.33 on 23 degrees of freedom
## Multiple R-squared: 0.001329, Adjusted R-squared: -0.04209
## F-statistic: 0.0306 on 1 and 23 DF, p-value: 0.8627
\[ \widehat {comp\_pct} = 62.4889 + 0.8825* repair \]
Así,
\(\overline{comp_0} = \beta_0=62.49\%\) \(\overline{comp_1} = \beta_0 + \beta_1=62.49 + 0.88 = 63.37\%\)
Durante el período de no reparación, la diferencia entre las ocupaciones promedio fue:
\[ \overline{motel_0}- \overline{comp_0}=79.35-62.49=16.86\% \]
Durante el período de reparación fue
\[ \overline{motel_1}- \overline{comp_1}=66.11-63.37=2.74\% \]
Esta comparación respalda la reclamación del motel por ganancias perdidas durante el período de reparación. Cuando no hubo reparaciones, su tasa de ocupación fue un \(16.86\)% más alta que la de sus competidores; Durante las reparaciones solo fue \(2.74\)% mayor.
motel$diferencia<-motel$motel_pct-motel$comp_pct
modelo5<-lm(diferencia~repair,data=motel)
summary(modelo5)
##
## Call:
## lm(formula = diferencia ~ repair, data = motel)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.743 -4.861 -2.261 5.139 23.939
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.861 2.109 7.993 4.35e-08 ***
## repair -14.118 3.986 -3.542 0.00174 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.949 on 23 degrees of freedom
## Multiple R-squared: 0.3529, Adjusted R-squared: 0.3248
## F-statistic: 12.54 on 1 and 23 DF, p-value: 0.001742
La regresion estimada es
\[ \widehat {diferencia} = 16.861 -14.118* repair \]
La estimación de intercepción en esta ecuación (\(16.86\)) es igual a la diferencia en ocupaciones promedio durante el período de no reparación, \(motel_0 - comp_0\). La suma de las dos estimaciones de coeficientes (\(16.86 + (-14.12) = 2.74\)) es igual a la diferencia en las ocupaciones promedio durante el período de reparación, \(motel_1 - comp_1\).