L2_1

Linear Regression - Mô hình hồi quy đơn

Đặt vấn đề

? Vấn đề nghiên cứu là gì:

Xem giáo trình số 2- trang 71-72, Chương 3

Đánh giá tác động của bảo hiểm y tế bổ sung lên chi tiêu y tế của 1 người.

? Với vấn đề này, ta cần xác định mối quan hệ gì?

Chi tiêu y tế <- f(bảo hiểm bổ sung,….)

? Kỳ vọng ảnh hưởng như thế nào

Kỳ vọng tác động: Nếu có bảo hiểm thì chi tiêu y tế cao hơn

? Mô hình kinh tế lượng được xác định ra sao

Xác định mô hình lý thuyết

Tổng chỉ tiêu y tế: (totexp)

Khoản bảo hiểm hỗ trợ

Các yếu tố khác ảnh hưởng?

  • Đặc tính nhân khẩu học

  • Đặc tính về sức khỏe

Mô hình kinh tế lượng

Mô hình kinh tế lượng cần được xác định như thế nào?

Y(chi tiêu y tế) = alpha + beta X (bảo hiểm bổ sung) +….

Biến số và dữ liệu cần được xem xét ra sao

Áp dụng

- Khi thực hiện gặp lỗi:

- Xem đã tải thư viện chưa, đã cài thư viện chưa

- nếu báo lỗi thiếu Rtools cần cài đặt và load lại thư viện

Tải các thư viện liên quan

library(tidyverse) 
Warning: package 'tidyverse' was built under R version 4.4.1
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Dữ liệu

File dữ liệu mus03data.dta

L2 <- haven::read_dta("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEL\\Class_QuantMethods\\2024\\Data\\mus03data.dta")

Đây là đường dẫn tới file dữ liệu trong máy tính:

C:\\Users\\Huynh Chuong\\Desktop\\University\\UEL\\Class_QuantMethods\\2024\\Data\\

Cách khác: Chọn File/ import/stata

Xem xét tổng quan dữ liệu

head(L2)
# A tibble: 6 × 33
  dupersid year03   age famsze educyr totexp private retire female white  hisp
     <dbl>  <dbl> <dbl>  <dbl>  <dbl>  <dbl>   <dbl>  <dbl>  <dbl> <dbl> <dbl>
1 93193020      1    69      2     14      3       1      1      0     1     0
2 72072017      1    65      1     11      6       1      0      1     1     0
3 25296013      1    85      1     14      9       0      0      1     1     0
4 23628011      1    76      5     10     14       0      0      1     1     0
5 95041014      1    71      1     14     18       0      1      1     1     0
6 25090018      1    81      2     14     20       0      1      1     1     0
# ℹ 22 more variables: marry <dbl>, northe <dbl>, mwest <dbl>, south <dbl>,
#   phylim <dbl>, actlim <dbl>, msa <dbl>, income <dbl>, injury <dbl>,
#   priolist <dbl>, totchr <dbl>, omc <dbl>, hmo <dbl>, mnc <dbl>, ratio <dbl>,
#   posexp <dbl>, suppins <dbl>, hvgg <dbl>, hfp <dbl>, ltotexp <dbl>,
#   hins <dbl>, hdem <dbl>

Xem danh sách các biến

L2 %>%
  variable.names()  
 [1] "dupersid" "year03"   "age"      "famsze"   "educyr"   "totexp"  
 [7] "private"  "retire"   "female"   "white"    "hisp"     "marry"   
[13] "northe"   "mwest"    "south"    "phylim"   "actlim"   "msa"     
[19] "income"   "injury"   "priolist" "totchr"   "omc"      "hmo"     
[25] "mnc"      "ratio"    "posexp"   "suppins"  "hvgg"     "hfp"     
[31] "ltotexp"  "hins"     "hdem"    

Hai biến quan trọng nhất

1- Biến phụ thuộc: Chi tiêu y tế (totexp)

2- Biến độc lập (mục tiêu xem xét tác động) Có bảo hiểm y tế bổ sung - suppins

3- Các biến số khác có liên quan: age, famsze, educyr

Tổng quan dữ liệu các biến

L2 %>% 
  select(totexp)  %>%
  summary()
     totexp      
 Min.   :     0  
 1st Qu.:  1272  
 Median :  3134  
 Mean   :  7031  
 3rd Qu.:  7142  
 Max.   :125610  

Lập bảng thống kê

L2 %>%
  select(totexp, suppins, age) %>%
  summary()
     totexp          suppins            age       
 Min.   :     0   Min.   :0.0000   Min.   :65.00  
 1st Qu.:  1272   1st Qu.:0.0000   1st Qu.:69.00  
 Median :  3134   Median :1.0000   Median :73.00  
 Mean   :  7031   Mean   :0.5813   Mean   :74.17  
 3rd Qu.:  7142   3rd Qu.:1.0000   3rd Qu.:79.00  
 Max.   :125610   Max.   :1.0000   Max.   :90.00  
L2 %>%
  select(suppins) %>%
  table()
suppins
   0    1 
1283 1781 
L2 %>%
  select(suppins) %>%
  table() %>%
  prop.table()*100
suppins
       0        1 
41.87337 58.12663 

Xem thống kê chung về những người có bảo hiểm và không bảo hiểm về chi tiêu y tế?

  L2 %>% 
    select(suppins, totexp) %>%
    group_by(suppins) %>%
    summarise(Trungbinh=mean(totexp),
              Trungvi=median(totexp),
              GTMin=min(totexp),
              GTMax=max(totexp))
# A tibble: 2 × 5
  suppins Trungbinh Trungvi GTMin  GTMax
    <dbl>     <dbl>   <dbl> <dbl>  <dbl>
1       0     6420.    2534     0 104823
2       1     7471.    3570     0 125610
# Xem mối quan hệ giữa chi tiêu y tế với bảo hiểm bổ sung :Xem tổng quan
L2 %>%
  select(totexp, suppins) %>%
  group_by(suppins) %>%
  summarise(mean=mean(totexp),
            min=min(totexp),
            max=max(totexp),
            SD=sd(totexp))
# A tibble: 2 × 5
  suppins  mean   min    max     SD
    <dbl> <dbl> <dbl>  <dbl>  <dbl>
1       0 6420.     0 104823 11199.
2       1 7471.     0 125610 12287.

Matrix Correlation

L2 %>% 
  select(totexp, suppins, age, famsze) %>%
  cor()
             totexp     suppins         age      famsze
totexp   1.00000000  0.04374764  0.02934859 -0.04401239
suppins  0.04374764  1.00000000 -0.11386547 -0.09110003
age      0.02934859 -0.11386547  1.00000000 -0.16630940
famsze  -0.04401239 -0.09110003 -0.16630940  1.00000000
L2 %>%
  select(totexp, suppins, age) %>%
  cor() %>%
  round(2)
        totexp suppins   age
totexp    1.00    0.04  0.03
suppins   0.04    1.00 -0.11
age       0.03   -0.11  1.00

Linear Regression

Xem xét tác động riêng của bảo hiểm bổ sung tới chi tiêu y tế

M1<- lm(totexp~suppins,L2) 

M1 là ta gán tên cho mô hình, các bạn có thể đặt tên khác tùy ý. lm: là lệnh dùng để ước lượng mô hình hồi quy tuyến tính. L2: là tên dữ liệu dùng để ước lượng

summary(M1)

Call:
lm(formula = totexp ~ suppins, data = L2)

Residuals:
   Min     1Q Median     3Q    Max 
 -7471  -5692  -3898    130 118139 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   6420.1      330.6  19.417   <2e-16 ***
suppins       1050.9      433.7   2.423   0.0154 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11840 on 3062 degrees of freedom
Multiple R-squared:  0.001914,  Adjusted R-squared:  0.001588 
F-statistic: 5.871 on 1 and 3062 DF,  p-value: 0.01545

Xem xét các mô hình mở rộng các yếu tố kiểm soát

M2 <- lm(totexp ~suppins + age + famsze +educyr+income, data=L2)
M3 <- lm(totexp~suppins+ age + famsze +educyr + injury+totchr, data=L2 )
summary(M2)

Call:
lm(formula = totexp ~ suppins + age + famsze + educyr + income, 
    data = L2)

Residuals:
   Min     1Q Median     3Q    Max 
 -8746  -5594  -3849     19 117820 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  2275.19    2909.29   0.782   0.4342  
suppins       996.74     451.81   2.206   0.0275 *
age            51.20      34.74   1.474   0.1406  
famsze       -397.68     223.03  -1.783   0.0747 .
educyr        127.28      67.70   1.880   0.0602 .
income        -16.07      10.27  -1.566   0.1175  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11830 on 3058 degrees of freedom
Multiple R-squared:  0.005818,  Adjusted R-squared:  0.004192 
F-statistic: 3.579 on 5 and 3058 DF,  p-value: 0.003139
M3 %>% summary()

Call:
lm(formula = totexp ~ suppins + age + famsze + educyr + injury + 
    totchr, data = L2)

Residuals:
   Min     1Q Median     3Q    Max 
-16458  -5062  -2528    380 114015 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -64.648   2771.364  -0.023 0.981391    
suppins      524.775    429.919   1.221 0.222317    
age            8.589     33.126   0.259 0.795433    
famsze      -165.535    213.617  -0.775 0.438449    
educyr       141.159     61.980   2.277 0.022826 *  
injury      1851.317    519.655   3.563 0.000373 ***
totchr      2532.904    158.973  15.933  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11320 on 3057 degrees of freedom
Multiple R-squared:  0.08984,   Adjusted R-squared:  0.08805 
F-statistic: 50.29 on 6 and 3057 DF,  p-value: < 2.2e-16

Tables of output from several regressions

Trình bày: So sánh các mô hình xem kết quả Chúng ta có nhiều cách để trình bày, dưới đây là 2 cách, các cách khác có thể tìm thấy trên google

Cách 1: Dùng gói gtsummary

t1<-gtsummary::tbl_regression(M1 )
t2<- gtsummary::tbl_regression(M2 )
t3<- gtsummary::tbl_regression(M3)

gtsummary::tbl_merge(
    tbls = list(t1, t2, t3),  tab_spanner = c("M1", "M2", "M3")) 

Characteristic

M1

M2

M3

Beta

95% CI

1

p-value

Beta

95% CI

1

p-value

Beta

95% CI

1

p-value

=1 if has supp priv insurance 1,051 201, 1,901 0.015 997 111, 1,883 0.027 525 -318, 1,368 0.2
Age


51 -17, 119 0.14 8.6 -56, 74 0.8
Size of the family


-398 -835, 40 0.075 -166 -584, 253 0.4
Years of education


127 -5.5, 260 0.060 141 20, 263 0.023
annual household income/1000


-16 -36, 4.1 0.12


=1 if condition is caused by an accident/injury





1,851 832, 2,870 <0.001
# of chronic problems





2,533 2,221, 2,845 <0.001
1

CI = Confidence Interval

Cách 2: dùng gói Modelsummary

models <- list(M1, M2, M3)
modelsummary::modelsummary(models,
                           statistic =  c('{statistic}'),
                           stars=c("***"=0.01, "**"=0.05, "*"=0.1))
tinytable_ggjm8wswkm2tqflxsb3o
(1) (2) (3)
* p < 0.1, ** p < 0.05, *** p < 0.01
(Intercept) 6420.058*** 2275.192 -64.648
19.417 0.782 -0.023
suppins 1050.864** 996.744** 524.775
2.423 2.206 1.221
age 51.199 8.589
1.474 0.259
famsze -397.678* -165.535
-1.783 -0.775
educyr 127.282* 141.159**
1.880 2.277
income -16.075
-1.566
injury 1851.317***
3.563
totchr 2532.904***
15.933
Num.Obs. 3064 3064 3064
R2 0.002 0.006 0.090
R2 Adj. 0.002 0.004 0.088
AIC 66177.0 66173.0 65904.4
BIC 66195.0 66215.1 65952.6
Log.Lik. -33085.479 -33079.475 -32944.205
F 5.871 3.579 50.289
RMSE 11839.47 11816.30 11305.98

Checking for Model assumptions

Kiểm tra các vấn đề của mô hình

Checking for Multicolinearity

Kiểm tra hiện tượng Đa cộng tuyến Dùng gói thư viện car

car::vif(M3) 
 suppins      age   famsze   educyr   injury   totchr 
1.075882 1.065494 1.065684 1.084227 1.019568 1.032439 

Vấn đề đa cộng tuyến nên được xử lý thế nào ? ### Checking Homoscedasticity Kiểm tra hiện tượng Phương sai sai số thay đổi

plot(M3$resid ~ M3$fitted.values)
abline(h = 0, lty = 2)

Dùng gói car

car::residualPlots(M3)

           Test stat Pr(>|Test stat|)
suppins      -0.2075           0.8356
age          -0.9869           0.3238
famsze       -0.4314           0.6662
educyr        0.5064           0.6126
injury        0.1921           0.8477
totchr        0.2679           0.7888
Tukey test    0.3028           0.7620

Dùng gói lmtest: Kiểm định chung

lmtest::bptest(totexp~suppins+ age+famsze + educyr, data=L2 )

    studentized Breusch-Pagan test

data:  totexp ~ suppins + age + famsze + educyr
BP = 3.2535, df = 4, p-value = 0.5163

Kiểm định phương sai thay đổi trong các phân nhóm dữ liệu

lmtest::gqtest(totexp~suppins+ age+famsze + educyr, data=L2 )

    Goldfeld-Quandt test

data:  totexp ~ suppins + age + famsze + educyr
GQ = 243.53, df1 = 1527, df2 = 1527, p-value < 2.2e-16
alternative hypothesis: variance increases from segment 1 to 2

Nếu có Phương sai sai số thay đổi ta nên làm thế nào?

Serial Correlation

Kiểm tra hiện tượng tương quan chuỗi

lmtest::dwtest(totexp ~suppins + age + famsze, data=L2)

    Durbin-Watson test

data:  totexp ~ suppins + age + famsze
DW = 0.045237, p-value < 2.2e-16
alternative hypothesis: true autocorrelation is greater than 0

Trong dữ liệu chéo thì hiện tượng này có quan trọng không? vì sao?

Checking for unsual or influential observations

Kiểm tra các ảnh hưởng đến mô hình do các giá trị outliers (giá trị dị biệt) Xem thống kê các quan sát dị biệt

car::outlierTest(M3)
      rstudent unadjusted p-value Bonferroni p
2955 10.260787         2.6120e-24   8.0032e-21
2954 10.034708         2.4548e-23   7.5217e-20
2953  9.261869         3.6777e-20   1.1268e-16
2952  8.744938         3.6165e-18   1.1081e-14
2950  7.842749         6.0418e-15   1.8512e-11
2949  7.835452         6.3959e-15   1.9597e-11
2951  7.830442         6.6507e-15   2.0378e-11
2947  7.495444         8.6048e-14   2.6365e-10
2945  7.180434         8.6880e-13   2.6620e-09
2948  7.170068         9.3602e-13   2.8680e-09

Biểu thị bằng biểu đồ

car::influencePlot(M3)

        StudRes         Hat        CookD
90    0.0938357 0.044038470 5.796566e-05
1337  0.3303905 0.026163977 4.190844e-04
2954 10.0347084 0.002575788 3.597530e-02
2955 10.2607871 0.003405706 4.970316e-02
car::infIndexPlot(M3)

Ta nên làm thế nào khi có quan sát dị biệt trong dữ liệu? Ý nghĩa của các quan sát dị biệt trong phân tích kinh tế?

Khắc phục mô hình

Có thể dùng mô hình ước lượng hiệu chỉnh để điều chỉnh mô hình chung! Weighted Regression

M3 <- lm(totexp~suppins+ age + famsze +educyr + injury+totchr, data=L2 )
L2$resi <- M3$residuals
varfunc.M3 <- lm(log(resi^2) ~suppins+ age + famsze +educyr + injury+totchr, data=L2)
L2$varfunc <-exp(varfunc.M3$fitted.values)
Model.gls <- lm(totexp ~suppins+ age + famsze +educyr + injury+totchr, weights = 1/sqrt(varfunc), data = L2)
summary(Model.gls)

Call:
lm(formula = totexp ~ suppins + age + famsze + educyr + injury + 
    totchr, data = L2, weights = 1/sqrt(varfunc))

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-139.99  -83.45  -48.78    5.92 2057.51 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -440.30    2392.37  -0.184 0.853992    
suppins       680.75     374.43   1.818 0.069148 .  
age            15.64      28.99   0.540 0.589572    
famsze        -94.15     165.93  -0.567 0.570478    
educyr        119.16      52.57   2.267 0.023469 *  
injury       1708.97     517.28   3.304 0.000965 ***
totchr       2466.44     161.09  15.311  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 175.6 on 3057 degrees of freedom
Multiple R-squared:  0.08391,   Adjusted R-squared:  0.08211 
F-statistic: 46.67 on 6 and 3057 DF,  p-value: < 2.2e-16
models <- list(M1, M2, M3,Model.gls )
modelsummary::modelsummary(models,
                           statistic =  c('{statistic} {stars}'))
tinytable_x4qkerlma5x4kgxjyy45
(1) (2) (3) (4)
(Intercept) 6420.058 2275.192 -64.648 -440.299
19.417 *** 0.782 -0.023 -0.184
suppins 1050.864 996.744 524.775 680.747
2.423 * 2.206 * 1.221 1.818 +
age 51.199 8.589 15.639
1.474 0.259 0.540
famsze -397.678 -165.535 -94.148
-1.783 + -0.775 -0.567
educyr 127.282 141.159 119.163
1.880 + 2.277 * 2.267 *
income -16.075
-1.566
injury 1851.317 1708.970
3.563 *** 3.304 ***
totchr 2532.904 2466.442
15.933 *** 15.311 ***
Num.Obs. 3064 3064 3064 3064
R2 0.002 0.006 0.090 0.084
R2 Adj. 0.002 0.004 0.088 0.082
AIC 66177.0 66173.0 65904.4 65378.5
BIC 66195.0 66215.1 65952.6 65426.7
Log.Lik. -33085.479 -33079.475 -32944.205 -32681.254
F 5.871 3.579 50.289 46.668
RMSE 11839.47 11816.30 11305.98 11307.19
library(ggplot2)
g <- ggplot(data = L2, 
            aes(y = totexp, x = age)) + 
  geom_point(col = 'blue')
g + 
  geom_abline(slope = M2$coefficients[3], 
              intercept = M2$coefficients[1], 
              col = 'black') + 
  geom_abline(slope = M3$coefficients[3], 
              intercept = M3$coefficients[1], 
              col = 'red') + 
  geom_abline(slope = Model.gls$coefficients[3], 
              intercept = Model.gls$coefficients[1], 
              col = 'green')

Mô hình đã đúng chưa?

Có cách nào làm tốt hơn không? Hãy xem lại toàn bộ quá trình thực hiện có gì cần điều chỉnh?

Bài tập

Ảnh hưởng của thể chế đến tăng trưởng kinh tế toàn thế giới

Thể chế: Regulatory Quality, Rule of Law, Government Effectiveness

Tăng trưởng kinh tế: Dùng kiến thức vĩ mô, kinh tế đã học để chọn biến phù hợp

Các biến kiểm soát: Hãy dùng kiến thức kinh tế để chọn phù hợp

Dữ liệu: Chọn năm 2005 https://databank.worldbank.org/source/world-development-indicators

Yêu cầu: Phân tích ảnh hưởng của thể chế đến tăng trưởng kinh tế

Thiết lập mô hình phù hợp.

Ước lượng mô hình.

Phân tích tóm tắt kết quả mô hình.

library(tidyverse)

Nhập dữ liệu

BT11<- readxl::read_xlsx("C:\\Users\\Huynh Chuong\\Desktop\\University\\UEL\\Class_QuantMethods\\2024\\Lectures\\BT1\\BT1_WDI_Indicators.xlsx", sheet = "CleanedData")

Xem dữ liệu

View(BT11)
variable.names(BT11)
[1] "Country Name"  "Country Code"  "Series Name"   "Series Code"  
[5] "2005 [YR2005]"
head(BT11)
# A tibble: 6 × 5
  `Country Name` `Country Code` `Series Name`      `Series Code` `2005 [YR2005]`
  <chr>          <chr>          <chr>              <chr>                   <dbl>
1 Afghanistan    AFG            GDP (constant 201… GDP             8874480196   
2 Afghanistan    AFG            GDP growth (annua… GDP_growth              11.2 
3 Afghanistan    AFG            GDP per capita (c… GDPcap                 364.  
4 Afghanistan    AFG            Regulatory Qualit… RQ.EST                  -1.64
5 Afghanistan    AFG            Regulatory Qualit… RQ.PER.RNK               2.94
6 Afghanistan    AFG            Government Effect… GE.EST                  -1.23

Chuyển dữ liệu từ dọc thành ngang cho các biến

BT11 %>%
  pivot_wider(id_cols = c(`Country Name`, `Country Code`), names_from = c(`Series Code`), values_from = "2005 [YR2005]") %>%
  rename("RegulatoryQual"="RQ.EST",
         "GovernmentEff"= "GE.EST",
         "RuleofLaw"="RL.EST") ->   BT11_clean

Thử nghiệm model

model1 <- lm(log(GDP)~RegulatoryQual+ GovernmentEff+ RuleofLaw, data=BT11_clean)
model2 <- lm(log(GDP)~RegulatoryQual+ GovernmentEff+ RuleofLaw+log(L) + log(Kfixed), data=BT11_clean)
model3 <- lm(log(GDP)~RegulatoryQual+ GovernmentEff+ RuleofLaw+log(L) + log(Kfixed)+FDI, data=BT11_clean) 

Trình bày các mô hình

models <- list("Mô hình 1"= model1,"Mô hình 2"= model2, model3)
modelsummary::modelsummary(models,
                           statistic =  c('{statistic} {stars}'))
tinytable_u8kl0mxtgrpjmcs07h5o
Mô hình 1 Mô hình 2
(Intercept) 23.895 3.034 2.911
171.483 *** 8.699 *** 8.936 ***
RegulatoryQual 0.852 0.091 0.168
1.731 + 0.987 1.895 +
GovernmentEff 2.723 0.023 -0.136
4.777 *** 0.208 -1.229
RuleofLaw -2.784 -0.027 0.065
-6.734 *** -0.287 0.701
log(L) 0.142 0.144
4.604 *** 5.026 ***
log(Kfixed) 0.845 0.848
28.584 *** 30.980 ***
FDI 0.000
-0.333
Num.Obs. 193 133 130
R2 0.312 0.983 0.986
R2 Adj. 0.301 0.983 0.986
AIC 10033.8 6587.0 6418.1
BIC 10050.2 6607.2 6441.1
Log.Lik. -399.049 -12.941 -1.983
RMSE 1.91 0.27 0.25
models <- list("Mô hình 1"= model1,"Mô hình 2"= model2)
modelsummary::modelsummary(models,
                           statistic =  c('{statistic} {stars}'),
                           stars = c("*"=0.1, "**"=0.05, "***"=0.01))
tinytable_m41omi096e70m6y5mrb2
Mô hình 1 Mô hình 2
(Intercept) 23.895*** 3.034***
171.483 *** 8.699 ***
RegulatoryQual 0.852* 0.091
1.731 * 0.987
GovernmentEff 2.723*** 0.023
4.777 *** 0.208
RuleofLaw -2.784*** -0.027
-6.734 *** -0.287
log(L) 0.142***
4.604 ***
log(Kfixed) 0.845***
28.584 ***
Num.Obs. 193 133
R2 0.312 0.983
R2 Adj. 0.301 0.983
AIC 10033.8 6587.0
BIC 10050.2 6607.2
Log.Lik. -399.049 -12.941
RMSE 1.91 0.27