| Variable | Type | Description |
|---|---|---|
| division | Character | UFC weight class (e.g., Lightweight, Heavyweight) |
| title_fight | Integer (0/1) | 1 if the fight was a title bout, 0 otherwise |
| method | Character | Raw method of finish (KO/TKO, Submission, Decision, etc.) |
| finish_round | Integer | Round in which the fight ended |
| total_rounds | Integer | Total scheduled rounds (3 for standard bouts, 5 for title fights) |
| r_kd / b_kd | Integer | Knockdowns scored by each fighter during this specific fight |
| r_sig_str_acc / b_sig_str_acc | Numeric (%) | Significant strike accuracy (%) for each fighter in this specific fight |
| r_td_landed / b_td_landed | Integer | Takedowns landed by each fighter during this specific fight |
| r_sub_att / b_sub_att | Integer | Submission attempts by each fighter during this specific fight |
| r_reach / b_reach | Numeric (inches) | Fighter reach in inches: physical attribute, career constant |
| r_height / b_height | Numeric (inches) | Fighter height in inches: physical attribute, career constant |
| r_str_acc / b_str_acc | Numeric (%) | Career significant strike accuracy percentage (across all fights) |
| r_td_avg / b_td_avg | Numeric | Career average takedowns landed per 15 minutes (across all fights) |
| finish_group | Factor — Engineered | Collapsed outcome: KO/TKO, Submission, or Decision |
| went_the_distance | Integer — Engineered | 1 if fight went all scheduled rounds without a stoppage, 0 otherwise |
| any_kd | Character — Engineered | Whether any knockdown occurred during the fight |
| r_age / b_age | Numeric — Engineered | Each fighter’s exact age at the time of the event (computed via lubridate) |
| fight_year | Integer — Engineered | Calendar year of the event (extracted from event date via lubridate) |
Inside the Finish: What Actually Ends a UFC Fight?
A data driven investigation of fight outcomes, fighter styles, and physical attributes
Part 1: Introduction
Background
Every UFC fight ends one of three ways, a fighter gets knocked out, taps out, or the judges decide after the final bell. As a longtime MMA fan, I’ve always been curious about what actually drives those outcomes. Is it just weight class? Does a knockdown basically guarantee a stoppage? Do elite fighters finish more or does their skill level push fights to decisions? These are the kinds of questions fans debate constantly, and I wanted to see what the data actually says.
The UFC is the premier MMA organization in the world, with fighters competing across nine weight classes from Strawweight (115 lbs) all the way up to Heavyweight (265 lbs). What makes the UFC’s data so interesting is how detailed it is. Every significant strike thrown, every takedown attempted, and every submission try gets logged for every single fight. That level of detail makes it a great dataset to dig into.
The central question driving this analysis is:
What factors are most strongly associated with how a UFC fight ends, by KO/TKO, Submission, or Decision?
There are a lot of variables that could matter here. A striker going against a grappler is going to look totally different than two grapplers. Heavier fighters hit harder. Title fights feature the most durable athletes in the sport. And things that happen during the fight itself, like a knockdown, can completely change where the fight is headed. I wanted to look at all of these and see which ones actually move the needle.
Data Source
The primary dataset I used contains fight level records from throughout the UFC’s history. Each row is one completed bout, with stats for both the Red and Blue Corner fighter. Things like striking numbers, takedowns, physical measurements, and career records going into the fight. I rehosted it on SharePoint so anyone reading this can pull the same data and replicate the analysis.
Data Dictionary
The table below describes the key variables used throughout this analysis, including both raw dataset fields and engineered variables created during the previous step.
Summary Statistics
| Statistic | Value |
|---|---|
| Total Fights | 8337 |
| KO/TKO Finishes | 2621 |
| Submission Finishes | 1619 |
| Decision Finishes | 4097 |
| Title Fights | 460 |
| Fights with a Knockdown | 2930 |
| Avg Red Sig Strike Acc | 47.9% |
| Avg Blue Sig Strike Acc | 43.7% |
| Earliest Fight | 1994-03-11 |
| Most Recent Fight | 2025-09-06 |
Just over half of all recorded fights end by Decision, with KO/TKO second and Submission third. The dataset spans from March 1994 through September 2025, which gives a solid historical picture of how the sport has evolved. The average significant strike accuracy is notably higher for Red Corner fighters (47.9%) than Blue (43.7%), which makes sense given that the Red Corner is typically the higher ranked fighter in any given matchup. Everything below unpacks how these numbers shift depending on division, fight type, and what actually happens inside the cage.
Part 2: Descriptive Analysis
Visualization 1: The Overall Finish Landscape
Before breaking down by division or performance metric, the overall distribution of finish types establishes the baseline against which all subsequent comparisons are made.
Show Code
UFC %>%
filter(!is.na(finish_group)) %>%
count(finish_group) %>%
mutate(
pct = n / sum(n),
label = paste0(comma(n), "\n(", round(pct * 100, 1), "%)")
) %>%
ggplot(aes(x = reorder(finish_group, -n), y = n, fill = finish_group)) +
geom_col(width = 0.55, show.legend = FALSE) +
geom_text(aes(label = label),
vjust = -0.4, fontface = "bold", size = 4.2, lineheight = 1.2) +
scale_fill_manual(values = ufc_colors) +
scale_y_continuous(
labels = comma,
expand = expansion(mult = c(0, 0.20))
) +
labs(
title = "How Do UFC Fights End?",
subtitle = "Distribution of finish types across all recorded UFC bouts",
x = "Finish Type",
y = "Number of Fights",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()Decisions are the most common outcome at 4,097 fights (49.1%), making them the result in nearly half of all recorded bouts. KO/TKO finishes are second at 2,621 (31.4%), followed by Submissions at 1,619 (19.4%). Together, KO/TKO and Submission finishes account for just over half of all UFC fights, but only barely. This three way split is the baseline for every comparison that follows: the analysis below examines what structural and in fight factors push fights away from the judges and toward an early stoppage.
Visualization 2: Finish Type Across Weight Classes
The most persistent fan theory in MMA is that heavier fighters hit harder and produce more knockouts, while lighter fighters are more technical and grind out decisions. The data provides a clean way to test this belief across all nine UFC weight classes.
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(division_clean)) %>%
count(division_clean, finish_group) %>%
group_by(division_clean) %>%
mutate(pct = n / sum(n)) %>%
ungroup() %>%
ggplot(aes(x = division_clean, y = pct, fill = finish_group)) +
geom_col(position = "stack", width = 0.7) +
scale_fill_manual(values = ufc_colors, name = "Finish Type") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
coord_flip() +
labs(
title = "Finish Type by Weight Class",
subtitle = "Do heavier divisions produce more stoppages?",
x = NULL,
y = "Proportion of Fights",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()The data confirms the theory, but with important nuance. Heavyweight leads all divisions with a 50.3% KO/TKO rate and a 64.8% overall finish rate, the only division where knockouts are the single most common outcome. Light Heavyweight follows at 42.4% KO/TKO, and the rate descends steadily down the weight ladder. Flyweight sits at the opposite extreme, with KO/TKO accounting for just 22.5% of fights and Decisions dominating at 56.7%. Submission rates remain the most stable across divisions, ranging only from about 14.5% (Heavyweight) to 20.9% (Flyweight). No division is without a meaningful Decision share. Even Heavyweight sends 35.2% of its fights to the judges.
Visualization 3: Do Title Fights Finish Differently?
Title fights are five round contests between the best fighters in each division. Championship level athletes are assumed to be more durable, more disciplined, and harder to stop. The data allows a direct comparison of finish distributions between title bouts and standard three round fights.
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(title_fight)) %>%
mutate(fight_type = ifelse(title_fight == 1, "Title Fight", "Standard Bout")) %>%
count(fight_type, finish_group) %>%
group_by(fight_type) %>%
mutate(pct = n / sum(n)) %>%
ungroup() %>%
ggplot(aes(x = finish_group, y = pct, fill = finish_group)) +
geom_col(width = 0.6, show.legend = FALSE) +
geom_text(
aes(label = paste0(round(pct * 100, 1), "%")),
vjust = -0.5, fontface = "bold", size = 3.8
) +
scale_fill_manual(values = ufc_colors) +
scale_y_continuous(
labels = percent_format(accuracy = 1),
expand = expansion(mult = c(0, 0.15))
) +
facet_wrap(~ fight_type) +
labs(
title = "Title Fights vs. Standard Bouts",
subtitle = "Are championship-level fighters harder to stop?",
x = "Finish Type",
y = "Proportion of Fights",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()The contrast is stark. In standard bouts, KO/TKO finishes account for 31.2% of fights and Submissions for 19.3%, leaving 49.5% going to decision. Title fights flip this picture dramatically: Decisions rise to 42.4%, KO/TKO falls to 36.1%, and Submissions to 21.5%. Championship level fighters are meaningfully harder to stop. Their Decision rate is nearly 9 percentage points higher than in standard bouts. The longer five round format also plays a role, as fighters pace themselves differently when facing 25 minutes instead of 15, which rewards tactical discipline over explosive aggression and reduces the window for early stoppages.
Visualization 4: The Impact of a Knockdown
One of the most powerful in fight signals in the dataset is whether a knockdown occurred. A knockdown indicates one fighter has already been seriously hurt, and hurt fighters often get finished. This is the most direct single event predictor of a KO/TKO stoppage available in the data.
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(any_kd)) %>%
count(any_kd, finish_group) %>%
group_by(any_kd) %>%
mutate(pct = n / sum(n)) %>%
ungroup() %>%
ggplot(aes(x = finish_group, y = pct, fill = finish_group)) +
geom_col(width = 0.6, show.legend = FALSE) +
geom_text(
aes(label = paste0(round(pct * 100, 1), "%")),
vjust = -0.5, fontface = "bold", size = 3.8
) +
scale_fill_manual(values = ufc_colors) +
scale_y_continuous(
labels = percent_format(accuracy = 1),
expand = expansion(mult = c(0, 0.15))
) +
facet_wrap(~ any_kd) +
labs(
title = "Knockdowns as the Strongest Predictor of Fight Finish",
subtitle = "Once a fighter goes down, how often does the fight get stopped?",
x = "Finish Type",
y = "Proportion of Fights",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()This is the sharpest contrast in the entire analysis. When a knockdown occurs, 63.5% of fights end by KO/TKO. This is the clear dominant outcome, with only 9.5% ending by Submission and 26.9% going to decision. Without a knockdown, the picture reverses completely: Decision becomes the dominant outcome at 61.4%, with KO/TKO dropping to just 13.9% and Submission at 24.7%. A single knockdown essentially transforms a fight from one that will almost certainly go to the judges into one that will almost certainly be stopped. Making it the single strongest in fight predictor of finish type in the dataset, far more powerful than any physical attribute or division-level factor examined in this analysis.
Visualization 5: When Do Fights Get Stopped?
If early rounds are the most dangerous, finishes should spike in Round 1 and fall off as fighters establish range and defensive positioning. The round-by-round breakdown tests this assumption directly.
Show Code
UFC %>%
filter(
!is.na(finish_round),
finish_group %in% c("KO/TKO", "Submission"),
finish_round <= 5
) %>%
count(finish_round, finish_group) %>%
ggplot(aes(x = factor(finish_round), y = n, fill = finish_group)) +
geom_col(position = "dodge", width = 0.65) +
scale_fill_manual(values = ufc_colors, name = "Finish Type") +
labs(
title = "When Do Fights Get Stopped?",
subtitle = "KO/TKO and Submission finishes by round number",
x = "Round",
y = "Number of Finishes",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()Round 1 is by far the most dangerous round in the UFC, producing roughly 1,450 KO/TKO finishes and over 800 Submission finishes. This is more than double any other round. This reflects the danger of early exchanges before fighters establish range, timing, and defensive positioning. Both finish types drop sharply from Round 1 to Round 2 and continue falling from there. Submissions are more evenly distributed across rounds than KO/TKOs, consistent with grappling opportunities arising throughout a fight rather than spiking in the opening minutes. The near disappearance of finishes in Rounds 4 and 5 reflects that only five round title fights reach those rounds, and as shown in Visualization 3, championship fighters are significantly harder to stop.
Visualization 6: Takedown Volume and Finish Type
Fighters who land more takedowns control where the fight takes place. High takedown volume is the natural precursor to submission attempts, which require bringing an opponent to the canvas first. Does per-fight takedown volume differ meaningfully across finish types?
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(r_td_landed), !is.na(b_td_landed)) %>%
mutate(total_td = r_td_landed + b_td_landed) %>%
filter(total_td <= 20) %>%
ggplot(aes(x = finish_group, y = total_td, fill = finish_group)) +
geom_boxplot(alpha = 0.85, outlier.alpha = 0.2, show.legend = FALSE) +
scale_fill_manual(values = ufc_colors) +
labs(
title = "Takedown Volume by Fight Finish Type",
subtitle = "Combined takedowns landed by both fighters — capped at 20 for readability",
x = "Finish Type",
y = "Total Takedowns Landed",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()The boxplot tells a clear story. KO/TKO fights have a median combined takedown count near zero. The interquartile range sits almost entirely at 0 to 1, which is consistent with striker-versus-striker contests that never leave the feet. Submission fights have the highest median takedown volume of any finish type, which makes intuitive sense since most submissions require taking the opponent to the canvas first. Decision fights fall in between, with a wider distribution reflecting the variety of styles that produce judge-scored outcomes: some are grappling heavy wrestling matches, others are pure striking contests. The gap between KO/TKO and Submission fights on this metric is the clearest stylistic dividing line in the dataset.
Visualization 7: Significant Strike Accuracy by Finish Type
Striking accuracy measures how efficiently a fighter lands shots relative to how many they throw. Higher accuracy suggests a fighter who picks their spots well, but the question is does greater accuracy actually predict how a fight ends?
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(r_sig_str_acc), !is.na(b_sig_str_acc)) %>%
mutate(combined_sig_str_acc = (r_sig_str_acc + b_sig_str_acc) / 2) %>%
ggplot(aes(x = finish_group, y = combined_sig_str_acc, fill = finish_group)) +
geom_boxplot(alpha = 0.85, outlier.alpha = 0.2, show.legend = FALSE) +
scale_fill_manual(values = ufc_colors) +
scale_y_continuous(labels = percent_format(accuracy = 1, scale = 1)) +
labs(
title = "Striking Accuracy by Fight Finish Type",
subtitle = "Average of Red and Blue corner significant strike accuracy per fight",
x = "Finish Type",
y = "Combined Sig. Strike Accuracy (%)",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()All three finish types show median combined striking accuracy clustered near 50%, but with meaningful distributional differences. KO/TKO fights have a slightly higher median accuracy and a tighter interquartile range than Decision fights, consistent with the idea that knockout finishes often involve one fighter landing clean, high percentage shots against an opponent who is hurt or backing up under pressure. Decision fights show a lower median accuracy and considerably more spread, reflecting the full range of tactical approaches, defensive counter-striking, volume pressure, clinch fighting, that produce judge scored outcomes. Submission fights land in between, as their accuracy is largely determined by the pre-takedown striking phase before the fight moves to the ground. The differences across finish types are modest but directionally consistent throughout.
Visualization 8: Finish Rates Over Time
Has the UFC become more or less likely to produce finishes over time? As the sport has matured, athletes have become more well-rounded. Better defensive wrestling and improved submission defense could reduce finish rates, or elite striking coaches could push them higher. The year-by-year trend, computed using lubridate, answers this directly.
Show Code
UFC %>%
filter(!is.na(finish_group), !is.na(fight_year), fight_year >= 2010) %>%
group_by(fight_year) %>%
summarize(
total = n(),
finishes = sum(finish_group != "Decision"),
finish_rate = finishes / total
) %>%
filter(total >= 20) %>%
ggplot(aes(x = fight_year, y = finish_rate)) +
geom_line(color = "#C8102E", linewidth = 1.1) +
geom_point(color = "#C8102E", size = 2.5) +
geom_smooth(method = "lm", se = TRUE, color = "#1D3461",
linetype = "dashed", linewidth = 0.8, alpha = 0.15) +
scale_y_continuous(
labels = percent_format(accuracy = 1),
limits = c(0, 1)
) +
scale_x_continuous(breaks = seq(2010, 2024, 2)) +
labs(
title = "Are UFC Fights Being Finished Less Often Over Time?",
subtitle = "Annual finish rate (KO/TKO + Submission), dashed line shows linear trend | Only years with 20+ fights included",
x = "Year",
y = "Finish Rate",
caption = "Source: UFC Fight History Dataset"
) +
ufc_theme()The annual finish rate has hovered near 50% throughout the period, but the dashed linear trend line slopes downward, a gradual but real decline from the early 2010s through the mid-2020s. The finish rate was consistently above 50% from 2010 through approximately 2018, before dipping below that mark more regularly in recent years. Year-to-year variation is substantial, which is expected given the relatively small number of events in any single calendar year, but the directional trend is clear. This is consistent with the sport’s professionalization: fighters today are more defensively complete, better coached, and harder to stop than the UFC roster of a decade ago. The decline does not mean the UFC is less competitive, it means finishing opponents has become a harder achievement.
Summary Table: Finish Rates by Division
| Division | Total Fights | KO/TKO % | Sub % | Decision % | Finish Rate | Avg KDs/Fight |
|---|---|---|---|---|---|---|
| Flyweight | 383 | 22.5% | 20.9% | 56.7% | 43.3% | 0.43 |
| Bantamweight | 729 | 26.2% | 19.5% | 54.3% | 45.7% | 0.47 |
| Featherweight | 807 | 27.6% | 16.6% | 55.8% | 44.2% | 0.45 |
| Lightweight | 1391 | 27.6% | 21.6% | 50.8% | 49.2% | 0.41 |
| Welterweight | 1341 | 31.8% | 18.4% | 49.8% | 50.2% | 0.49 |
| Middleweight | 1082 | 36.9% | 21% | 42.1% | 57.9% | 0.46 |
| Light Heavyweight | 726 | 42.4% | 17.1% | 40.5% | 59.5% | 0.52 |
| Heavyweight | 725 | 50.3% | 14.5% | 35.2% | 64.8% | 0.47 |
The table reinforces and quantifies the patterns from Visualization 2. KO/TKO rates climb from 22.5% at Flyweight to 50.3% at Heavyweight, the only division where knockouts are the majority outcome. Submission rates are the most stable column in the table, ranging from 14.5% (Heavyweight) to 21% (Middleweight) with no clear directional trend by weight. Overall finish rates tell the clearest story: Heavyweight leads at 64.8%, Flyweight sits lowest at 43.3%, and the climb is largely monotonic. Average knockdowns per fight also rise with weight. From 0.41 at Lightweight to 0.52 at Light Heavyweight, confirming that the knockdown signal is tracking real differences in punching power, not noise in the data. Notably, Strawweight does not appear in this table, which reflects its absence or minimal representation in the primary dataset.
Part 3: Secondary Data Source: UFCStats.com
Collection Method
To supplement the fight-level data, a secondary dataset was collected by scraping the official UFC fighter statistics database at [UFCStats.com] (http://www.ufcstats.com). This site hosts a public roster of every fighter who has competed in the UFC, including physical measurements (height, reach) and career records (wins, losses, draws). Unlike the primary dataset, which is fight-specific, the scraped data captures each fighter’s entire career profile in a single row. This provides a much different perspective of how fighters develop and perform throughout their careers.
Data was collected using the polite and rvest packages by scraping each alphabetical page of the roster (A through Z) with a randomized 3–7 second delay between requests (Sys.sleep(runif(1, 3, 7))) to avoid straining the server. An identifying user agent was included in the session header. The full scraping script is available in the supplementary R_Assignment_7_web_scraping.R file submitted alongside this document.
| first_name | last_name | height_in | reach_in | wins | losses | draws | win_rate | total_fights |
|---|---|---|---|---|---|---|---|---|
| Nariman | Abbasov | NA | 66 | 28 | 4 | 0 | 0.8750000 | 32 |
| Darion | Abbey | NA | 80 | 9 | 5 | 0 | 0.6428571 | 14 |
| Hamdy | Abdelwahab | NA | 72 | 7 | 1 | 0 | 0.8750000 | 8 |
| Mansur | Abdul-Malik | NA | 80 | 9 | 1 | 1 | 0.8181818 | 11 |
| Shamil | Abdurakhimov | NA | 76 | 20 | 8 | 0 | 0.7142857 | 28 |
| Daichi | Abe | NA | 71 | 6 | 2 | 0 | 0.7500000 | 8 |
| Klidson | Abreu | NA | 74 | 15 | 4 | 0 | 0.7894737 | 19 |
| John | Adajar | NA | 75 | 6 | 2 | 0 | 0.7500000 | 8 |
The scraped dataset provides 11 variables per fighter, including physical measurements and career records across the fighter’s full UFC tenure.
Joining the Datasets
The Red Corner fighter’s full name is used as the join key between the two sources. Because the two datasets were built independently, formatting differences (spacing, nicknames, special characters) prevent every name from matching exactly. To be transparent about data quality, the match rate is reported below before any analysis is performed using the joined data.
| Metric | Value |
|---|---|
| Total fights in primary dataset | 8,337 |
| Fights matched to scraped fighter record | 7,878 |
| Match rate | 94.5% |
Of the 8,337 fights in the primary dataset, 7,878 matched to a scraped fighter record, indicating a 94.5% match rate. This is a strong result for a name based join across two independently constructed datasets, and the matched subset is more than large enough to support meaningful cross source comparisons. The 5.5% of unmatched rows are primarily attributable to minor formatting differences in how fighter names appear across the two sources (spacing, punctuation, name order) and are not expected to introduce errors into the analysis.
Visualization 9: Career Win Rate by Finish Type
Does a fighter’s overall career quality, measured by their win rate across all UFC appearances, predict what kind of fights they tend to be involved in? Elite fighters may be dominant finishers, or they may be technically superior decision winners. The scraped career records let us test this directly.
Show Code
ufc_joined %>%
filter(!is.na(win_rate)) %>%
ggplot(aes(x = finish_group, y = win_rate, fill = finish_group)) +
geom_boxplot(alpha = 0.85, outlier.alpha = 0.2, show.legend = FALSE) +
scale_fill_manual(values = ufc_colors) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
labs(
title = "Do Elite Fighters Finish Fights or Win Decisions?",
subtitle = "Career win rate by fight finish type — Red Corner fighters matched from UFCStats.com",
x = "Fight Finish Type",
y = "Career Win Rate",
caption = "Primary: UFC Fight History | Secondary: UFCStats.com (scraped)"
) +
ufc_theme()All three finish types show median career win rates clustered in the 65–70% range, but the distributional differences are meaningful. KO/TKO and Submission fights show slightly higher median win rates and tighter interquartile ranges than Decision fights, suggesting that the most consistently successful Red Corner fighters tend to be involved in fights that end early. Decision fights show a lower median and more spread, including more outliers near 30–40% win rates. Which is consistent with the pattern that fighters on losing streaks still accumulate Decision losses rather than getting finished. This cross source comparison supports the interpretation that finish ability is a marker of overall career quality in the UFC rather than a stylistic quirk isolated to specialist fighters.
Visualization 10: Reach Tier and Finish Type
The scraped physical data provides each fighter’s reach measurement. By categorizing fighters into three reach tiers and joining to the fight level history, we can ask directly: does physical reach influence how a fight ends? This cross source comparison allows a test that would not be possible with either dataset alone.
Show Code
ufc_joined %>%
filter(!is.na(reach_tier)) %>%
count(reach_tier, finish_group) %>%
group_by(reach_tier) %>%
mutate(pct = n / sum(n)) %>%
ungroup() %>%
ggplot(aes(x = reach_tier, y = pct, fill = finish_group)) +
geom_col(position = "stack", width = 0.6) +
geom_text(
aes(
label = ifelse(pct > 0.06, paste0(round(pct * 100, 1), "%"), ""),
color = ifelse(finish_group == "Decision", "black", "white")
),
position = position_stack(vjust = 0.5),
fontface = "bold",
size = 3.5,
show.legend = FALSE
) +
scale_fill_manual(values = ufc_colors, name = "Finish Type") +
scale_color_identity() +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
labs(
title = "Does Reach Predict How a Fight Ends?",
subtitle = "Finish type proportions by reach tier — physical data joined from UFCStats.com",
x = "Reach Tier",
y = "Proportion of Fights",
caption = "Primary: UFC Fight History | Secondary: UFCStats.com (scraped)"
) +
ufc_theme()Reach tier produces only modest differences in finish distribution. Short reach fighters show the lowest KO/TKO rate at 19.8% and the highest Decision rate at 62.1%, while Long-reach fighters flip slightly toward more stoppages, 40.9% KO/TKO and 18.2% Submission, but the overall pattern across all three tiers is remarkably similar. The movement across reach tiers is directional but small, and pales in comparison to the effect sizes seen in Visualizations 3 and 4. This cross source comparison confirms the analysis’s central finding: in fight events, especially knockdowns and takedown control, are far stronger drivers of finish outcomes than how long a fighter’s arms are.
Conclusion
This analysis combined a UFC fight history dataset with a scraped fighter roster from UFCStats.com to examine the structural and in fight factors that determine how UFC bouts end. Ten visualizations and three summary tables produced a consistent and coherent set of findings:
Division shapes finish probability, but does not determine it. Heavyweight fights are more likely to end by KO/TKO than Flyweight fights, but Decisions remain common at every weight class. Weight class shifts the odds without locking in any outcome.
Title fights are dramatically harder to finish. Championship level fighters go to decision far more often than competitors in standard bouts, reflecting elite durability and the tactical discipline demanded at the highest level of the sport. The five round format reinforces this by rewarding pacing over explosiveness.
Knockdowns are the single strongest predictor of a KO/TKO finish. When a fighter goes down during a fight, a KO/TKO stoppage follows the vast majority of the time. This single in fight event is a more powerful predictor of finish type than any physical attribute or division level factor examined in this analysis.
Round 1 is the most dangerous round. KO/TKO finishes spike heavily in the opening round and drop off sharply as fighters settle into range and rhythm. Submissions are more evenly distributed across rounds, reflecting that grappling opportunities arise throughout a fight rather than clustering at the start.
Takedown volume predicts submission finishes. Submission fights have the highest combined takedown counts of any finish type, confirming that ground control is the necessary precursor to fight ending submission attempts.
Striking accuracy is highest in KO/TKO fights. Fights that end by knockout tend to feature slightly higher combined striking accuracy, consistent with one fighter landing clean, high-percentage shots against an opponent who is hurt or forced onto the defensive.
Finish rates have declined over time. A decade long trend shows a gradual but real decrease in annual finish rates, consistent with the sport’s professionalization and the increasing difficulty of stopping more well rounded, defensively capable athletes.
Elite fighters finish fights. Career win rate from the scraped UFCStats.com data is slightly higher for fighters in bouts that end early, suggesting finish ability is a hallmark of overall career quality in the UFC, not a niche specialization.
Reach has minimal effect on finish type. Despite being one of MMA’s most discussed physical advantages, fighter reach produces only marginal differences in how fights end. This cross dataset finding confirms that what happens inside the cage matters far more than the length of a fighter’s arms.
Taken together, the data makes a clear case: UFC finish outcomes are driven primarily by in-fight events, especially knockdowns and takedown control, rather than physical attributes alone. Future work could incorporate per round breakdowns, fighter stance matchups, and career level striking accuracy trends to build a predictive finish probability model for any given matchup.
Data sources: UFC Fight History Dataset (primary, rehosted on SharePoint for replication); UFCStats.com fighter roster (secondary, scraped ethically using the polite package with a randomized 3–7 second delay between requests and an identifying user agent string). Full web scraping script available in the supplementary R_Assignment_7_web_scraping.R file.