Loading the dataset

The current SDC data set is stored locally. The current dataset contains the following variables:

# Loading df

df <- read_excel("SDC_Export.xlsx")

nrow_df <- as.character(nrow(df))

names(df)
##  [1] "Deal Number"                       "Date Announced"                   
##  [3] "Date Originally Announced"         "Date Effective"                   
##  [5] "Target Short Name"                 "Target 6-digit CUSIP"             
##  [7] "Target PermID"                     "Target Primary Ticker Symbol"     
##  [9] "Acquiror Short Name"               "Acquiror 6-digit CUSIP"           
## [11] "Acquiror PermID"                   "Acquiror Primary Ticker Symbol"   
## [13] "Deal Value (USD Millions)"         "Implied Deal Value (USD Millions)"
## [15] "Consideration Structure"           "Termination Reason"
# uncapitalize all column names, remove all parentheses, and replace space with underscore 

names(df) <- tolower(names(df))
names(df) <- gsub("\\(.*\\)", "", names(df))
names(df) <- gsub(" ", "_", names(df))

names(df)
##  [1] "deal_number"                    "date_announced"                
##  [3] "date_originally_announced"      "date_effective"                
##  [5] "target_short_name"              "target_6-digit_cusip"          
##  [7] "target_permid"                  "target_primary_ticker_symbol"  
##  [9] "acquiror_short_name"            "acquiror_6-digit_cusip"        
## [11] "acquiror_permid"                "acquiror_primary_ticker_symbol"
## [13] "deal_value_"                    "implied_deal_value_"           
## [15] "consideration_structure"        "termination_reason"

Raw Data

n_raw <- as.character(nrow(df))

The raw data contains 11417 M &A transactions from 2010 to 2022. We are only interested in transactions where the acquirer is a public firm. We define public firms as those who have a 6-digit CUSIP and a primary ticker symbol.

# Only keeping public acquirers

df1 <- df %>% filter(!is.na(`acquiror_6-digit_cusip`) & !is.na(acquiror_primary_ticker_symbol))

nrow_df1 <- as.character(nrow(df1))

Currently, there are 6149 M &A transactions where the acquirers is a public firm.

Summary Statistics

In this section, I will provide a summary statistics of the current data set after excluding non-public acquirers.

Deal Size

# summary statistics of deal size and implied deal size

df1 %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  kable("html", col.names = c("Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
2062.08 201.87 7682.918 0.01 148705.3

Deal Size by Termination Reason

# summary statistics of deal size and implied deal size by termination reason; 3 digits; order by deal size

df1 %>% 
  group_by(termination_reason) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_deal_value)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Termination Reason", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Termination Reason Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Competing Bid Is Successful;Acquiror Pursues Other Strategic Options 64839.370 64839.370 NA 64839.37 64839.37
Shareholder Or Board Approval;Acquiror Pursues Other Strategic Options 21534.300 21534.300 NA 21534.30 21534.30
Regulation 17002.477 1577.825 37051.297 1.08 145785.26
Unable To Engage Target In Meaningful Discussions;Unsolicited Offer is Withdrawn 14797.560 14797.560 20605.403 227.34 29367.78
Unable To Engage Target In Meaningful Discussions 5663.055 333.730 18828.287 2.52 148705.26
Shareholder Or Board Approval 4317.869 296.370 13849.480 0.73 77567.80
Litigation;Economic And Or Market Conditions 3952.410 3952.410 NA 3952.41 3952.41
Litigation;Unable To Engage Target In Meaningful Discussions 3786.240 3786.240 NA 3786.24 3786.24
Acquiror Pursues Other Strategic Options 3769.275 400.150 8407.796 0.50 43002.86
Acquiror Pursues Other Strategic Options;Regulation 3708.720 3708.720 NA 3708.72 3708.72
Competing Bid Is Successful 2744.726 430.850 7030.540 2.60 47814.30
Economic And Or Market Conditions 2577.168 122.180 6092.692 0.79 34874.90
Other 2571.070 171.380 7345.200 0.59 36905.12
Not Disclosed 1826.928 194.945 5706.196 0.26 46150.10
Unsolicited Offer is Withdrawn;Competing Bid Is Successful 1779.540 1779.540 NA 1779.54 1779.54
NA 1778.002 190.160 6216.903 0.01 101490.57
Unsolicited Offer is Withdrawn 1455.538 281.485 3126.071 0.10 18606.18
Terminated Based On The MnA LT Criteria 1290.389 343.700 2264.695 10.27 8906.12
Litigation 1205.875 1205.875 1693.500 8.39 2403.36
Economic And Or Market Conditions;Shareholder Or Board Approval 1202.890 1202.890 NA 1202.89 1202.89
Defensive Technique Is Successful;Competing Bid Is Successful 1167.540 1167.540 NA 1167.54 1167.54
Lapsed Offer 982.383 81.360 2178.436 0.25 10417.12
Financing 643.676 57.135 1157.121 2.94 3363.50
Shareholder Or Board Approval;Regulation 289.950 289.950 NA 289.95 289.95
Regulation;Unable To Engage Target In Meaningful Discussions 248.360 248.360 NA 248.36 248.36
Defensive Technique Is Successful 186.930 147.810 186.912 8.31 457.31
New Program Is Authorized 123.815 123.815 26.255 105.25 142.38
Other;Lapsed Offer 43.240 43.240 NA 43.24 43.24
Unsolicited Offer is Withdrawn;Economic And Or Market Conditions 11.600 11.600 NA 11.60 11.60
Acquiror Pursues Other Strategic Options;Other 9.550 9.550 NA 9.55 9.55
Other;Economic And Or Market Conditions 2.850 2.850 NA 2.85 2.85
Unable To Engage Target In Meaningful Discussions;Lapsed Offer 2.570 2.570 NA 2.57 2.57
Shareholder Or Board Approval;Financing 0.340 0.340 NA 0.34 0.34
Economic And Or Market Conditions;Unable To Engage Target In Meaningful Discussions NaN NA NA Inf -Inf
Other;Unable To Engage Target In Meaningful Discussions NaN NA NA Inf -Inf

Cleaning

df1 <- df1 %>%
  mutate(termination_group = case_when(
    grepl("Competing Bid|Strategic Options|Unable To Engage|Unsolicited Offer|Defensive Technique|Lapsed Offer|New Program", termination_reason, ignore.case = TRUE) ~ "Strategic and Competitive Factors",
    grepl("Regulation|Litigation|MnA LT Criteria", termination_reason, ignore.case = TRUE) ~ "Regulatory and Legal Factors",
    grepl("Financing|Economic And Or Market Conditions", termination_reason, ignore.case = TRUE) ~ "Financial and Economic Factors",
    grepl("Shareholder Or Board Approval|Not Disclosed|Other|NA", termination_reason, ignore.case = TRUE) ~ "Governance and Approval Factors",
    TRUE ~ "Other"
  ))

df1 %>% 
  group_by(termination_group) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_deal_value)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Termination Group", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Termination Group Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Regulatory and Legal Factors 10350.667 597.170 29060.550 1.08 145785.3
Strategic and Competitive Factors 3338.561 287.830 11032.599 0.10 148705.3
Governance and Approval Factors 2656.010 233.765 8836.697 0.26 77567.8
Financial and Economic Factors 2222.436 117.780 5584.931 0.34 34874.9
Other 1778.002 190.160 6216.903 0.01 101490.6

Deal Size by Consideration Structure

df1 <- df1 %>%
  mutate(consideration_group = case_when(
    consideration_structure %in% c("Cash Only") ~ "Cash Only",
    consideration_structure %in% c("Stock Only") ~ "Stock Only",
    consideration_structure %in% c("Cash and Stock Combination",
                                   "Choice between Cash or Stock or Combination of Both") ~ "Cash and Stock Mix",
    TRUE ~ "Other Non-standard Types"
  ))
# summary statistics of deal size and implied deal size by consideration structure; 3 digits; order by deal size

df1 %>% 
  group_by(consideration_group) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_deal_value)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Consideration Structure", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Consideration Structure Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Cash and Stock Mix 3888.612 363.135 11728.673 0.10 148705.26
Other Non-standard Types 2374.470 205.250 10544.840 0.49 142419.45
Cash Only 1777.005 346.450 4592.875 0.05 75621.31
Stock Only 1250.607 89.155 5975.210 0.01 145785.26

Deal terminated due to regulation

Occurences over time

# Plot of deal terminated due to regulation over time; x axis in year, not decimal places

df1 %>% 
  filter(termination_group != "Other") %>%
  mutate(year = lubridate::year(date_announced)) %>% 
  group_by(year, termination_group) %>% 
  summarise(count = n(), .groups = 'drop') %>% 
  ggplot(aes(x = year, y = count, color = termination_group)) + 
  geom_line() + 
  geom_point() + 
  labs(title = "Deal Terminations by Group Over Time", x = "Year", y = "Count", color = "Termination Group") + 
  theme_minimal() +
  ylim(0, 50) + 
  scale_x_continuous(breaks = seq(2010, 2022, by = 1))

Deal size

# Remove missing deal value 
df1 <- df1 %>% filter(!is.na(deal_value_))

# create a group of deal sizes: If deal value is between 0 and 20, them group as small, 20 and 100 as medium, and large is over 100
df1 <- df1 %>%
  mutate(deal_size = case_when(
    deal_value_ < 20 ~ "Small",
    deal_value_ >= 20 & deal_value_ < 100 ~ "Medium",
    deal_value_ >= 100 ~ "Large"
  ))

df1 %>% 
  group_by(deal_size) %>%
  summarise(
    n = n()
  ) %>%
  mutate(percentage = n / sum(n) * 100) %>%
  ggplot(aes(x = deal_size, y = percentage)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = round(percentage, 2)), vjust = -0.5) +
  labs(title = "Deal Size Distribution", x = "Deal Size", y = "Percentage") +
  theme_minimal() + 
  scale_y_continuous(labels = scales::percent_format(scale = 1)) +
  scale_x_discrete(limits = c("Small", "Medium", "Large")) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Termination reasons and consideration structure

# summary statistics of deal size and implied deal size by termination reason and consideration structure; 3 digits

df1 %>% 
  group_by(termination_group, consideration_group) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>%  
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Termination Reason", "Consideration Structure", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Termination Reason Consideration Structure Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Financial and Economic Factors Cash Only 2263.019 859.860 2987.269 26.06 8760.75
Financial and Economic Factors Cash and Stock Mix 3582.683 803.140 9168.977 2.89 34874.90
Financial and Economic Factors Other Non-standard Types 908.215 195.080 1550.574 15.08 3227.62
Financial and Economic Factors Stock Only 1760.690 47.470 4676.271 0.34 19775.98
Governance and Approval Factors Cash Only 1010.389 260.365 1776.448 4.76 9576.05
Governance and Approval Factors Cash and Stock Mix 6847.385 600.045 15350.575 2.46 77567.80
Governance and Approval Factors Other Non-standard Types 2734.451 240.370 7971.816 1.10 36905.12
Governance and Approval Factors Stock Only 1962.677 84.160 7463.009 0.26 66140.09
Other Cash Only 1734.033 336.155 4479.860 0.05 75621.31
Other Cash and Stock Mix 3175.997 338.130 9471.630 0.57 101490.57
Other Other Non-standard Types 1521.233 181.970 5994.720 0.49 79376.82
Other Stock Only 1090.786 86.630 4904.867 0.01 86831.16
Regulatory and Legal Factors Cash Only 3261.242 1176.110 4949.273 11.62 19730.62
Regulatory and Legal Factors Cash and Stock Mix 22958.604 6208.940 39069.494 252.58 117067.48
Regulatory and Legal Factors Other Non-standard Types 31309.477 190.320 57319.122 13.91 142419.45
Regulatory and Legal Factors Stock Only 6788.437 335.180 25991.899 1.08 145785.26
Strategic and Competitive Factors Cash Only 2315.480 418.720 6397.078 0.50 64839.37
Strategic and Competitive Factors Cash and Stock Mix 7810.591 887.305 19991.449 0.10 148705.26
Strategic and Competitive Factors Other Non-standard Types 3612.850 395.220 9245.533 2.60 43999.48
Strategic and Competitive Factors Stock Only 1212.239 104.225 3344.428 0.25 23444.82

Deal size by termination reason

df1 %>% 
  group_by(deal_size, termination_group) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_deal_value)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Deal Size", "Termination Reason", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Deal Size Termination Reason Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Large Regulatory and Legal Factors 13021.531 1361.765 32115.898 111.49 145785.26
Large Strategic and Competitive Factors 4831.355 1136.820 13029.250 100.00 148705.26
Large Governance and Approval Factors 4365.755 705.080 11033.453 113.01 77567.80
Large Financial and Economic Factors 4148.953 1202.890 7160.655 114.65 34874.90
Large Other 2933.469 679.950 7805.825 100.00 101490.57
Medium Financial and Economic Factors 62.614 67.020 25.287 24.84 99.19
Medium Strategic and Competitive Factors 55.751 52.085 24.917 20.07 99.08
Medium Other 53.420 50.190 23.115 20.00 99.97
Medium Governance and Approval Factors 47.496 39.120 24.385 20.00 99.62
Medium Regulatory and Legal Factors 47.347 47.235 18.601 21.79 75.87
Small Other 8.777 8.220 6.047 0.01 19.96
Small Governance and Approval Factors 7.911 6.600 5.833 0.26 19.18
Small Regulatory and Legal Factors 7.313 8.390 4.479 1.08 13.91
Small Financial and Economic Factors 7.308 7.310 5.014 0.34 16.11
Small Strategic and Competitive Factors 7.180 5.100 5.442 0.10 19.66

Time duration

From date announced to date effective

# Create a new column for time duration in days
df1 <- df1 %>% 
  mutate(
    date_announced = as.Date(date_announced),
    date_effective = as.Date(date_effective),
    time_duration = as.numeric(difftime(date_effective, date_announced, units = "days"))
  )

# summary statistics of time duration by deal size; 3 digits; order by deal size

df1 %>% 
  group_by(deal_size) %>% 
  summarise(
    mean_time_duration = mean(time_duration, na.rm = TRUE), 
    median_time_duration = median(time_duration, na.rm = TRUE), 
    sd_time_duration = sd(time_duration, na.rm = TRUE), 
    min_time_duration = min(time_duration, na.rm = TRUE), 
    max_time_duration = max(time_duration, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_time_duration)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Deal Size", "Mean Time Duration", "Median Time Duration", "SD Time Duration", "Min Time Duration", "Max Time Duration")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Deal Size Mean Time Duration Median Time Duration SD Time Duration Min Time Duration Max Time Duration
Large 162.071 128.0 133.146 0 1616
Small 139.775 96.5 205.100 0 3706
Medium 132.123 112.0 119.639 0 2503

Average duration for each year grouped by deal size

# Plot of average time duration for each year; x axis in year, not decimal places

df1 %>% 
  mutate(year = year(date_announced)) %>% 
  group_by(year, deal_size) %>% 
  summarise(mean_time_duration = mean(time_duration, na.rm = TRUE)) %>% 
  ggplot(aes(x = year, y = mean_time_duration, color=deal_size)) + 
  geom_line() + 
  geom_point() + 
  labs(title = "Average Time Duration for Each Year", x = "Year", y = "Average Time Duration (days)") + 
  theme_minimal() + 
  scale_x_continuous(breaks = seq(2010, 2022, by = 1))

Average duration for each year grouped by consideration structure

# Plot of average time duration for each year; x axis in year, not decimal places

df1 %>% 
  mutate(year = year(date_announced)) %>% 
  group_by(year, consideration_group) %>% 
  summarise(mean_time_duration = mean(time_duration, na.rm = TRUE)) %>% 
  ggplot(aes(x = year, y = mean_time_duration, color=consideration_group)) + 
  geom_line() + 
  geom_point() + 
  labs(title = "Average Time Duration for Each Year", x = "Year", y = "Average Time Duration (days)") + 
  theme_minimal() + 
  scale_x_continuous(breaks = seq(2010, 2022, by = 1))

Politics

# create a category for political factors, call it party. 2008-2016 and 2020-2022, the president was a Democrat. From 2002 to 2009, and 2016-2020, the president was a Republican.

df1 <- df1 %>% 
  mutate(party = case_when(
    year(date_announced) >= 2008 & year(date_announced) <= 2016 ~ "Democrat",
    year(date_announced) >= 2020 & year(date_announced) <= 2022 ~ "Democrat",
    year(date_announced) >= 2002 & year(date_announced) <= 2009 ~ "Republican",
    year(date_announced) >= 2016 & year(date_announced) <= 2020 ~ "Republican",
    TRUE ~ NA_character_
  ))

# summary statistics of deal size and implied deal size by party; 3 digits; order by deal size

df1 %>% 
  group_by(party) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  arrange(desc(mean_deal_value)) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Party", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Party Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Republican 2586.982 226.65 9781.730 0.01 148705.3
Democrat 1906.374 195.70 6933.232 0.01 145785.3

Party and Deal termination

# summary statistics of deal size and implied deal size by party and termination reason; 3 digits; order by deal size

df1 %>% 
  group_by(party, termination_group) %>% 
  summarise(
    mean_deal_value = mean(deal_value_, na.rm = TRUE), 
    median_deal_value = median(deal_value_, na.rm = TRUE), 
    sd_deal_value = sd(deal_value_, na.rm = TRUE), 
    min_deal_value = min(deal_value_, na.rm = TRUE), 
    max_deal_value = max(deal_value_, na.rm = TRUE)
  ) %>% 
  mutate(across(where(is.numeric), ~ round(.x, 3))) %>% 
  kable("html", col.names = c("Party", "Termination Reason", "Mean Deal Value", "Median Deal Value", "SD Deal Value", "Min Deal Value", "Max Deal Value")) %>% 
  kable_styling(bootstrap_options = c("striped", "hover"))
Party Termination Reason Mean Deal Value Median Deal Value SD Deal Value Min Deal Value Max Deal Value
Democrat Financial and Economic Factors 1504.280 114.650 3118.704 0.79 16232.92
Democrat Governance and Approval Factors 2687.654 251.235 8660.860 0.26 77567.80
Democrat Other 1655.325 181.580 5811.745 0.01 101490.57
Democrat Regulatory and Legal Factors 10713.829 827.535 27598.051 1.08 145785.26
Democrat Strategic and Competitive Factors 2667.626 297.185 6784.221 0.10 49383.20
Republican Financial and Economic Factors 4472.659 143.650 9838.247 0.34 34874.90
Republican Governance and Approval Factors 2527.094 164.415 9604.826 0.92 66140.09
Republican Other 2198.212 223.220 7427.444 0.01 86831.16
Republican Regulatory and Legal Factors 9154.369 576.640 34353.424 13.91 142419.45
Republican Strategic and Competitive Factors 5019.289 258.290 17599.536 0.50 148705.26

Analysis

Deal Size

# create a dummy variable for termination reason == regulation 

df1 <- df1 %>% 
  mutate(termination_regulation = ifelse(termination_group == "Regulatory and Legal Factors", 1, 0))

# runninng a regression of time duration on termination reason == regulation, deal size, and consideration structure

model1 <- lm(termination_regulation ~ deal_value_, data = df1)
summary(model1)
## 
## Call:
## lm(formula = termination_regulation ~ deal_value_, data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31199 -0.01234 -0.01065 -0.01034  0.98973 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.026e-02  1.723e-03   5.955 2.78e-09 ***
## deal_value_ 2.029e-06  2.167e-07   9.364  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1183 on 5051 degrees of freedom
## Multiple R-squared:  0.01706,    Adjusted R-squared:  0.01687 
## F-statistic: 87.69 on 1 and 5051 DF,  p-value: < 2.2e-16
model2 <-lm(termination_regulation ~ deal_size, data = df1)

summary(model2)
## 
## Call:
## lm(formula = termination_regulation ~ deal_size, data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.01883 -0.01883 -0.01883 -0.01083  0.99475 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      0.018831   0.002148   8.766  < 2e-16 ***
## deal_sizeMedium -0.013577   0.004131  -3.287  0.00102 ** 
## deal_sizeSmall  -0.008001   0.004660  -1.717  0.08608 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1192 on 5050 degrees of freedom
## Multiple R-squared:  0.002315,   Adjusted R-squared:  0.00192 
## F-statistic:  5.86 on 2 and 5050 DF,  p-value: 0.002871
model3 <-lm(termination_regulation ~ consideration_group, data = df1)
summary(model3)
## 
## Call:
## lm(formula = termination_regulation ~ consideration_group, data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.01935 -0.01559 -0.01451 -0.01451  0.98915 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                 0.010850   0.003589   3.023
## consideration_groupCash Only                0.003661   0.004676   0.783
## consideration_groupOther Non-standard Types 0.008505   0.007670   1.109
## consideration_groupStock Only               0.004745   0.004452   1.066
##                                             Pr(>|t|)   
## (Intercept)                                  0.00251 **
## consideration_groupCash Only                 0.43370   
## consideration_groupOther Non-standard Types  0.26755   
## consideration_groupStock Only                0.28661   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1194 on 5049 degrees of freedom
## Multiple R-squared:  0.0003403,  Adjusted R-squared:  -0.0002536 
## F-statistic: 0.573 on 3 and 5049 DF,  p-value: 0.6327
model4 <-lm(termination_regulation ~ deal_value_ + consideration_group, data = df1)
summary(model4)
## 
## Call:
## lm(formula = termination_regulation ~ deal_value_ + consideration_group, 
##     data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31422 -0.01418 -0.01300 -0.01088  0.99677 
## 
## Coefficients:
##                                              Estimate Std. Error t value
## (Intercept)                                 2.704e-03  3.657e-03   0.739
## deal_value_                                 2.095e-06  2.185e-07   9.586
## consideration_groupCash Only                8.085e-03  4.658e-03   1.736
## consideration_groupOther Non-standard Types 1.168e-02  7.609e-03   1.535
## consideration_groupStock Only               1.027e-02  4.450e-03   2.308
##                                             Pr(>|t|)    
## (Intercept)                                   0.4597    
## deal_value_                                   <2e-16 ***
## consideration_groupCash Only                  0.0827 .  
## consideration_groupOther Non-standard Types   0.1249    
## consideration_groupStock Only                 0.0210 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1183 on 5048 degrees of freedom
## Multiple R-squared:  0.01821,    Adjusted R-squared:  0.01743 
## F-statistic: 23.41 on 4 and 5048 DF,  p-value: < 2.2e-16
model5 <-lm(termination_regulation ~ deal_value_ + consideration_group + party, data = df1)
summary(model5)
## 
## Call:
## lm(formula = termination_regulation ~ deal_value_ + consideration_group + 
##     party, data = df1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31370 -0.01414 -0.01325 -0.01107  0.99697 
## 
## Coefficients:
##                                               Estimate Std. Error t value
## (Intercept)                                  2.948e-03  3.756e-03   0.785
## deal_value_                                  2.097e-06  2.187e-07   9.589
## consideration_groupCash Only                 8.091e-03  4.658e-03   1.737
## consideration_groupOther Non-standard Types  1.161e-02  7.614e-03   1.524
## consideration_groupStock Only                1.030e-02  4.452e-03   2.314
## partyRepublican                             -1.131e-03  3.970e-03  -0.285
##                                             Pr(>|t|)    
## (Intercept)                                   0.4326    
## deal_value_                                   <2e-16 ***
## consideration_groupCash Only                  0.0824 .  
## consideration_groupOther Non-standard Types   0.1275    
## consideration_groupStock Only                 0.0207 *  
## partyRepublican                               0.7756    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1183 on 5047 degrees of freedom
## Multiple R-squared:  0.01823,    Adjusted R-squared:  0.01726 
## F-statistic: 18.74 on 5 and 5047 DF,  p-value: < 2.2e-16