project

Comparison of models

The first problem

brumn_dat <- read.dta13('datasets/brumm.dta')
ivmodel <- ivreg(inflat ~ output+money|initial +school+inv+poprate+money, data = brumn_dat)

stargazer(ivmodel, type = 'text')
## 
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                               inflat           
## -----------------------------------------------
## output                       -1.394**          
##                               (0.552)          
##                                                
## money                        1.035***          
##                               (0.010)          
##                                                
## Constant                      -1.094           
##                               (1.858)          
##                                                
## -----------------------------------------------
## Observations                    76             
## R2                             0.995           
## Adjusted R2                    0.995           
## Residual Std. Error       4.344 (df = 73)      
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01
summary(ivmodel)
## 
## Call:
## ivreg(formula = inflat ~ output + money | initial + school + 
##     inv + poprate + money, data = brumn_dat)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -24.633  -1.487   0.204   1.937   9.498 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.093985   1.858208  -0.589   0.5579    
## output      -1.394200   0.551503  -2.528   0.0136 *  
## money        1.035059   0.009773 105.914   <2e-16 ***
## 
## Diagnostic tests:
##                  df1 df2 statistic p-value   
## Weak instruments   4  70     4.642 0.00221 **
## Wu-Hausman         1  72     0.300 0.58551   
## Sargan             3  NA     2.455 0.48344   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.344 on 73 degrees of freedom
## Multiple R-Squared: 0.9947,  Adjusted R-squared: 0.9946 
## Wald test:  6852 on 2 and 73 DF,  p-value: < 2.2e-16

The second problem

income_democracy_dat <- read.dta13('datasets/income_democracy.dta')
income_democracy_dat.p <- pdata.frame(income_democracy_dat, index = c("code","year"))
# 检查面板数据是否平衡
pdim(income_democracy_dat.p)
## Unbalanced Panel: n = 195, T = 1-9, N = 1369
# 查找数据
t.a <- income_democracy_dat %>% 
  filter(country=="United States" & year == 2000) %>%
  select('dem_ind')
kable(t.a, caption = "US and year = 2000")
US and year = 2000
dem_ind
1
t.a2 <- income_democracy_dat %>%
  filter(country == "United States") %>%
  summarise(mean_dem_ind = mean(dem_ind))
kable(t.a2, caption = "US average of dem_ind")
US average of dem_ind
mean_dem_ind
0.9855556
# (b)
summary_income <- income_democracy_dat %>%
  group_by(country) %>%
  drop_na(dem_ind) %>%
  summarise(mean_dem_ind = mean(dem_ind))
  
list_5.1 <- summary_income %>%
  filter(mean_dem_ind>0.95) %>% arrange(mean_dem_ind) %>% head(n=5)
# <0.10
list_5.2 <- summary_income %>%
  filter(mean_dem_ind<0.10) %>% arrange(mean_dem_ind) %>% head(n=5)
# [0.3, 0.7]
list_5.3 <- summary_income %>%
  filter(dplyr::between(mean_dem_ind, 0.3, 0.7)) %>% arrange(mean_dem_ind) %>% head(n=5)

# five_country_res <- bind_cols(">0.95" = list_5.1, "<0.10" = list_5.2, "0.3<x<0.7"= list_5.3)
kable(list_5.1, caption = ">0.95 Five countries")
>0.95 Five countries
country mean_dem_ind
Malta 0.9523809
Luxembourg 0.9607407
Germany, West 0.9616667
Japan 0.9618518
Costa Rica 0.9788889
kable(list_5.2, caption = "<0.10 Five countries")
<0.10 Five countries
country mean_dem_ind
Eritrea 0.0000000
Turkmenistan 0.0000000
Uzbekistan 0.0000000
Vietnam 0.0000000
Equatorial Guinea 0.0277778
kable(list_5.3, caption = "[0.3,0.7] Five countries")
[0.3,0.7] Five countries
country mean_dem_ind
Zimbabwe 0.3095238
Jordan 0.3107407
Nigeria 0.3112500
Bulgaria 0.3259259
Bosnia and Herzegovina 0.3333333

3.回归分析

md3 <- lm(dem_ind ~ log_gdppc, data=income_democracy_dat)
md3.reg <- coeftest(md3, vcov. = vcovHC, type="HC0")
stargazer(md3.reg, type = 'text')
## 
## =====================================
##               Dependent variable:    
##           ---------------------------
##                                      
## -------------------------------------
## log_gdppc          0.236***          
##                     (0.007)          
##                                      
## Constant           -1.355***         
##                     (0.061)          
##                                      
## =====================================
## =====================================
## Note:     *p<0.1; **p<0.05; ***p<0.01
# 3(b)
est <- 0.2 * md3$coefficients
kable(est, caption = "dem_ind result")
dem_ind result
x
(Intercept) -0.2709656
log_gdppc 0.0471346
are <- 0.2*confint(md3, 'log_gdppc', level = 0.95)
kable(are, caption = '95% interval')
95% interval
2.5 % 97.5 %
log_gdppc 0.0437491 0.0505202

4.回归分析

固定效应模型(a)
regfeind <- plm(dem_ind ~ log_gdppc, data = income_democracy_dat, effect = "individual")
stargazer(regfeind, type = 'text')
## 
## ========================================
##                  Dependent variable:    
##              ---------------------------
##                        dem_ind          
## ----------------------------------------
## log_gdppc             0.084***          
##                        (0.021)          
##                                         
## ----------------------------------------
## Observations             958            
## R2                      0.020           
## Adjusted R2            -0.163           
## F Statistic    16.202*** (df = 1; 807)  
## ========================================
## Note:        *p<0.1; **p<0.05; ***p<0.01
est4.a <- 0.2 * regfeind$coefficients
kable(est4.a, caption = "dem_ind result in 4(a)")
dem_ind result in 4(a)
x
log_gdppc 0.0167482
are4.a <- 0.2*confint(regfeind, 'log_gdppc', level = 0.95)
kable(are4.a, caption = '95% interval in 4(a)')
95% interval in 4(a)
2.5 % 97.5 %
log_gdppc 0.0085929 0.0249035
固定效应模型(b)
no_azerbaijan_dat <- income_democracy_dat %>%
  filter(country != 'Azerbaijan')
dat <- dplyr::filter(income_democracy_dat, country != "Azerbaijan")
no_a_md <- plm(dem_ind ~ log_gdppc, data = dat, effect = "individual")

stargazer(no_a_md,type = 'text')
## 
## ========================================
##                  Dependent variable:    
##              ---------------------------
##                        dem_ind          
## ----------------------------------------
## log_gdppc             0.084***          
##                        (0.021)          
##                                         
## ----------------------------------------
## Observations             957            
## R2                      0.020           
## Adjusted R2            -0.161           
## F Statistic    16.202*** (df = 1; 807)  
## ========================================
## Note:        *p<0.1; **p<0.05; ***p<0.01
est4.b <- 0.2 * no_a_md$coefficients
kable(est4.b, caption = "dem_ind result in 4(b)")
dem_ind result in 4(b)
x
log_gdppc 0.0167482
are4.b <- 0.2*confint(no_a_md, 'log_gdppc', level = 0.95)
kable(are4.b, caption = '95% interval in 4(b)')
95% interval in 4(b)
2.5 % 97.5 %
log_gdppc 0.0085929 0.0249035
固定效应模型(c)
two_fixed_md <- plm(dem_ind ~ log_gdppc, data = income_democracy_dat, effect = "time")

stargazer(two_fixed_md,type = 'text')
## 
## ========================================
##                  Dependent variable:    
##              ---------------------------
##                        dem_ind          
## ----------------------------------------
## log_gdppc             0.235***          
##                        (0.008)          
##                                         
## ----------------------------------------
## Observations             958            
## R2                      0.449           
## Adjusted R2             0.444           
## F Statistic   772.299*** (df = 1; 948)  
## ========================================
## Note:        *p<0.1; **p<0.05; ***p<0.01
est4.c <- 0.2 * two_fixed_md$coefficients
kable(est4.c, caption = "dem_ind result in 4(c)")
dem_ind result in 4(c)
x
log_gdppc 0.0470213
are4.c <- 0.2*confint(two_fixed_md, 'log_gdppc', level = 0.95)
kable(are4.c, caption = '95% interval in 4(c)')
95% interval in 4(c)
2.5 % 97.5 %
log_gdppc 0.0437051 0.0503376
固定效应模型(d)
two_variable_md <- plm(dem_ind ~ log_gdppc+log_pop, data = income_democracy_dat, effect = "twoway")

stargazer(two_variable_md, type = 'text')
## 
## ========================================
##                  Dependent variable:    
##              ---------------------------
##                        dem_ind          
## ----------------------------------------
## log_gdppc               0.006           
##                        (0.032)          
##                                         
## log_pop                -0.093           
##                        (0.066)          
##                                         
## ----------------------------------------
## Observations             895            
## R2                      0.003           
## Adjusted R2            -0.209           
## F Statistic      1.240 (df = 2; 737)    
## ========================================
## Note:        *p<0.1; **p<0.05; ***p<0.01
est4.d <- 0.2 * two_variable_md$coefficients
kable(est4.d, caption = "dem_ind result in 4(d)")
dem_ind result in 4(d)
x
log_gdppc 0.0012078
log_pop -0.0185721
are4.d <- 0.2*confint(two_variable_md, 'log_gdppc', level = 0.95)
kable(are4.d, caption = '95% interval in 4(d)')
95% interval in 4(d)
2.5 % 97.5 %
log_gdppc -0.0113089 0.0137245
固定效应模型(e)
two_variable_md2 <- plm(dem_ind ~ log_gdppc+educ, data = income_democracy_dat, effect = "twoway")

stargazer(two_variable_md2, type = 'text')
## 
## ========================================
##                  Dependent variable:    
##              ---------------------------
##                        dem_ind          
## ----------------------------------------
## log_gdppc               0.019           
##                        (0.037)          
##                                         
## educ                   -0.007           
##                        (0.017)          
##                                         
## ----------------------------------------
## Observations             688            
## R2                      0.001           
## Adjusted R2            -0.180           
## F Statistic      0.166 (df = 2; 582)    
## ========================================
## Note:        *p<0.1; **p<0.05; ***p<0.01
est4.e <- 0.2 * two_variable_md2$coefficients
kable(est4.e, caption = "dem_ind result in 4(e)")
dem_ind result in 4(e)
x
log_gdppc 0.0037077
educ -0.0014747
are4.e <- 0.2*confint(two_variable_md2, 'log_gdppc', level = 0.95)
kable(are4.e, caption = '95% interval in 4(e)')
95% interval in 4(e)
2.5 % 97.5 %
log_gdppc -0.0107379 0.0181533