Codeshare agreements between airlines are essential for expanding
flight networks, offering more choices to passengers, and enabling
airlines to share services like airport facilities. In this section, we
analyze the codeshare agreements among airlines to determine which
airlines have the most codeshare partnerships.
Load Required Packages
Load and Inspect Dataset
## Rows: 1124995 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (11): origin_airport_iata, origin_airport_name, arr_terminal, arr_gate,...
## lgl (1): is_cargo
## dttm (2): scheduled_arr_utc, revised_arr_utc
## date (1): extractedDate
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## Rows: 2066 Columns: 22
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (16): dest_airport_iata, dest_airport_name, dept_terminal, dept_gate, f...
## lgl (1): is_cargo
## dttm (4): scheduled_dept_utc, revised_dept_utc, scheduled_arr_utc, revised_...
## date (1): date_local
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## origin_airport_iata origin_airport_name scheduled_arr_utc
## Length:1124995 Length:1124995 Min. :2024-09-30 20:25:00.00
## Class :character Class :character 1st Qu.:2024-10-23 01:29:00.00
## Mode :character Mode :character Median :2024-11-15 17:00:00.00
## Mean :2024-11-15 17:16:48.33
## 3rd Qu.:2024-12-08 22:30:00.00
## Max. :2025-01-01 08:26:00.00
##
## revised_arr_utc arr_terminal arr_gate
## Min. :2024-10-01 10:00:00.00 Length:1124995 Length:1124995
## 1st Qu.:2024-10-23 01:57:00.00 Class :character Class :character
## Median :2024-11-15 16:38:30.00 Mode :character Mode :character
## Mean :2024-11-15 17:47:43.18
## 3rd Qu.:2024-12-08 23:14:00.00
## Max. :2025-01-01 07:58:00.00
## NA's :66481
## flight_number arr_status codeshare_status is_cargo
## Length:1124995 Length:1124995 Length:1124995 Mode :logical
## Class :character Class :character Class :character FALSE:1116563
## Mode :character Mode :character Mode :character TRUE :8432
##
##
##
##
## aircraft_model airline_name airline_iata dest_airport_iata
## Length:1124995 Length:1124995 Length:1124995 Length:1124995
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## extractedDate
## Min. :2024-10-01
## 1st Qu.:2024-10-22
## Median :2024-11-15
## Mean :2024-11-14
## 3rd Qu.:2024-12-08
## Max. :2024-12-31
##
Data Cleaning
## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `scheduled_arr_utc = ymd_hms(scheduled_arr_utc)`.
## Caused by warning:
## ! 2985 failed to parse.
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 1553 rows [2522, 5193,
## 6543, 6765, 8423, 11380, 17871, 19335, 19506, 19984, 19993, 24062, 26367,
## 28093, 40032, 40551, 41166, 44879, 46660, 49296, ...].
Handle Missing Values

Feature Engineering
Save Cleaned Data
Analysis: Which Airlines Have More Codeshares?
## # A tibble: 866 × 8
## airline_name total_flights codeshare_flights non_codeshare_flights
## <chr> <int> <int> <int>
## 1 United 137935 15777 118443
## 2 American 126653 19199 73560
## 3 Delta Air Lines 86753 15810 70596
## 4 Air Canada 65154 20548 44035
## 5 Southwest 51373 0 51249
## 6 Lufthansa 34572 13758 20625
## 7 Alaska 33736 2375 31222
## 8 WestJet 29406 2570 26490
## 9 KLM 28258 7687 20569
## 10 Air France 27112 8204 17616
## # ℹ 856 more rows
## # ℹ 4 more variables: unknown_status_flights <int>, flight_numbers <chr>,
## # origin_airports <chr>, destination_airports <chr>
Flights Operating Through YYC
# Filter codeshare flights at YYC
yyc_codeshare_flights <- cleaned_data %>%
filter((origin_airport_iata == "YYC" | dest_airport_iata == "YYC") & codeshare_status == "Codeshare") %>%
select(flight_number, airline_name, origin_airport_iata, dest_airport_iata, scheduled_arr_utc, revised_arr_utc)
print(yyc_codeshare_flights)
## # A tibble: 3,813 × 6
## flight_number airline_name origin_airport_iata dest_airport_iata
## <chr> <chr> <chr> <chr>
## 1 LX 9315 SWISS YYC FRA
## 2 OS 8466 Austrian YYC FRA
## 3 LH 4405 Lufthansa YYC FRA
## 4 SN 5673 Brussels YYC FRA
## 5 AC 7393 Air Canada YYC FRA
## 6 LX 9315 SWISS YYC FRA
## 7 OS 8466 Austrian YYC FRA
## 8 AC 7393 Air Canada YYC FRA
## 9 SN 5673 Brussels YYC FRA
## 10 LH 4405 Lufthansa YYC FRA
## # ℹ 3,803 more rows
## # ℹ 2 more variables: scheduled_arr_utc <dttm>, revised_arr_utc <dttm>
Top 10 Flights by Airline and Codeshare Status
Our analysis reveals that larger, international carriers tend to have
more codeshare agreements compared to regional or smaller airlines.
Specifically, airlines like Air Canada, American Airlines, and Lufthansa
were found to have the highest number of codeshare agreements. These
airlines often partner with other international and domestic carriers,
expanding their reach and allowing passengers to book flights on
connecting routes operated by different airlines under the same flight
code.
In terms of data, we examined a dataset that included airline routes
and codeshare information. Using this data, we found that Air Canada,
for example, had partnerships with more than 15 international airlines,
as well as several regional carriers, providing extensive coverage
across North America and Europe.
# Filter and select top codeshare flights
top_codeshare_flights <- airline_flight_details %>%
select(airline_name, codeshare_flights) %>%
arrange(desc(codeshare_flights)) %>%
head(10) # Adjust the number of top airlines you want to display
# Create a bar chart for top codeshare flights by airline
p <- ggplot(top_codeshare_flights, aes(x = reorder(airline_name, -codeshare_flights), y = codeshare_flights, fill = airline_name)) +
geom_bar(stat = "identity") +
labs(title = "Top Codeshare Flights by Airline",
x = "Airline",
y = "Number of Codeshare Flights",
fill = "Airline") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplotly(p)
Description: A bar plot comparing the total number of codeshare
agreements for major airlines (e.g., Air Canada, American Airlines,
Lufthansa, etc.).
filter flights where YYC is either the origin or destination and
then selects the top 10 flights by airline and codeshare status.
We filtered the dataset to include only flights where YYC (Calgary
International Airport) is either the origin or the destination. From
this subset, we then identified the top 10 airlines based on the number
of flights, differentiating between codeshare and non-codeshare flights.
This analysis helps us understand the volume of flights from Calgary
operated by various airlines, as well as the extent of codeshare
agreements each airline has.
## # A tibble: 10 × 3
## airline_name codeshare_status total_flights
## <chr> <chr> <int>
## 1 WestJet Operator 14518
## 2 Air Canada Operator 3832
## 3 Flair Operator 854
## 4 Porter Operator 769
## 5 United Operator 742
## 6 Delta Air Lines Operator 456
## 7 Delta Air Lines Codeshare 382
## 8 Air Transat Codeshare 358
## 9 Austrian Codeshare 332
## 10 Air France Codeshare 263
One noticeable observation in the dataset is that WestJet shows a
high number of non-codeshare flights (14,518) in the dataset but no
codeshare flights. This discrepancy likely arises from data
categorization issues, where codeshare flights with international
partners like Delta and American Airlines may not be properly labeled as
codeshares, instead being recorded under the partner airline’s name.
Additionally, WestJet’s direct flights could be overrepresented under
the “IsOperator” category, while codeshare flights might be excluded or
categorized differently.
Upon checking WestJet’s website, it was found that the airline does
have multiple codeshare agreements with major international carriers
(WestJet, n.d.). This highlights the importance of understanding
potential limitations in data reporting when analyzing codeshare
agreements.
## Total flights at YYC: 25961
## Total codeshare flights at YYC: 3813
## Percentage of flights that are codeshared: 14.68742 %
Description: A bar plot with airlines on the x-axis, the number of
flights on the y-axis, and two colors representing non-codeshare and
codeshare flights.
To filter for Canadian Airlines: Air Canada, WestJet, Flair, Air
Transat, Sunwing Airlines, and Porter Airlines
## # A tibble: 7 × 3
## airline_name codeshare_status total_flights
## <chr> <chr> <int>
## 1 WestJet IsOperator 14518
## 2 Air Canada IsOperator 3832
## 3 Air Transat IsCodeshared 358
## 4 Air Canada IsCodeshared 96
## 5 WestJet Unknown 2
## 6 Air Canada Unknown 1
## 7 Flair Airlines IsOperator 1
Follow-up Q1: Do codeshares increase for international US domestic
flights?
Objective:
Analyze flights arriving at Calgary International Airport (YYC) by
categorizing them into US Domestic vs. International flights and
examining the relationship between codeshare and non-codeshare flights
using statistical tests.
Steps:
- Categorize the flights (International vs. US Domestic)
- Create a contingency table comparing codeshare vs. non-codeshare
flights by flight type
- Perform a Chi-square test to check if there is a significant
association
- If expected counts are small (<5 in any cell), use Fisher’s Exact
Test
##
## Pearson's Chi-squared test
##
## data: codeshare_matrix
## X-squared = 96142, df = 2, p-value < 0.00000000000000022
The first follow-up question we looked at was: Do codeshares increase
for international vs. domestic flights? To investigate the relationship
between codeshare agreements and flight types (US Domestic
vs. International), a Pearson’s Chi-squared test was performed on the
data. The Chi-squared test was chosen because it allows us to examine
the association between two categorical variables: codeshare status and
flight type. The results revealed a statistically significant
association between codeshare agreements and flight types, with a
p-value of < 0.00000000000000022. This indicates that codeshare
agreements are not equally distributed between US Domestic and
International flights, with international flights showing a higher
concentration of codeshare arrangements. In real-world terms, this
suggests that airlines are more likely to establish codeshare agreements
for international flights, likely due to the complexity and demand for
global connectivity on long-haul routes.
For Calgary-based airlines, this finding presents a strategic
opportunity to enhance international connectivity by expanding codeshare
partnerships. Such an expansion could improve access to global
destinations, increase passenger traffic, and foster economic growth by
boosting tourism and trade. Airlines can leverage this insight to focus
their efforts on enhancing international routes and strengthening their
competitive position in the global airline network.
Interpretation and Business Insights for Calgary:
Significant Association Between Codeshares and Flight Types: The
Pearson’s Chi-squared test results show a statistically significant
association between codeshare agreements and flight types (US Domestic
vs. International), with a p-value of < 0.00000000000000022. This
indicates that codeshare agreements are strongly related to the
distribution of US Domestic and International flights at Calgary
International Airport (YYC), suggesting that codeshare flights are not
equally distributed across these two categories.
Strategic Opportunity for Growth: Given the significant relationship
between codeshare status and flight type, Calgary-based airlines have an
opportunity to strategically enhance their international connectivity by
expanding their codeshare partnerships. This could be particularly
valuable in improving access to international destinations, which could
benefit both the airline industry and local businesses by broadening
market reach and improving passenger traffic to international
destinations.
Follow-up Question 2: Which routes from Calgary are most impacted by
codeshare agreements?
###Objective:
Identify which routes from Calgary are most impacted by codeshare
agreements. Are certain destinations benefiting more from codeshare
agreements?
## `summarise()` has grouped output by 'origin_airport_iata'. You can override
## using the `.groups` argument.
Figure: Top Codeshare Routes from Calgary (YYC) – showing the number
of codeshare flights per destination
YYC → YYZ: Calgary International Airport (YYC) to Toronto Pearson
International Airport (YYZ) (Domestic, Canada) = 2888
YYC → SFO: Calgary International Airport (YYC) to San Francisco
International Airport (SFO) (International, Canada → USA) = 564
YYC → LHR: Calgary International Airport (YYC) to London Heathrow
Airport (LHR) (International, Canada → United Kingdom) = 156
Summarizing the Airline Codeshare Details:
Here is a table showing the codeshare flights and the number of
unique airlines operating on each route from Calgary (YYC):
## `summarise()` has grouped output by 'origin_airport_iata'. You can override
## using the `.groups` argument.
The second follow-up question that we explored was to determine which
routes from Calgary International Airport (YYC) are most impacted by
codeshare agreements. An analysis was conducted by filtering flights
that operate under a codeshare arrangement. The objective was to
identify the destinations with the highest number of codeshare flights
and assess whether certain routes benefit more from these agreements.
The results indicate that the most affected route is between Calgary
(YYC) and Toronto Pearson International Airport (YYZ), with 2,888
codeshare flights operated by 22 different airlines. Other highly
impacted routes include Calgary to San Francisco (SFO) with 564 flights
and Calgary to London-Heathrow (LHR) with 156 flights.
These findings highlight that major domestic and international hubs
are the primary beneficiaries of codeshare agreements, as they provide
increased connectivity and access to a broader network of flights. In
real-world terms, this suggests that passengers traveling from Calgary
to major business and travel destinations—such as Toronto, San
Francisco, and London—have greater flexibility in airline choices due to
codeshare agreements.
## `summarise()` has grouped output by 'origin_airport_iata'. You can override
## using the `.groups` argument.
Top routes with codeshare flights
Additionally, a geographical analysis of the top codeshare routes
provides a spatial understanding of how these agreements enhance
Calgary’s flight connectivity. The map visualization below illustrates
the most impacted routes, highlighting the reach of YYC’s codeshare
network.
Top Codeshare Routes from Calgary – displaying flight paths
and frequency
From a business perspective, this presents an opportunity for
Calgary-based airlines to strengthen their partnerships with global
carriers to further enhance route connectivity. Expanding codeshare
agreements on existing high-traffic routes and identifying additional
international destinations for similar partnerships could improve
passenger convenience, increase airline market share, and support
economic growth through enhanced trade and tourism.
Descriptive Statistics for Flight Delays and Codehsared Flights
1. Overview of Delay Statistics
After identifying the top codeshare routes from Calgary International
Airport (YYC), we now examine how codesharing affects flight delays.
Specifically, we analyze whether flights operating under codeshare
agreements experience more frequent or longer delays compared to
non-codeshare flights.
We start by summarizing the delay statistics for codeshare, operator,
and unknown codeshare status flights.
## # A tibble: 3 × 4
## codeshare_status mean_delay median_delay sd_delay
## <chr> <dbl> <dbl> <dbl>
## 1 Codeshare 8.03 -2 47.6
## 2 Operator 3.30 -7 48.9
## 3 Unknown 10.2 0 52.6
Interpretation:
Codeshare flights have a mean delay of 8.03 minutes, which is higher
than both Operator flights (3.30 minutes) and Unknown flights (10.18
minutes). This indicates that, on average, Codeshare flights experience
a slightly smaller delay compared to Unknown flights but are more
delayed than Operator flights.
Codeshare flights have a median delay of -2 minutes, indicating that
for half of the Codeshare flights, the delay is less than -2 minutes
(meaning the flights arrived earlier than scheduled). Operator flights
have a median delay of -7 minutes, which is also early on average, but
slightly more negative than the Codeshare median. Unknown flights have a
median delay of 0 minutes, suggesting that the delays for Unknown
flights are closer to on-time (with half of the flights being on time or
early).
The standard deviation of delays is highest for Unknown flights
(52.62 minutes), indicating significant variability in delay times for
these flights. The Codeshare and Operator flights also show relatively
high variability in delays, with Codeshare flights having a standard
deviation of 47.59 minutes and Operator flights having 48.86
minutes.
Insights:
1. Flight Delay Trends:
• Codeshare flights are, on average, delayed more than Operator flights, but their median delays suggest that many Codeshare flights might even arrive earlier than scheduled.
• Unknown flights seem to be more unpredictable, with larger delays observed in the mean delay, but their median indicates that these flights are close to on time for half of the observations.
2. Variability in Delays:
• Unknown flights have the highest variability in delays, which may point to irregular scheduling or other factors that contribute to more significant delays for these flights. This high variability could be due to inconsistent handling of flight schedules or unforeseen issues related to those flights.
3. Potential Operational Insights:
• Airlines operating Codeshare flights might want to focus on ensuring consistency in scheduling and minimizing delays. Despite having a slight increase in average delays compared to Operator flights, the negative median delays might reflect proactive scheduling or early arrivals.
• For Unknown flights, further investigation into the causes of significant delays could be necessary. These flights may need more careful analysis or improved operational management to reduce variability and improve punctuality.
2. Airline-wise Delay Comparison
We now compare delays by airline and codeshare status. The following
plot shows the average delay for codeshare and non-codeshare flights by
airline.
## `summarise()` has grouped output by 'airline_name'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'airline_name'. You can override using the
## `.groups` argument.
## Warning: There were 72 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `max_delay = max(arrival_delay, na.rm = TRUE)`.
## ℹ In group 17: `airline_name = "AJet"` and `codeshare_status = "Unknown"`.
## Caused by warning in `max()`:
## ! no non-missing arguments to max; returning -Inf
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 71 remaining warnings.
## `summarise()` has grouped output by 'airline_name'. You can override using the
## `.groups` argument.
3. Delay by Route and Codeshare Status
Next, we compare delays across different routes that have codeshare
agreements.
The analysis of flight delays highlights significant discrepancies
between different routes, particularly for long-haul international
flights. The bar chart illustrating average delays for both codeshare
and non-codeshare flights by route reveals that the longest delays are
observed on flights from Lagos (LOS) to Amsterdam (AMS), with a mean
delay of 2,241 minutes. Other routes experiencing substantial delays
include Kuala Lumpur (KUL) to Amsterdam (1,849 minutes) and Bengaluru
(BLR) to Amsterdam (1,782 minutes). These delays indicate potential
operational challenges affecting flights on these specific routes.
Furthermore, delays on routes such as Kuala Lumpur (KUL) to Amsterdam
(AMS), Christchurch (CHC) to San Francisco (SFO), and Johannesburg (JNB)
to London Heathrow (LHR) show similar patterns for both codeshare and
operator flights. This suggests that common operational factors, such as
congestion at destination airports, scheduling inefficiencies, or
airline coordination challenges, may contribute to prolonged delays.
## `summarise()` has grouped output by 'origin_airport_iata', 'dest_airport_iata'.
## You can override using the `.groups` argument.
top_routes
Delay by Route and Codeshare Status
Key Findings:
• LOS → AMS: Lagos, Nigeria (Murtala Muhammed International Airport) → Amsterdam, Netherlands (Amsterdam Schiphol Airport) mean delay:2241 minutes
• KUL → AMS: Kuala Lumpur, Malaysia (Kuala Lumpur International Airport) → Amsterdam, Netherlands (Amsterdam Schiphol Airport) mean delay: 1849
• BLR → AMS: Bengaluru, India (Kempegowda International Airport) → Amsterdam, Netherlands (Amsterdam Schiphol Airport) mean delay: 1782
4. Does the arrival delay differ significantly between codeshare and
non-codeshare flights?
We want to assess whether there is a statistically significant
difference in the arrival delays between codeshare and non-codeshare
flights. This can be done using an independent two-sample t-test to
compare the means of arrival_delay between the two groups. First, we
will filter out any flights where the codeshare_status is unknown, as
this does not contribute to the comparison. Then, we will perform the
t-test to evaluate if the difference in mean delays is statistically
significant.
Null Hypothesis \((H₀)\) : There is
no significant difference in the arrival delay between codeshare and
non-codeshare flights. (i.e., the mean arrival delay for both groups is
equal.)
$ H₀: {} = {} $
Alternative Hypothesis \((H₁)\):
There is a significant difference in the arrival delay between codeshare
and non-codeshare flights.
$ H₁: {} {} $
##
## Welch Two Sample t-test
##
## data: arrival_delay by codeshare_status
## t = 48.689, df = 830735, p-value < 0.00000000000000022
## alternative hypothesis: true difference in means between group Codeshare and group Operator is not equal to 0
## 95 percent confidence interval:
## 4.537741 4.918394
## sample estimates:
## mean in group Codeshare mean in group Operator
## 8.027711 3.299643
## The difference in arrival delays between codeshare and non-codeshare flights is statistically significant (p-value < 0.05).
Interpretation:
The t-test results indicate a p-value < 2.2e-16, which is far
below the 0.05 significance level. This leads to the rejection of the
null hypothesis, confirming that the difference in arrival delays is
statistically significant. Additionally, the 95% confidence interval
(4.54, 4.92) does not include zero, further supporting this conclusion.
The test statistic (t = 48.689) is notably large, reinforcing the strong
difference between the groups.
From these findings, it is evident that codeshare flights experience
a higher mean arrival delay (8.03 minutes) compared to non-codeshare
flights (3.30 minutes). This suggests that codesharing may introduce
operational inefficiencies or scheduling challenges, contributing to
longer delays.
Conclusion:
Based on the results of the Welch Two Sample t-test, we reject the
null hypothesis and conclude that there is a statistically significant
difference in the arrival delays between codeshare and non-codeshare
flights. Specifically, codeshare flights have a higher mean arrival
delay (8.03 minutes) compared to non-codeshare flights (3.30
minutes).
To address these issues, further investigation is needed to identify
the root causes of extreme delays on high-delay routes. Airlines should
optimize scheduling, enhance coordination between codeshare partners,
and implement operational improvements to minimize delays. Reducing wait
times and enhancing punctuality will not only improve passenger
satisfaction but also strengthen the reliability of codeshare
agreements. By mitigating these delays, airlines and airports can
enhance overall travel efficiency and maintain competitiveness in the
global aviation market.
map
## Warning in left_join(., selected_airports_arrivals, by = c(dest_airport_iata = "origin_airport_iata")): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 1 of `x` matches multiple rows in `y`.
## ℹ Row 2951 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
## # A tibble: 27,831,687 × 21
## origin_airport_iata dest_airport_iata flight_number.x airline_name.x
## <chr> <chr> <chr> <chr>
## 1 YYC YVR WS 113 WestJet
## 2 YYC YVR WS 113 WestJet
## 3 YYC YVR WS 113 WestJet
## 4 YYC YVR WS 113 WestJet
## 5 YYC YVR WS 113 WestJet
## 6 YYC YVR WS 113 WestJet
## 7 YYC YVR WS 113 WestJet
## 8 YYC YVR WS 113 WestJet
## 9 YYC YVR WS 113 WestJet
## 10 YYC YVR WS 113 WestJet
## # ℹ 27,831,677 more rows
## # ℹ 17 more variables: scheduled_dept_utc <dttm>, revised_dept_utc <dttm>,
## # status <chr>, arrival_airport_name <chr>, scheduled_arrival <dttm>,
## # revised_arrival <dttm>, arr_terminal <chr>, arr_gate <chr>,
## # flight_number.y <chr>, arr_status <chr>, codeshare_status <chr>,
## # is_cargo <lgl>, aircraft_model <chr>, airline_name.y <chr>,
## # airline_iata <chr>, dest_airport_iata.y <chr>, extractedDate <date>
Top 10 codeshare routes from Calgary (YYC) along with their flight
counts and the number of unique airlines operating them.
## ℹ Google's Terms of Service: <https://mapsplatform.google.com>
## Stadia Maps' Terms of Service: <https://stadiamaps.com/terms-of-service/>
## OpenStreetMap's Tile Usage Policy: <https://operations.osmfoundation.org/policies/tiles/>
## ℹ Please cite ggmap if you use it! Use `citation("ggmap")` for details.
##
## Attaching package: 'ggmap'
##
##
## The following object is masked from 'package:plotly':
##
## wind
##
##
## Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE