I have a dataframe like this (the real one just has many more variables):
data<-data.frame(Country=c("USA","USA","USA","USA","India","India","India","India","China","China","China","China"),
Indicator=rep(c("Population","GDP","Debt","Currency"),times=3),`2011`=rep(c(1,2,3,4),each=3),`2012`=rep(c(4,5,6,7),each=3),`2013`=rep(c(8,9,11,12),each=3))
data<-data %>%
pivot_longer(
starts_with("X"),
names_to = "Year",
names_transform = list(Year = parse_number)
) %>%
pivot_wider(names_from = Indicator, values_from = value) %>%
relocate(Year)
data$y1<-c(1,10,11,3,4,5,2,2,1)
data$y2<-c(1,2,3,4,5,6,6,8,9)
data$y3<-c(10,9,8,7,5,5,11,3,4)
data$y4<-c(1,1,11,3,4,2,2,2,1)
data$y5<-c(5,10,11,3,5,5,5,5,1)
And I want to loop a linear regression model each time with a new y and different combinations of x (GDP) and control variables (in this case, these are Country, Population, Debt and Currency), like so:
lm_y1_GDP=lm(y1~GDP, data = data)
lm_y1_GDP_year=lm(y1~GDP year, data = data)
lm_y1_GDP_country=lm(y1~GDP country, data = data)
...
lm_y5_GDP_country_population_debt_currency=lm(y5~GDP Country Population Debt Currency, data = data)
and store each summary(lm_y1), summary(lm_y2),...
in a dedicated list of regression results. Ideally, I would also want to create dummy variables to add to the list of regressions also country- and time-fixed effects. Thanks a lot in advance!
CodePudding user response:
This one is leaning more towards Tidyverse. I also left Country
in, to my understanding lm()
does handle factors, though it's something to consider when interpreting results. Broom for tabular overview.
library(dplyr)
library(tidyr)
library(purrr)
library(broom)
data$Country <- as.factor(data$Country)
lm_out <- map(1:5, ~ combn(c("Year", "Country", "Population", "Debt", "Currency"), .x)) %>%
# list of matrices, 1x5, 2x10 .. 4x5, 5x1
map(~ apply(.x, 2, paste0, collapse = " ")) %>%
# formulas without y.~GDP
unlist() %>%
paste0("GDP ", .) %>%
# all combinations as data.frame
expand.grid(y = c("y1", "y2", "y3", "y4", "y5"), terms = .) %>%
mutate(frm = paste0(y,"~",terms)) %>%
# y terms frm
# 1 y1 GDP Year y1~GDP Year
# 2 y2 GDP Year y2~GDP Year
# 3 y3 GDP Year y3~GDP Year
# 4 y4 GDP Year y4~GDP Year
# 5 y5 GDP Year y5~GDP Year
# ...
pull(frm) %>%
set_names() %>%
# fit 155 models
map(~ lm(.x, data = data))
# used formulas can be found from list names:
names(lm_out)[1]
#> [1] "y1~GDP Year"
summary(lm_out[[1]])
#>
#> Call:
#> lm(formula = .x, data = data)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -3.3627 -1.6373 -0.2843 2.4118 2.6863
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.604e 04 4.789e 03 -3.350 0.0154 *
#> GDP -1.677e 00 5.847e-01 -2.867 0.0285 *
#> Year 7.980e 00 2.382e 00 3.351 0.0154 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 2.541 on 6 degrees of freedom
#> Multiple R-squared: 0.6541, Adjusted R-squared: 0.5387
#> F-statistic: 5.672 on 2 and 6 DF, p-value: 0.0414
# imap to access list names as .y, run tidy and glance over whole list,
# add column with formula
imap_dfr(lm_out, ~ tidy(.x) %>% mutate(formula = .y) )
#> # A tibble: 790 × 6
#> term estimate std.error statistic p.value formula
#> <chr> <dbl> <dbl> <dbl> <dbl> <chr>
#> 1 (Intercept) -16043. 4789. -3.35 0.0154 y1~GDP Year
#> 2 GDP -1.68 0.585 -2.87 0.0285 y1~GDP Year
#> 3 Year 7.98 2.38 3.35 0.0154 y1~GDP Year
#> 4 (Intercept) 8628. 2019. 4.27 0.00524 y2~GDP Year
#> 5 GDP 1.49 0.246 6.04 0.000933 y2~GDP Year
#> 6 Year -4.29 1.00 -4.27 0.00525 y2~GDP Year
#> 7 (Intercept) -554. 4645. -0.119 0.909 y3~GDP Year
#> 8 GDP -0.576 0.567 -1.02 0.349 y3~GDP Year
#> 9 Year 0.280 2.31 0.121 0.907 y3~GDP Year
#> 10 (Intercept) -8273. 5882. -1.41 0.209 y4~GDP Year
#> # … with 780 more rows
imap_dfr(lm_out, ~ glance(.x) %>% mutate(formula = .y) )
#> # A tibble: 155 × 13
#> r.squared adj.r.squ…¹ sigma stati…² p.value df logLik AIC BIC devia…³
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0.654 0.539 2.54 5.67 4.14e-2 2 -19.3 46.7 47.5 38.7
#> 2 0.879 0.839 1.07 21.8 1.77e-3 2 -11.6 31.1 31.9 6.89
#> 3 0.420 0.227 2.46 2.18 1.95e-1 2 -19.1 46.1 46.9 36.4
#> 4 0.269 0.0257 3.12 1.11 3.90e-1 2 -21.2 50.4 51.2 58.5
#> 5 0.548 0.397 2.43 3.64 9.23e-2 2 -18.9 45.9 46.6 35.4
#> 6 0.578 0.325 3.07 2.29 1.96e-1 3 -20.2 50.5 51.4 47.2
#> 7 0.989 0.982 0.356 148. 2.65e-5 3 -0.824 11.6 12.6 0.633
#> 8 0.611 0.378 2.21 2.62 1.63e-1 3 -17.3 44.5 45.5 24.4
#> 9 0.256 -0.191 3.45 0.573 6.57e-1 3 -21.3 52.5 53.5 59.5
#> 10 0.580 0.328 2.56 2.30 1.95e-1 3 -18.6 47.2 48.2 32.9
#> # … with 145 more rows, 3 more variables: df.residual <int>, nobs <int>,
#> # formula <chr>, and abbreviated variable names ¹adj.r.squared, ²statistic,
#> # ³deviance
Input:
data<-data.frame(Country=c("USA","USA","USA","USA","India","India","India","India","China","China","China","China"),
Indicator=rep(c("Population","GDP","Debt","Currency"),times=3),`2011`=rep(c(1,2,3,4),each=3),`2012`=rep(c(4,5,6,7),each=3),`2013`=rep(c(8,9,11,12),each=3))
data<-data %>%
pivot_longer(
starts_with("X"),
names_to = "Year",
names_transform = list(Year = readr::parse_number)
) %>%
pivot_wider(names_from = Indicator, values_from = value) %>%
relocate(Year)
data$y1<-c(1,10,11,3,4,5,2,2,1)
data$y2<-c(1,2,3,4,5,6,6,8,9)
data$y3<-c(10,9,8,7,5,5,11,3,4)
data$y4<-c(1,1,11,3,4,2,2,2,1)
data$y5<-c(5,10,11,3,5,5,5,5,1)
Created on 2023-01-20 with reprex v2.0.2
CodePudding user response:
How about something like this? The function I made below do_mods()
takes a few arguments:
xvars
is a character vector of x-variable names.yvars
is a character vector of y-variable names.other_ctrls
is an optional character vector of other control variables that will always be in the model.data
is a data frame.
The function makes all possible combinations of xvars
for each different value of yvars
. The output is a list where each element of the list corresponds to a different dependent variable. Each list element of the return is itself a list of all model summaries for that dependent variable.
library(dplyr)
library(tidyr)
library(readr)
data<-data.frame(Country=c("USA","USA","USA","USA","India","India","India","India","China","China","China","China"),
Indicator=rep(c("Population","GDP","Debt","Currency"),times=3),`2011`=rep(c(1,2,3,4),each=3),`2012`=rep(c(4,5,6,7),each=3),`2013`=rep(c(8,9,11,12),each=3))
data<-data %>%
pivot_longer(
starts_with("X"),
names_to = "Year",
names_transform = list(Year = parse_number)
) %>%
pivot_wider(names_from = Indicator, values_from = value) %>%
relocate(Year)
data$y1<-c(1,10,11,3,4,5,2,2,1)
data$y2<-c(1,2,3,4,5,6,6,8,9)
data$y3<-c(10,9,8,7,5,5,11,3,4)
data$y4<-c(1,1,11,3,4,2,2,2,1)
data$y5<-c(5,10,11,3,5,5,5,5,1)
xvars <- c("Population", "GDP", "Debt", "Currency")
yvars <- c("y1", "y2", "y3", "y4", "y5")
do_mods <- function(xvars, yvars, other_ctrls = NULL, data, ...){
xspec <- lapply(seq_along(xvars), function(x)combn(xvars, x))
forms <- sapply(yvars, function(y){
c(unlist(sapply(xspec, function(x)apply(x, 2, function(z)
paste0(y, " ~ ", paste(c(z, other_ctrls), collapse=" "))))))
})
out <- lapply(1:ncol(forms), function(i){
lapply(1:length(forms[,i]), function(j){
summary(lm(forms[j,i], data))
})
})
names(out) <- colnames(forms)
out
}
res <- do_mods(xvars, yvars, "Country", data)
names(res)
#> [1] "y1" "y2" "y3" "y4" "y5"
res[[1]]
#> [[1]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.8564 2.8144 2.0420 0.4770 0.1477 -0.6247 1.9580 0.6287 -2.5867
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.2873 2.8756 -0.448 0.6731
#> Population 0.4431 0.3394 1.305 0.2486
#> CountryIndia 2.9241 2.5500 1.147 0.3034
#> CountryUSA 6.7005 2.6316 2.546 0.0515 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.074 on 5 degrees of freedom
#> Multiple R-squared: 0.5783, Adjusted R-squared: 0.3252
#> F-statistic: 2.285 on 3 and 5 DF, p-value: 0.1963
#>
#>
#> [[2]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.8564 2.8144 2.0420 0.4770 0.1477 -0.6247 1.9580 0.6287 -2.5867
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.7304 3.1497 -0.549 0.6064
#> GDP 0.4431 0.3394 1.305 0.2486
#> CountryIndia 3.3672 2.6316 1.280 0.2569
#> CountryUSA 7.1436 2.7528 2.595 0.0485 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.074 on 5 degrees of freedom
#> Multiple R-squared: 0.5783, Adjusted R-squared: 0.3252
#> F-statistic: 2.285 on 3 and 5 DF, p-value: 0.1963
#>
#>
#> [[3]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.9506 2.8049 2.1457 0.5210 0.2765 -0.7975 1.8543 0.6099 -2.4642
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.5136 3.0724 -0.493 0.6431
#> Debt 0.4148 0.3261 1.272 0.2593
#> CountryIndia 2.7481 2.5467 1.079 0.3298
#> CountryUSA 7.0494 2.7497 2.564 0.0504 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.093 on 5 degrees of freedom
#> Multiple R-squared: 0.5728, Adjusted R-squared: 0.3165
#> F-statistic: 2.235 on 3 and 5 DF, p-value: 0.2021
#>
#>
#> [[4]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.9506 2.8049 2.1457 0.5210 0.2765 -0.7975 1.8543 0.6099 -2.4642
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.5136 3.0724 -0.493 0.6431
#> Currency 0.4148 0.3261 1.272 0.2593
#> CountryIndia 2.7481 2.5467 1.079 0.3298
#> CountryUSA 6.6346 2.6379 2.515 0.0535 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.093 on 5 degrees of freedom
#> Multiple R-squared: 0.5728, Adjusted R-squared: 0.3165
#> F-statistic: 2.235 on 3 and 5 DF, p-value: 0.2021
#>
#>
#> [[5]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.8564 2.8144 2.0420 0.4770 0.1477 -0.6247 1.9580 0.6287 -2.5867
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 5.413 2.305 2.349 0.0657 .
#> Population 7.144 2.753 2.595 0.0485 *
#> GDP -6.701 2.632 -2.546 0.0515 .
#> CountryIndia -3.776 2.532 -1.491 0.1961
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.074 on 5 degrees of freedom
#> Multiple R-squared: 0.5783, Adjusted R-squared: 0.3252
#> F-statistic: 2.285 on 3 and 5 DF, p-value: 0.1963
#>
#>
#> [[6]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -5.773e-15 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.4151 4.6421 -0.089 0.933
#> Population 1.7412 5.0357 0.346 0.747
#> Debt -1.2426 4.8067 -0.259 0.809
#> CountryIndia 3.4124 3.4003 1.004 0.372
#> CountryUSA 5.5876 5.2008 1.074 0.343
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[7]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.288e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.4151 4.6421 -0.089 0.9330
#> Population 1.7412 5.0357 0.346 0.7469
#> Currency -1.2426 4.8067 -0.259 0.8088
#> CountryIndia 3.4124 3.4003 1.004 0.3724
#> CountryUSA 6.8302 2.9607 2.307 0.0823 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[8]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.110e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -2.156 3.862 -0.558 0.6063
#> GDP 1.741 5.036 0.346 0.7469
#> Debt -1.243 4.807 -0.259 0.8088
#> CountryIndia 5.154 7.501 0.687 0.5298
#> CountryUSA 7.329 3.135 2.338 0.0796 .
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[9]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -9.992e-15 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -2.156 3.862 -0.558 0.606
#> GDP 1.741 5.036 0.346 0.747
#> Currency -1.243 4.807 -0.259 0.809
#> CountryIndia 5.154 7.501 0.687 0.530
#> CountryUSA 8.571 6.310 1.358 0.246
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[10]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7 8 9
#> -4.9506 2.8049 2.1457 0.5210 0.2765 -0.7975 1.8543 0.6099 -2.4642
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -1.514 3.072 -0.493 0.6431
#> Debt -6.635 2.638 -2.515 0.0535 .
#> Currency 7.049 2.750 2.564 0.0504 .
#> CountryIndia 2.748 2.547 1.079 0.3298
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.093 on 5 degrees of freedom
#> Multiple R-squared: 0.5728, Adjusted R-squared: 0.3165
#> F-statistic: 2.235 on 3 and 5 DF, p-value: 0.2021
#>
#>
#> [[11]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -5.329e-15 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 5.173 2.720 1.902 0.1300
#> Population 7.329 3.135 2.338 0.0796 .
#> GDP -5.588 5.201 -1.074 0.3431
#> Debt -1.243 4.807 -0.259 0.8088
#> CountryIndia -2.175 6.801 -0.320 0.7651
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[12]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.310e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 6.415 4.642 1.382 0.2392
#> Population 8.571 6.310 1.358 0.2459
#> GDP -6.830 2.961 -2.307 0.0823 .
#> Currency -1.243 4.807 -0.259 0.8088
#> CountryIndia -3.418 3.132 -1.091 0.3365
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[13]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.332e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -0.4151 4.6421 -0.089 0.9330
#> Population 1.7412 5.0357 0.346 0.7469
#> Debt -6.8302 2.9607 -2.307 0.0823 .
#> Currency 5.5876 5.2008 1.074 0.3431
#> CountryIndia 3.4124 3.4003 1.004 0.3724
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[14]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.110e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients: (1 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) -2.156 3.862 -0.558 0.6063
#> GDP 1.741 5.036 0.346 0.7469
#> Debt -8.571 6.310 -1.358 0.2459
#> Currency 7.329 3.135 2.338 0.0796 .
#> CountryIndia 5.154 7.501 0.687 0.5298
#> CountryUSA NA NA NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
#>
#>
#> [[15]]
#>
#> Call:
#> lm(formula = forms[j, i], data = data)
#>
#> Residuals:
#> 1 2 3 4 5 6 7
#> -4.671e 00 2.833e 00 1.838e 00 2.480e-01 -2.480e-01 -1.310e-14 2.162e 00
#> 8 9
#> 6.658e-01 -2.827e 00
#>
#> Coefficients: (2 not defined because of singularities)
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 2.997 5.966 0.502 0.642
#> Population 5.154 7.501 0.687 0.530
#> GDP -3.412 3.400 -1.004 0.372
#> Debt -3.418 3.132 -1.091 0.336
#> Currency 2.175 6.801 0.320 0.765
#> CountryIndia NA NA NA NA
#> CountryUSA NA NA NA NA
#>
#> Residual standard error: 3.408 on 4 degrees of freedom
#> Multiple R-squared: 0.5852, Adjusted R-squared: 0.1704
#> F-statistic: 1.411 on 4 and 4 DF, p-value: 0.3734
Created on 2023-01-20 by the reprex package (v2.0.1)