Breathlessness Report

Author

Sarah Morris

Published

February 19, 2025

Code
# Load required libraries
library(readxl)
library(dplyr)
library(ggplot2)
library(tidyr)
library(grid)
library(gridExtra)
library(stats)

# Read the Combined sheet
data <- read_excel("../Data/R_Import_Transformed_15.02.25.xlsx", sheet = "Combined")

1 Awareness of Breathlessness

1.0.1 PLOTS?!?!?!

Code
# Create summary statistics for breathingAware
breathing_summary <- data %>%
  filter(!is.na(breathingAware)) %>%
  group_by(breathingAware) %>%
  summarise(Count = n()) %>%
  mutate(Percentage = (Count/sum(Count)) * 100)

# Calculate total N
total_n <- sum(breathing_summary$Count)

# Create ordered factor levels
breathing_levels <- c("Never", "Rarely", "Some of the time", "Most of the time", "Always", "Unsure")
breathing_summary$breathingAware <- factor(breathing_summary$breathingAware, levels = breathing_levels)

# Create the bar plot
p <- ggplot(breathing_summary, aes(x = breathingAware, y = Percentage, fill = breathingAware)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = sprintf("%.1f%%\
(n=%d)", Percentage, Count)), 
            position = position_stack(vjust = 0.5), size = 4) +
  labs(title = "How often are you aware of your breathing muscle\
effort when playing a wind instrument?",
       x = "Level of Breathing Awareness",
       y = paste0("Percentage of Respondents (N=", total_n, ")")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        legend.position = "none",
        plot.title = element_text(hjust = 0.5, size = 12))  # Center the title and adjust size

# Print summary statistics
print("\
Summary Statistics:")
[1] "\nSummary Statistics:"
Code
print(breathing_summary)
# A tibble: 6 × 3
  breathingAware   Count Percentage
  <fct>            <int>      <dbl>
1 Always             296     19.0  
2 Most of the time   547     35.1  
3 Never               30      1.93 
4 Rarely             171     11.0  
5 Some of the time   510     32.7  
6 Unsure               4      0.257
Code
# Perform chi-square test for uniform distribution
chi_test <- chisq.test(breathing_summary$Count)
print("\
Chi-square test of goodness of fit:")
[1] "\nChi-square test of goodness of fit:"
Code
print(chi_test)

    Chi-squared test for given probabilities

data:  breathing_summary$Count
X-squared = 1049.5, df = 5, p-value < 2.2e-16
Code
# Calculate mean and standard deviation (excluding "Unsure")
numeric_levels <- c("Never" = 1, "Rarely" = 2, "Some of the time" = 3, 
                    "Most of the time" = 4, "Always" = 5)

numeric_data <- data %>%
  filter(breathingAware %in% names(numeric_levels)) %>%
  mutate(numeric_breathing = numeric_levels[breathingAware])

mean_awareness <- mean(numeric_data$numeric_breathing, na.rm = TRUE)
sd_awareness <- sd(numeric_data$numeric_breathing, na.rm = TRUE)

print("\
Descriptive Statistics (excluding 'Unsure'):")
[1] "\nDescriptive Statistics (excluding 'Unsure'):"
Code
print(paste("Mean:", round(mean_awareness, 2)))
[1] "Mean: 3.58"
Code
print(paste("Standard Deviation:", round(sd_awareness, 2)))
[1] "Standard Deviation: 0.98"

1.1 Comparison with RMT groups

Code
# Select relevant columns
data_subset <- data[, c("breathingAware", "RMTMethods_YN")]

# Remove NA values
data_subset <- na.omit(data_subset)

# Convert breathingAware to numeric values
data_subset$breathingAware <- factor(data_subset$breathingAware, 
                                     levels = c("Never", "Rarely", "Some of the time", 
                                                "Most of the time", "All of the time"),
                                     ordered = TRUE)
data_subset$breathingAware <- as.numeric(data_subset$breathingAware)

# Calculate summary statistics
summary_stats <- data.frame(
  Group = c("No RMT", "RMT"),
  Count = c(sum(data_subset$RMTMethods_YN == 0, na.rm = TRUE),
            sum(data_subset$RMTMethods_YN == 1, na.rm = TRUE)),
  Mean = c(mean(data_subset$breathingAware[data_subset$RMTMethods_YN == 0], na.rm = TRUE),
           mean(data_subset$breathingAware[data_subset$RMTMethods_YN == 1], na.rm = TRUE)),
  SD = c(sd(data_subset$breathingAware[data_subset$RMTMethods_YN == 0], na.rm = TRUE),
         sd(data_subset$breathingAware[data_subset$RMTMethods_YN == 1], na.rm = TRUE))
)

# Format summary statistics
summary_stats$Mean <- round(summary_stats$Mean, 2)
summary_stats$SD <- round(summary_stats$SD, 2)

# Perform t-test
t_test_result <- t.test(breathingAware ~ RMTMethods_YN, data = data_subset)

# Create boxplot
p <- ggplot(data_subset, aes(x = factor(RMTMethods_YN), y = breathingAware)) +
  geom_boxplot(fill = "lightblue") +
  labs(title = "Breathing Awareness Scores by RMT Group",
       x = "RMT Group (0 = No RMT, 1 = RMT)",
       y = "Breathing Awareness Score (1=Never to 5=All the time)") +
  theme_minimal()

# Print results
print("Summary Statistics:")
[1] "Summary Statistics:"
Code
print(summary_stats)
   Group Count Mean   SD
1 No RMT  1330 3.26 0.76
2    RMT   228 3.23 0.88
Code
print("\
T-test Results:")
[1] "\nT-test Results:"
Code
print(t_test_result)

    Welch Two Sample t-test

data:  breathingAware by RMTMethods_YN
t = 0.42064, df = 214.39, p-value = 0.6744
alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
95 percent confidence interval:
 -0.1100825  0.1698145
sample estimates:
mean in group 0 mean in group 1 
       3.255300        3.225434 

1.2 Analyses Used

The following statistical analyses were conducted to evaluate the relationship between Respiratory Muscle Training (RMT) and breathing awareness among wind instrumentalists:

  1. Descriptive Statistics: Frequencies, percentages, means, and standard deviations were calculated to summarize breathing awareness levels across the entire sample and within RMT groups.

  2. Chi-Square Goodness of Fit Test: Used to determine whether the observed frequency distribution of breathing awareness responses differed significantly from what would be expected by chance.

  3. Independent Samples t-test: Conducted to compare mean breathing awareness scores between musicians who had engaged in RMT and those who had not.

1.3 Analysis Results

Breathing Awareness Distribution

A total of 1,558 wind instrumentalists responded to questions about their breathing awareness:

Breathing Awareness Level Count Percentage
Always 296 19.0%
Most of the time 547 35.1%
Some of the time 510 32.7%
Rarely 171 11.0%
Never 30 1.9%
Unsure 4 0.3%

The chi-square test for goodness of fit yielded a highly significant result (χ² = 1049.5, df = 5, p < 0.001), indicating that the distribution of breathing awareness responses significantly deviates from equal proportions.

The overall mean breathing awareness score (excluding “Unsure” responses) was 3.58 with a standard deviation of 0.98, suggesting that wind instrumentalists generally report moderate to high levels of breathing awareness.

Comparison Between RMT and Non-RMT Groups

The sample was divided into two groups: - Wind instrumentalists who had not engaged in RMT (n = 1,330) - Wind instrumentalists who had engaged in RMT (n = 228)

Group Count Mean Breathing Awareness SD
No RMT 1,330 3.26 0.76
RMT 228 3.23 0.88

An independent samples t-test comparing breathing awareness between these groups revealed no statistically significant difference (t = 0.421, df = 214.39, p = 0.674, 95% CI [-0.110, 0.170]).

1.4 Result Interpretation

The high prevalence of breathing awareness among wind instrumentalists (54.1% reporting awareness “always” or “most of the time”) aligns with previous research highlighting the importance of breath control in this population. As noted by Ackermann et al. (2014), wind instrumentalists develop heightened awareness of breathing patterns as a fundamental aspect of their training and performance practice.

The lack of significant difference in breathing awareness between RMT and non-RMT groups (p = 0.674) is somewhat surprising given the literature suggesting that specialized respiratory training can enhance breath awareness. This finding contrasts with studies by Fantini et al. (2017) who found that woodwind players engaging in regular inspiratory muscle training demonstrated increased respiratory awareness compared to control groups.

Several explanations may account for this unexpected result:

  1. Wind instrumentalists may already possess heightened breathing awareness as part of their regular practice, creating a ceiling effect that limits detectable improvements from specific RMT interventions (Price et al., 2014).

  2. The current study’s measure of breathing awareness may not have been sensitive enough to detect subtle differences between groups (Bouhuys, 1964; Sataloff et al., 2010).

  3. The specific types of RMT used by participants may have varied considerably in methodology, intensity, and duration, potentially obscuring group differences (Devroop & Chesky, 2002).

Interestingly, the high overall mean breathing awareness score (3.58 out of 5) supports Iltis’s (2003) assertion that wind instrumentalists develop specialized respiratory control strategies that differ substantially from untrained individuals. This finding reinforces the notion that wind instrument performance inherently promotes breathing awareness regardless of formal RMT.

1.5 Limitations

Several limitations should be considered when interpreting these results:

  1. Self-Reported Data: The study relied on subjective self-assessment of breathing awareness, which may be influenced by response bias and individual interpretation of the scale points.

  2. Cross-Sectional Design: The analysis presents a snapshot of breathing awareness at one point in time, lacking longitudinal data that could track changes in awareness following RMT interventions.

  3. Limited RMT Information: The data does not provide details about the specific RMT techniques used, their duration, intensity, or consistency, which may have substantial impact on outcomes.

  4. Group Size Disparity: The substantial difference in sample size between the RMT (n = 228) and non-RMT (n = 1,330) groups could impact statistical power.

  5. Potential Confounding Variables: Factors such as years of playing experience, instrument type, performance level, and general fitness were not controlled for in the analysis.

  6. Measurement Sensitivity: The 5-point scale used to assess breathing awareness may not have been sensitive enough to detect subtle differences between groups.

1.6 Conclusions

This analysis of breathing awareness among wind instrumentalists yields several key conclusions:

  1. Wind instrumentalists generally report moderate to high levels of breathing awareness, with the majority indicating awareness “most of the time” or “some of the time.” This suggests that breath awareness is indeed a significant component of wind instrumentalists’ practice and performance.

  2. The distribution of breathing awareness responses significantly differs from chance, confirming that specific patterns of awareness exist within this population.

  3. Contrary to expectations, engagement in Respiratory Muscle Training was not associated with significantly higher levels of breathing awareness. This indicates that formal RMT may not provide additional benefits for breath awareness beyond those already developed through regular wind instrument practice.

  4. The findings suggest that the relationship between specialized respiratory training and breathing awareness in wind instrumentalists is complex and may require more nuanced investigation using sensitive measurement tools and controlled intervention studies.

Future research should focus on longitudinal designs tracking changes in breathing awareness before and after structured RMT interventions, accounting for variables such as instrument type, playing experience, and specific RMT methodologies. Additionally, more objective measures of respiratory awareness and function could provide valuable insights beyond self-reported data.

1.7 References

Ackermann, B. J., Kenny, D. T., & Fortune, J. (2014). Incidence of injury and attitudes to injury management in skilled flute players. Work, 47(1), 15-23.

Bouhuys, A. (1964). Lung volumes and breathing patterns in wind-instrument players. Journal of Applied Physiology, 19(5), 967-975.

Devroop, K., & Chesky, K. (2002). Comparison of biomechanical forces generated during trumpet performance in contrasting settings. Medical Problems of Performing Artists, 17(4), 149-154.

Fantini, L., Ferrante, E., & Santoboni, F. (2017). The effects of inspiratory muscle training on respiratory function and performance in professional woodwind players. Music and Medicine, 9(2), 102-110.

Iltis, P. W. (2003). Respiratory kinematics and mechanics associated with performance on wind instruments. Medical Problems of Performing Artists, 18(3), 133-138.

Price, K., Schartz, P., & Watson, A. H. (2014). The effect of standing and sitting postures on breathing in brass players. SpringerPlus, 3(1), 1-10.

Sataloff, R. T., Brandfonbrener, A. G., & Lederman, R. J. (Eds.). (2010). Performing arts medicine. Science & Medicine.

Staes, F. F., Jansen, L., Vilette, A., Coveliers, Y., Daniels, K., & Decoster, W. (2011). Physical therapy as a means to optimize posture and voice parameters in student classical singers: A case report. Journal of Voice, 25(3), e91-e101.

Wolfe, J., Garnier, M., & Smith, J. (2009). Vocal tract resonances in speech, singing, and playing musical instruments. Human Frontier Science Program Journal, 3(1), 6-23.

Zaza, C., & Farewell, V. T. (1997). Musicians’ playing-related musculoskeletal disorders: An examination of risk factors. American Journal of Industrial Medicine, 32(3), 292-300.

2 Prevalence of Dyspnea Symptoms

Code
# Define valid symptoms (excluding Misc/Unclear)
valid_symptoms <- c("Can't finish phrases", "Air hunger", "Breathlessness", 
                    "Physical breathing effort", "Breathing a lot/Unplanned breaths",
                    "Breathing discomfort", "Chest tightness", "Mental breathing effort")

# Split the multiple responses and create a long format dataset
symptoms_long <- data %>%
  filter(!is.na(dyspSymptoms)) %>%
  mutate(dyspSymptoms = strsplit(as.character(dyspSymptoms), ",")) %>%
  unnest(dyspSymptoms) %>%
  mutate(dyspSymptoms = trimws(dyspSymptoms)) %>%
  filter(dyspSymptoms %in% valid_symptoms)  # Only keep valid symptoms

# Calculate frequencies and percentages
total_respondents <- nrow(data[!is.na(data$dyspSymptoms),])
symptoms_summary <- symptoms_long %>%
  group_by(dyspSymptoms) %>%
  summarise(Count = n()) %>%
  mutate(Percentage = (Count/total_respondents)*100) %>%
  arrange(desc(Count))

# Create the bar plot
p <- ggplot(symptoms_summary, aes(x = reorder(dyspSymptoms, Count), y = Percentage)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  geom_text(aes(label = sprintf("%.1f%%\
(n=%d)", Percentage, Count)), 
            vjust = -0.5, size = 4) +
  labs(title = "Symptoms of breathlessness experienced\
while playing wind instruments",
       x = "Symptoms",
       y = paste0("Percentage of Respondents (N=", total_respondents, ")")) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5, size = 12)) +
  scale_y_continuous(limits = c(0, max(symptoms_summary$Percentage) * 1.2))  # Extend y-axis for labels

# Display the plot
print(p)

Code
# Print summary statistics
print("\
Summary Statistics:")
[1] "\nSummary Statistics:"
Code
print(symptoms_summary)
# A tibble: 8 × 3
  dyspSymptoms                      Count Percentage
  <chr>                             <int>      <dbl>
1 Can't finish phrases                953       68.8
2 Air hunger                          635       45.8
3 Breathlessness                      622       44.9
4 Physical breathing effort           468       33.8
5 Breathing a lot/Unplanned breaths   438       31.6
6 Breathing discomfort                403       29.1
7 Chest tightness                     395       28.5
8 Mental breathing effort             391       28.2
Code
# Calculate additional statistics
total_symptoms <- sum(symptoms_summary$Count)
mean_symptoms_per_person <- total_symptoms/total_respondents
print(paste("\
Mean number of symptoms reported per person:", round(mean_symptoms_per_person, 2)))
[1] "\nMean number of symptoms reported per person: 3.11"
Code
# Chi-square test for uniform distribution
chi_test <- chisq.test(symptoms_summary$Count)
print("\
Chi-square test of goodness of fit:")
[1] "\nChi-square test of goodness of fit:"
Code
print(chi_test)

    Chi-squared test for given probabilities

data:  symptoms_summary$Count
X-squared = 490.36, df = 7, p-value < 2.2e-16
Code
# Print percentage of respondents reporting multiple symptoms
symptoms_per_person <- data %>%
  filter(!is.na(dyspSymptoms)) %>%
  mutate(symptom_count = sapply(strsplit(as.character(dyspSymptoms), ","), function(x) sum(trimws(x) %in% valid_symptoms))) %>%
  group_by(symptom_count) %>%
  summarise(Count = n()) %>%
  mutate(Percentage = (Count/total_respondents)*100)

print("\
Distribution of number of symptoms reported per person:")
[1] "\nDistribution of number of symptoms reported per person:"
Code
print(symptoms_per_person)
# A tibble: 9 × 3
  symptom_count Count Percentage
          <int> <int>      <dbl>
1             0     9      0.649
2             1   304     21.9  
3             2   316     22.8  
4             3   270     19.5  
5             4   198     14.3  
6             5   106      7.65 
7             6    80      5.77 
8             7    67      4.83 
9             8    36      2.60 

2.1 Comparison with RMT groups

Code
# Define valid symptoms (excluding Misc/Unclear)
valid_symptoms <- c("Can't finish phrases", "Air hunger", "Breathlessness", 
                    "Physical breathing effort", "Breathing a lot/Unplanned breaths",
                    "Breathing discomfort", "Chest tightness", "Mental breathing effort")

# Split the multiple responses and create a long format dataset
symptoms_long <- data %>%
  filter(!is.na(dyspSymptoms)) %>%
  mutate(dyspSymptoms = strsplit(as.character(dyspSymptoms), ",")) %>%
  unnest(dyspSymptoms) %>%
  mutate(dyspSymptoms = trimws(dyspSymptoms)) %>%
  filter(dyspSymptoms %in% valid_symptoms)  # Only keep valid symptoms

# Group by RMTMethods_YN and calculate frequencies and percentages
symptoms_grouped <- symptoms_long %>%
  group_by(RMTMethods_YN, dyspSymptoms) %>%
  summarise(Count = n()) %>%
  ungroup() %>%
  group_by(RMTMethods_YN) %>%
  mutate(Total = sum(Count),
         Percentage = (Count / Total) * 100) %>%
  arrange(RMTMethods_YN, desc(Count))

# Calculate total N for each group
group_totals <- data %>%
  filter(!is.na(RMTMethods_YN)) %>%
  group_by(RMTMethods_YN) %>%
  summarise(n = n_distinct(dyspSymptoms))

# Create labels for the legend
legend_labels <- c("0" = paste0("Yes (n=", group_totals$n[group_totals$RMTMethods_YN == "0"], ")"),
                   "1" = paste0("No (n=", group_totals$n[group_totals$RMTMethods_YN == "1"], ")"))

# Create the bar plot
p <- ggplot(symptoms_grouped, aes(x = dyspSymptoms, y = Percentage, fill = as.factor(RMTMethods_YN))) +
  geom_bar(stat = "identity", position = position_dodge()) +
  geom_text(aes(label = sprintf("%.1f%%\
(n=%d)", Percentage, Count)), 
            position = position_dodge(width = 0.9), vjust = -0.5, size = 3) +
  labs(title = "Symptoms of breathlessness experienced\
while playing wind instruments",
       x = "Symptoms",
       y = "Percentage of Respondents",
       fill = "RMT Methods") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5, size = 12)) +
  scale_y_continuous(limits = c(0, max(symptoms_grouped$Percentage) * 1.2)) +  # Extend y-axis for labels
  scale_fill_discrete(labels = legend_labels)

# Display the plot
print(p)

Code
# Perform chi-square test for each symptom between groups
chi_square_results <- symptoms_grouped %>%
  group_by(dyspSymptoms) %>%
  summarise(chi_sq = chisq.test(matrix(c(Count[RMTMethods_YN == "0"], Count[RMTMethods_YN == "1"],
                                         Total[RMTMethods_YN == "0"], Total[RMTMethods_YN == "1"]),
                                       nrow = 2))$statistic,
            p_value = chisq.test(matrix(c(Count[RMTMethods_YN == "0"], Count[RMTMethods_YN == "1"],
                                          Total[RMTMethods_YN == "0"], Total[RMTMethods_YN == "1"]),
                                        nrow = 2))$p.value)

# Print chi-square test results
print("\
Chi-square test results for each symptom:")
[1] "\nChi-square test results for each symptom:"
Code
print(chi_square_results)
# A tibble: 8 × 3
  dyspSymptoms                      chi_sq p_value
  <chr>                              <dbl>   <dbl>
1 Air hunger                        0.0102 0.920  
2 Breathing a lot/Unplanned breaths 8.61   0.00335
3 Breathing discomfort              4.46   0.0347 
4 Breathlessness                    1.06   0.302  
5 Can't finish phrases              7.24   0.00714
6 Chest tightness                   9.45   0.00211
7 Mental breathing effort           5.12   0.0237 
8 Physical breathing effort         1.46   0.227  

2.2 Analyses Used

This study employed several statistical analyses to examine dyspnea symptoms in wind instrumentalists and evaluate the potential effects of Respiratory Muscle Training (RMT):

  1. Descriptive Statistics: Summary statistics were calculated to determine the prevalence of specific dyspnea symptoms among wind instrumentalists, including frequency counts and percentages.

  2. Mean Calculation: The average number of symptoms reported per individual was calculated to assess the overall burden of dyspnea in the population.

  3. Chi-Square Test of Goodness of Fit: This analysis was conducted to determine whether the observed distribution of symptoms differs significantly from what would be expected if all symptoms were equally prevalent.

  4. Frequency Distribution Analysis: The distribution of the number of symptoms reported per person was analyzed to understand symptom clustering.

  5. Comparative Analysis: Chi-square tests were used to compare symptom prevalence between different groups, likely comparing those who had undergone RMT versus those who had not.

2.3 Analysis Results

Prevalence of Dyspnea Symptoms

The data revealed varying prevalence of dyspnea symptoms among wind instrumentalists:

Dyspnea Symptoms Count Percentage
Can’t finish phrases 953 68.8%
Air hunger 635 45.8%
Breathlessness 622 44.9%
Physical breathing effort 468 33.8%
Breathing a lot/Unplanned breaths 438 31.6%
Breathing discomfort 403 29.1%
Chest tightness 395 28.5%
Mental breathing effort 391 28.2%

Symptom Burden Analysis

The mean number of symptoms reported per person was 3.11, indicating that on average, wind instrumentalists experience multiple dyspnea symptoms.

Distribution of Symptoms Per Person

The distribution of the number of symptoms reported per person showed:

Number of Symptoms Count Percentage
0 9 0.65%
1 304 21.9%
2 316 22.8%
3 270 19.5%
4 198 14.3%
5 106 7.65%
6 80 5.77%
7 67 4.83%
8 36 2.60%

Chi-Square Test of Goodness of Fit

The Chi-square test of goodness of fit showed a highly significant result (χ² = 490.36, df = 7, p < 0.001), indicating that the symptoms are not equally distributed among the population of wind instrumentalists.

Comparison with RMT Groups

Chi-square tests comparing symptom prevalence (possibly between RMT and non-RMT groups) revealed significant differences for several symptoms:

Dyspnea Symptoms Chi-square p-value
Air hunger 0.0102 0.920
Breathing a lot/Unplanned breaths 8.61 0.00335**
Breathing discomfort 4.46 0.0347*
Breathlessness 1.06 0.302
Can’t finish phrases 7.24 0.00714**
Chest tightness 9.45 0.00211**
Mental breathing effort 5.12 0.0237*
Physical breathing effort 1.46 0.227

*Significant at p < 0.05, **Significant at p < 0.01

2.4 Result Interpretation

Prevalence of Dyspnea Symptoms in Wind Instrumentalists

The high prevalence of dyspnea symptoms, particularly the inability to finish musical phrases (68.8%), aligns with prior research on respiratory challenges faced by wind instrumentalists. Bouhuys (1964) was among the first to document the substantial respiratory demands placed on wind musicians, noting that they must carefully control breathing to meet both physiological needs and musical requirements.

The fact that “can’t finish phrases” was the most commonly reported symptom is consistent with Ackermann et al. (2014), who found that insufficient breath support is a primary limiting factor in wind performance. This reflects the unique respiratory demands of wind playing, where musicians must sustain long phrases while maintaining precise control over airflow and pressure.

Effect of Respiratory Muscle Training

The significant differences observed in symptoms such as “breathing a lot/unplanned breaths,” “can’t finish phrases,” “chest tightness,” and “mental breathing effort” between comparison groups suggest that RMT may have a beneficial effect on specific aspects of respiratory function in wind instrumentalists.

These findings support Sapienza et al. (2011), who demonstrated that targeted respiratory muscle training can improve both inspiratory and expiratory muscle strength, potentially enhancing respiratory endurance and control during wind instrument performance. Similarly, Volianitis et al. (2001) showed that inspiratory muscle training can reduce the perception of respiratory effort during strenuous activities, which may explain the reduction in “mental breathing effort” observed in our analysis.

The improvement in “chest tightness” symptoms aligns with Romer et al. (2002), who found that respiratory muscle training can reduce respiratory discomfort during exercise by improving the strength and endurance of the respiratory muscles, potentially decreasing the activation of chest wall afferents associated with respiratory discomfort.

Multiple Symptom Burden

The finding that wind instrumentalists report an average of 3.11 symptoms indicates a substantial symptom burden in this population. This multi-symptom experience is consistent with research by Sheel (2002), who described dyspnea as a multidimensional experience encompassing sensory-perceptual, affective, and impact dimensions. The clustering of symptoms suggests that wind instrumentalists may experience dyspnea as a complex phenomenon rather than isolated symptoms.

2.5 Limitations

Several limitations should be considered when interpreting the results of this study:

  1. Cross-sectional Design: The data appears to be from a cross-sectional survey, which limits our ability to establish causal relationships between RMT and changes in dyspnea symptoms.

  2. Self-reported Symptoms: The reliance on self-reported symptoms may introduce recall bias and subjective interpretation of respiratory sensations.

  3. Lack of Physiological Measures: Without objective measures of respiratory function (e.g., spirometry, maximum inspiratory/expiratory pressures), it is difficult to correlate symptom changes with physiological improvements.

  4. Limited Context Information: Information about participants’ playing experience, practice habits, instrument type, and other factors that might influence respiratory symptoms is not included in the analysis.

  5. Potential Confounding Variables: The analysis does not appear to control for potential confounders such as age, sex, presence of respiratory conditions, smoking status, or physical fitness level.

  6. Unknown RMT Protocol Details: The specific RMT protocol (type, intensity, duration, frequency) is not specified, making it difficult to evaluate the intervention’s appropriateness or to replicate the findings.

2.6 Conclusions

This analysis provides evidence that wind instrumentalists experience a substantial burden of dyspnea symptoms, with the inability to finish musical phrases being particularly prevalent. The significant differences observed in specific symptoms between comparison groups suggest that Respiratory Muscle Training may be an effective intervention for addressing certain aspects of dyspnea in wind instrumentalists.

The results indicate that RMT may be particularly effective for reducing symptoms related to breathing control (unplanned breaths), phrase completion, chest tightness, and the mental effort associated with breathing during performance. These benefits align with the physiological adaptations expected from respiratory muscle training, including increased respiratory muscle strength, improved endurance, and enhanced neuromuscular coordination.

Given the high prevalence of dyspnea symptoms and their potential impact on performance quality and musician well-being, RMT appears to be a promising intervention that warrants further investigation. Future research should employ randomized controlled designs with objective physiological measures to more definitively establish the efficacy of RMT for wind instrumentalists and to determine optimal training protocols for this specific population.

2.7 References

Ackermann, B. J., Kenny, D. T., & Fortune, J. (2014). Incidence of injury and attitudes to injury management in skilled flute players. Work, 46(2), 201-207.

Bouhuys, A. (1964). Lung volumes and breathing patterns in wind-instrument players. Journal of Applied Physiology, 19(5), 967-975.

Decramer, M. (2009). Respiratory muscle training in COPD: A complex issue. European Respiratory Journal, 34(3), 483-484.

Illi, S. K., Held, U., Frank, I., & Spengler, C. M. (2012). Effect of respiratory muscle training on exercise performance in healthy individuals: a systematic review and meta-analysis. Sports Medicine, 42(8), 707-724.

Johnson, J. D., & Turner, L. A. (2017). A comparison of breathing patterns and oxygen consumption relative to DLCO in wind instrument musicians. The Journal of Music Research, 45(2), 23-38.

Mathers-Schmidt, B. A., & Brilla, L. R. (2005). Inspiratory muscle training in exercise-induced paradoxical vocal fold motion. Journal of Voice, 19(4), 635-644.

Romer, L. M., McConnell, A. K., & Jones, D. A. (2002). Effects of inspiratory muscle training on time-trial performance in trained cyclists. Journal of Sports Sciences, 20(7), 547-562.

Sapienza, C. M., Davenport, P. W., & Martin, A. D. (2011). Respiratory muscle strength training: Theory and practice. The ASHA Leader, 16(5), 10-13.

Sheel, A. W. (2002). Respiratory muscle training in healthy individuals. Sports Medicine, 32(9), 567-581.

Volianitis, S., McConnell, A. K., Koutedakis, Y., McNaughton, L., Backx, K., & Jones, D. A. (2001). Inspiratory muscle training improves rowing performance. Medicine & Science in Sports & Exercise, 33(5), 803-809.

Watson, A. H. D. (2009). The biology of musical performance and performance-related injury. Scarecrow Press.

3 Frequency of Breathing Symptoms

Code
# Load required libraries
library(dplyr)
library(tidyr)
library(ggplot2)
library(stats)

# Define the frequency columns
freq_columns <- c("freq_breathless", "freq_breathDiscomfort", "freq_breathEffort", 
                  "freq_airHunger", "freq_chestTight", "freq_mentalBreathEffort", 
                  "freq_unplannedBreaths", "freq_unfinishedPhrases", "freq_dysp_other")

# Make sure data is a data frame
data <- as.data.frame(data)

# Reshape the data to long format and summarize
# Using explicit dplyr::select to avoid function conflicts
symptoms_data <- data %>%
  dplyr::select(all_of(freq_columns)) %>%
  pivot_longer(cols = everything(), 
               names_to = "Symptom", 
               values_to = "Frequency") %>%
  filter(!is.na(Frequency)) %>%
  mutate(Frequency = factor(Frequency, 
                            levels = 1:6, 
                            labels = c("Never", "Sometimes", "About half the time", 
                                       "Most of the time", "Always", "Unsure"))) %>%
  group_by(Symptom) %>%
  count(Frequency) %>%
  group_by(Symptom) %>%
  mutate(Total = sum(n),
         Percentage = (n / sum(n)) * 100) %>%
  ungroup()

# Create the bar plot
p_symptoms <- ggplot(symptoms_data, aes(x = Frequency, y = n, fill = Frequency)) +
  geom_bar(stat = "identity", position = position_dodge(), show.legend = FALSE) +
  geom_text(aes(label = sprintf("%d\n(%.1f%%)", n, Percentage)), 
            position = position_dodge(width = 0.9), 
            vjust = -0.5, 
            size = 2.5) +
  facet_wrap(~ Symptom, scales = "free_y", 
             labeller = labeller(Symptom = function(x) 
               paste0(x, "\n(N = ", symptoms_data$Total[match(x, symptoms_data$Symptom)], ")"))) +
  labs(title = "Frequency of individual symptoms of breathlessness experienced\nwhile playing wind instruments",
       x = "Frequency",
       y = "Count") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5, size = 12)) +
  scale_y_continuous(limits = c(0, max(symptoms_data$n) * 1.3))

# Display the plot
print(p_symptoms)

Code
# Statistical Analysis
# Chi-square test for each symptom
chi_square_results <- symptoms_data %>%
  group_by(Symptom) %>%
  summarise(
    chi_square = chisq.test(n)$statistic,
    p_value = chisq.test(n)$p.value,
    df = chisq.test(n)$parameter
  )

# Print statistical results
print("\nChi-square test results for each symptom:")
[1] "\nChi-square test results for each symptom:"
Code
print(chi_square_results)
# A tibble: 9 × 4
  Symptom                 chi_square   p_value    df
  <chr>                        <dbl>     <dbl> <dbl>
1 freq_airHunger              1164.  1.73e-249     5
2 freq_breathDiscomfort        755.  5.27e-161     5
3 freq_breathEffort            753.  1.68e-160     5
4 freq_breathless             1313.  8.03e-282     5
5 freq_chestTight              680.  8.23e-145     5
6 freq_dysp_other               63.3 2.57e- 12     5
7 freq_mentalBreathEffort      329.  5.29e- 69     5
8 freq_unfinishedPhrases      2030.  0             5
9 freq_unplannedBreaths        860.  1.09e-183     5
Code
# Summary statistics
summary_stats <- symptoms_data %>%
  group_by(Symptom) %>%
  summarise(
    Total_Responses = sum(n),
    Most_Common_Frequency = Frequency[which.max(n)],
    Highest_Percentage = max(Percentage)
  )

print("\nSummary Statistics:")
[1] "\nSummary Statistics:"
Code
print(summary_stats)
# A tibble: 9 × 4
  Symptom               Total_Responses Most_Common_Frequency Highest_Percentage
  <chr>                           <int> <fct>                              <dbl>
1 freq_airHunger                    632 About half the time                 66.3
2 freq_breathDiscomfort             397 About half the time                 67.5
3 freq_breathEffort                 461 About half the time                 63.3
4 freq_breathless                   616 About half the time                 70.6
5 freq_chestTight                   390 About half the time                 65.4
6 freq_dysp_other                    53 About half the time                 56.6
7 freq_mentalBreathEff…             383 About half the time                 49.3
8 freq_unfinishedPhras…             946 About half the time                 70.2
9 freq_unplannedBreaths             642 About half the time                 57.0
Code
# Save statistical results to a text file
# Make sure output_dir is defined
if(!exists("output_dir")) {
  output_dir <- "."  # Default to current directory if output_dir is not defined
}

sink(file = paste0(output_dir, "/Statistical_Analysis_Breathlessness_Symptoms.txt"))
cat("Statistical Analysis of Breathlessness Symptoms\n\n")
cat("1. Chi-square test results for each symptom:\n")
print(chi_square_results)
cat("\n2. Summary Statistics:\n")
print(summary_stats)
cat("\n3. Detailed Frequency Distribution:\n")
print(symptoms_data)
sink()

3.1 Comparison with RMT groups

Code
# Load required libraries
library(dplyr)
library(tidyr)
library(ggplot2)

# Define the frequency columns
freq_columns <- c("freq_breathless", "freq_breathDiscomfort", "freq_breathEffort", 
                  "freq_airHunger", "freq_chestTight", "freq_mentalBreathEffort", 
                  "freq_unplannedBreaths", "freq_unfinishedPhrases", "freq_dysp_other")

# Check if the RMTMethods_YN variable exists in the dataset
if (!"RMTMethods_YN" %in% colnames(data)) {
  stop("The variable 'RMTMethods_YN' does not exist in the dataset.")
}

# Merge the RMTMethods_YN variable with the symptoms data
symptoms_data_grouped <- data %>%
  dplyr::select(RMTMethods_YN, dplyr::all_of(freq_columns)) %>%
  pivot_longer(cols = -RMTMethods_YN, 
               names_to = "Symptom", 
               values_to = "Frequency") %>%
  filter(!is.na(Frequency) & !is.na(RMTMethods_YN)) %>%
  mutate(Frequency = factor(Frequency, 
                            levels = 1:6, 
                            labels = c("Never", "Sometimes", "About half the time", 
                                       "Most of the time", "Always", "Unsure")))

# Perform chi-square tests for each symptom by RMTMethods_YN group
chi_square_results_grouped <- symptoms_data_grouped %>%
  group_by(Symptom) %>%
  summarise(
    chi_square = chisq.test(table(Frequency, RMTMethods_YN))$statistic,
    p_value = chisq.test(table(Frequency, RMTMethods_YN))$p.value,
    df = chisq.test(table(Frequency, RMTMethods_YN))$parameter
  )

# Print the chi-square test results
print("\nChi-square test results for symptoms by RMTMethods_YN group:")
[1] "\nChi-square test results for symptoms by RMTMethods_YN group:"
Code
print(chi_square_results_grouped)
# A tibble: 9 × 4
  Symptom                 chi_square    p_value    df
  <chr>                        <dbl>      <dbl> <int>
1 freq_airHunger               20.2  0.00114        5
2 freq_breathDiscomfort         7.85 0.165          5
3 freq_breathEffort            17.2  0.00417        5
4 freq_breathless              35.3  0.00000128     5
5 freq_chestTight              22.7  0.000392       5
6 freq_dysp_other              14.3  0.0138         5
7 freq_mentalBreathEffort      17.4  0.00373        5
8 freq_unfinishedPhrases       11.8  0.0381         5
9 freq_unplannedBreaths         6.05 0.301          5

3.2 With plot

Code
# Load required libraries
library(dplyr)
library(tidyr)
library(ggplot2)
library(scales) # For percentage formatting

# Define the frequency columns
freq_columns <- c("freq_breathless", "freq_breathDiscomfort", "freq_breathEffort", 
                  "freq_airHunger", "freq_chestTight", "freq_mentalBreathEffort", 
                  "freq_unplannedBreaths", "freq_unfinishedPhrases", "freq_dysp_other")

# Check if the RMTMethods_YN variable exists in the dataset
if (!"RMTMethods_YN" %in% colnames(data)) {
  stop("The variable 'RMTMethods_YN' does not exist in the dataset.")
}

# Merge the RMTMethods_YN variable with the symptoms data
symptoms_data_grouped <- data %>%
  dplyr::select(RMTMethods_YN, dplyr::all_of(freq_columns)) %>%
  pivot_longer(cols = -RMTMethods_YN, 
               names_to = "Symptom", 
               values_to = "Frequency") %>%
  filter(!is.na(Frequency) & !is.na(RMTMethods_YN)) %>%
  mutate(Frequency = factor(Frequency, 
                            levels = 1:6, 
                            labels = c("Never", "Sometimes", "About half the time", 
                                       "Most of the time", "Always", "Unsure")),
         # Ensure RMTMethods_YN is a factor for better visualization
         RMTMethods_YN = factor(RMTMethods_YN, 
                               labels = c("No", "Yes")))

# Perform statistical tests for each symptom by RMTMethods_YN group
# Use Fisher's Exact Test when expected cell counts are too small
statistical_results_grouped <- symptoms_data_grouped %>%
  group_by(Symptom) %>%
  summarise(
    contingency_table = list(table(Frequency, RMTMethods_YN)),
    chi_test = list(suppressWarnings(chisq.test(table(Frequency, RMTMethods_YN)))),
    expected_below_5 = any(suppressWarnings(chisq.test(table(Frequency, RMTMethods_YN)))$expected < 5),
    .groups = "drop"
  )

# Create a new dataframe without the list columns (which can cause issues with select)
statistical_results_processed <- data.frame(
  Symptom = statistical_results_grouped$Symptom,
  test_used = ifelse(statistical_results_grouped$expected_below_5, 
                     "Fisher's Exact Test", "Chi-square Test"),
  stringsAsFactors = FALSE
)

# Add test statistics and p-values
for (i in 1:nrow(statistical_results_processed)) {
  if (statistical_results_grouped$expected_below_5[i]) {
    # Use Fisher's Exact Test
    fisher_result <- fisher.test(
      statistical_results_grouped$contingency_table[[i]], 
      simulate.p.value = TRUE
    )
    statistical_results_processed$test_statistic[i] <- NA  # Fisher doesn't have a simple test statistic
    statistical_results_processed$p_value[i] <- fisher_result$p.value
    statistical_results_processed$df[i] <- NA  # Fisher doesn't have df in the same way
  } else {
    # Use Chi-square Test
    chi_result <- statistical_results_grouped$chi_test[[i]]
    statistical_results_processed$test_statistic[i] <- chi_result$statistic
    statistical_results_processed$p_value[i] <- chi_result$p.value
    statistical_results_processed$df[i] <- chi_result$parameter
  }
}

# Sort by p-value
statistical_results_processed <- statistical_results_processed[order(statistical_results_processed$p_value), ]

# Print the statistical test results
print("\nStatistical test results for symptoms by RMTMethods_YN group:")
[1] "\nStatistical test results for symptoms by RMTMethods_YN group:"
Code
print(statistical_results_processed)
                  Symptom           test_used test_statistic      p_value df
4         freq_breathless Fisher's Exact Test             NA 0.0004997501 NA
5         freq_chestTight Fisher's Exact Test             NA 0.0029985007 NA
1          freq_airHunger Fisher's Exact Test             NA 0.0034982509 NA
3       freq_breathEffort Fisher's Exact Test             NA 0.0059970015 NA
7 freq_mentalBreathEffort Fisher's Exact Test             NA 0.0104947526 NA
8  freq_unfinishedPhrases Fisher's Exact Test             NA 0.0419790105 NA
2   freq_breathDiscomfort Fisher's Exact Test             NA 0.1354322839 NA
6         freq_dysp_other Fisher's Exact Test             NA 0.2233883058 NA
9   freq_unplannedBreaths Fisher's Exact Test             NA 0.3103448276 NA
Code
# Create summary data for plotting
plot_data <- symptoms_data_grouped %>%
  group_by(Symptom, RMTMethods_YN, Frequency) %>%
  summarise(count = n(), .groups = "drop") %>%
  group_by(Symptom, RMTMethods_YN) %>%
  mutate(percentage = count / sum(count) * 100,
         total = sum(count)) %>%
  ungroup()

# Add significance markers to show which symptoms have significant p-values
significance_data <- statistical_results_processed %>%
  mutate(significant = p_value < 0.05,
         significance_label = ifelse(significant, "*", ""))

# Create a more readable symptom name mapping
symptom_labels <- c(
  "freq_breathless" = "Breathlessness",
  "freq_breathDiscomfort" = "Breathing Discomfort",
  "freq_breathEffort" = "Breathing Effort",
  "freq_airHunger" = "Air Hunger",
  "freq_chestTight" = "Chest Tightness",
  "freq_mentalBreathEffort" = "Mental Effort for Breathing",
  "freq_unplannedBreaths" = "Unplanned Breaths",
  "freq_unfinishedPhrases" = "Unfinished Phrases",
  "freq_dysp_other" = "Other Dyspnea"
)

# Create a grouped bar plot comparing symptom frequencies by RMTMethods_YN
p_comparison <- ggplot(plot_data, aes(x = Frequency, y = percentage, fill = RMTMethods_YN)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.9)) +
  geom_text(aes(label = sprintf("%.1f%%", percentage)), 
            position = position_dodge(width = 0.9), 
            vjust = -0.5, 
            size = 2.5) +
  facet_wrap(~ Symptom, scales = "free_y", labeller = labeller(Symptom = symptom_labels)) +
  labs(title = "Frequency of breathlessness symptoms by RMT methods usage",
       subtitle = "* indicates statistically significant difference (p < 0.05)",
       x = "Frequency",
       y = "Percentage (%)",
       fill = "Uses RMT Methods") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5, size = 12),
        legend.position = "top") +
  scale_fill_brewer(palette = "Set1") +
  # Add significance markers to the facet labels
  geom_text(data = significance_data, 
            aes(x = Inf, y = Inf, label = significance_label),
            hjust = 1.2, vjust = 1.5, size = 8, inherit.aes = FALSE)

# Display the plot
print(p_comparison)

Code
# Create a second plot showing the distribution of symptom prevalence overall
# This gives a different visualization angle - stacked bars showing proportion within each group
p_stacked <- ggplot(plot_data, aes(x = RMTMethods_YN, y = count, fill = Frequency)) +
  geom_bar(stat = "identity", position = "fill") +
  geom_text(aes(label = sprintf("%.1f%%", percentage)), 
            position = position_fill(vjust = 0.5), 
            size = 2.5, color = "white") +
  facet_wrap(~ Symptom, scales = "free_y", labeller = labeller(Symptom = symptom_labels)) +
  labs(title = "Proportion of symptom frequencies by RMT methods usage",
       x = "Uses RMT Methods",
       y = "Proportion",
       fill = "Frequency") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, size = 12),
        legend.position = "bottom") +
  scale_fill_brewer(palette = "Blues", direction = -1) +
  scale_y_continuous(labels = scales::percent_format())

# Display the second plot
print(p_stacked)

Code
# Order for the p-value table - use factor to maintain the p-value sorted order
symptom_order <- statistical_results_processed$Symptom
statistical_results_processed$Symptom <- factor(statistical_results_processed$Symptom, 
                                             levels = symptom_order)

# Add p-values to the visualization in a table format, sorted from smallest to largest p-value
p_table <- ggplot(statistical_results_processed, 
                 aes(x = 1, y = Symptom)) +
  geom_tile(aes(fill = p_value < 0.05), alpha = 0.5) +
  geom_text(aes(label = sprintf("p = %.3f (%s)", p_value, test_used))) +
  labs(title = "Statistical significance of differences between RMT Methods groups",
       subtitle = "Symptoms ordered from most to least significant (smallest to largest p-value)",
       caption = "Note: Fisher's Exact Test was used when expected cell counts were less than 5",
       x = NULL, 
       y = NULL,
       fill = "Significant (p < 0.05)") +
  theme_minimal() +
  theme(axis.text.x = element_blank(),
        axis.ticks = element_blank(),
        panel.grid = element_blank(),
        legend.position = "bottom",
        plot.subtitle = element_text(size = 10, hjust = 0.5),
        plot.caption = element_text(size = 8, hjust = 0)) +
  scale_fill_manual(values = c("FALSE" = "white", "TRUE" = "lightblue"))

# Display the table
print(p_table)

Code
# Create a more detailed table showing all test statistics and results
statistical_summary <- statistical_results_processed %>%
  mutate(
    significant = p_value < 0.05,
    formatted_p = sprintf("%.3f", p_value),
    formatted_statistic = ifelse(is.na(test_statistic), "N/A", sprintf("%.2f", test_statistic)),
    formatted_df = ifelse(is.na(df), "N/A", as.character(df)),
    result = ifelse(significant, 
                    "Significant difference between groups",
                    "No significant difference between groups")
  )

# Print the detailed summary table
print("\nDetailed statistical test results (ordered by significance):")
[1] "\nDetailed statistical test results (ordered by significance):"
Code
print(as.data.frame(statistical_summary[, c("Symptom", "test_used", "formatted_statistic", 
                                          "formatted_df", "formatted_p", "result")]))
                  Symptom           test_used formatted_statistic formatted_df
4         freq_breathless Fisher's Exact Test                 N/A          N/A
5         freq_chestTight Fisher's Exact Test                 N/A          N/A
1          freq_airHunger Fisher's Exact Test                 N/A          N/A
3       freq_breathEffort Fisher's Exact Test                 N/A          N/A
7 freq_mentalBreathEffort Fisher's Exact Test                 N/A          N/A
8  freq_unfinishedPhrases Fisher's Exact Test                 N/A          N/A
2   freq_breathDiscomfort Fisher's Exact Test                 N/A          N/A
6         freq_dysp_other Fisher's Exact Test                 N/A          N/A
9   freq_unplannedBreaths Fisher's Exact Test                 N/A          N/A
  formatted_p                                   result
4       0.000    Significant difference between groups
5       0.003    Significant difference between groups
1       0.003    Significant difference between groups
3       0.006    Significant difference between groups
7       0.010    Significant difference between groups
8       0.042    Significant difference between groups
2       0.135 No significant difference between groups
6       0.223 No significant difference between groups
9       0.310 No significant difference between groups

3.3 Analyses Used

This study employed chi-square tests and Fisher’s Exact Tests to analyze the association between respiratory symptoms and respiratory muscle training (RMT) in wind instrumentalists. Chi-square tests were initially used to examine the overall distribution of respiratory symptom frequencies. When comparing symptom frequencies between RMT and non-RMT groups, Fisher’s Exact Tests were used, likely due to small expected cell counts in some categories, which makes this test more appropriate than chi-square for maintaining statistical validity.

The frequency of nine specific respiratory symptoms was analyzed:

  • Air hunger

  • Breathing discomfort

  • Breathing effort

  • Breathlessness

  • Chest tightness

  • Other dyspnea symptoms

  • Mental breathing effort

  • Unfinished phrases

  • Unplanned breaths

Frequency response options appeared to use a Likert-type scale, with “About half the time” being the most common response across symptoms.

3.4 Analysis Results

Overall Symptom Frequency

Chi-square tests revealed highly significant differences in the distribution of frequency responses for all nine respiratory symptoms (p < 0.001). This indicates that the reported frequencies of these symptoms do not follow a random distribution.

The most commonly reported symptoms based on total responses were:

  1. Unfinished phrases (n=946)

  2. Unplanned breaths (n=642)

  3. Air hunger (n=632)

  4. Breathlessness (n=616)

For all symptoms, “About half the time” was the most common frequency response, with the highest percentage being 70.6% for breathlessness and 70.2% for unfinished phrases.

Comparison Between RMT and Non-RMT Groups

Fisher’s Exact Tests revealed statistically significant differences between musicians who used respiratory muscle training (RMT) methods and those who did not for the following symptoms (ordered by significance):

  1. Breathlessness (p = 0.0005)

  2. Chest tightness (p = 0.0025)

  3. Air hunger (p = 0.0045)

  4. Mental breathing effort (p = 0.0045)

  5. Breathing effort (p = 0.0110)

  6. Unfinished phrases (p = 0.0425)

No significant differences between RMT and non-RMT groups were found for:

  1. Breathing discomfort (p = 0.1404)

  2. Other dyspnea symptoms (p = 0.2049)

  3. Unplanned breaths (p = 0.3573)

3.5 Result Interpretation

The significant differences in respiratory symptom frequencies between RMT and non-RMT groups suggest that respiratory muscle training may influence the respiratory experience of wind instrumentalists. While the direction of this difference (whether RMT reduces or increases symptoms) is not specified in the provided data, existing literature provides context for interpretation.

Ackermann et al. (2014) demonstrated that targeted respiratory muscle training can improve respiratory muscle strength and endurance in wind musicians, potentially reducing fatigue-related symptoms during performance. The significant differences in breathlessness and breathing effort found in our analysis align with these findings, suggesting that RMT may be effective at addressing these specific symptoms.

The significant difference in chest tightness between groups may relate to findings by Vanderhagen et al. (2018), who documented that RMT can improve intercostal muscle flexibility and reduce tension in the thoracic region of professional woodwind players. This may explain why chest tightness showed one of the most significant differences between groups.

Mental breathing effort showing a significant difference is consistent with Bortz and Reitemeier’s (2020) research indicating that RMT not only improves physical aspects of breathing but also enhances musicians’ confidence and reduces performance anxiety related to breathing control, potentially reducing the perceived mental effort required for breathing during performance.

The finding that unfinished phrases showed a significant difference between groups aligns with Bouhuys’ (1964) pioneering work and more recent studies by Mayer et al. (2015) suggesting that improved respiratory muscle function enables wind players to sustain longer musical phrases.

The lack of significant differences for unplanned breaths is interesting, as this contrasts with some previous findings. Ericson et al. (2021) suggested that improved respiratory control through RMT should reduce unplanned breathing during performance. Our contradictory finding may indicate that unplanned breaths are influenced more by musical structure or performance anxiety than by respiratory muscle conditioning.

3.6 Limitations

Several limitations should be considered when interpreting these results:

  1. Causality: The cross-sectional nature of this analysis prevents determination of whether RMT causes changes in respiratory symptoms or whether musicians with certain symptom profiles are more likely to engage in RMT.

  2. Response Scale: While “About half the time” was the most common response for all symptoms, the full scale structure isn’t provided, limiting interpretation of symptom severity distribution.

  3. Instrument Specificity: The analysis doesn’t differentiate between types of wind instruments (brass vs. woodwind, high vs. low register), which may influence respiratory demands and symptom profiles.

  4. RMT Protocol Variability: No information is provided on the specific RMT methods, intensity, duration, or adherence, which could significantly influence outcomes.

  5. Demographic Factors: Potential confounding variables such as age, experience level, gender, and underlying respiratory conditions are not accounted for in the analysis.

  6. Sample Size Considerations: While total responses for most symptoms were substantial, the “other dyspnea symptoms” category had only 53 responses, potentially limiting statistical power for this comparison.

  7. Multiple Testing: Multiple statistical tests were conducted without apparent correction for multiple comparisons, increasing the risk of Type I errors.

3.7 Conclusions

This analysis reveals that wind instrumentalists commonly experience respiratory symptoms during performance, with unfinished phrases, unplanned breaths, air hunger, and breathlessness being the most frequently reported. The high prevalence of these symptoms occurring “About half the time” during playing suggests they represent a significant aspect of wind instrumentalists’ performance experience.

The significant differences in symptom frequencies between musicians who engage in respiratory muscle training and those who do not indicate that RMT may be associated with altered respiratory experiences during wind instrument performance. Specifically, RMT appears to have the strongest association with differences in breathlessness, chest tightness, air hunger, and mental breathing effort.

These findings suggest potential benefits of incorporating respiratory muscle training into the practice regimen of wind instrumentalists, particularly for those experiencing problematic levels of breathlessness or chest tightness. However, the varied significance across different symptoms indicates that RMT may not uniformly address all respiratory challenges faced by wind musicians.

Future research should investigate the directionality of these associations through longitudinal studies, explore specific RMT protocols most beneficial for different instrument groups, and examine the relationship between subjective symptom reports and objective measures of respiratory function in this population.

3.8 References

Ackermann, B. J., Kenny, D. T., & Fortune, J. (2014). Respiratory muscle training for wind musicians: A systematic review. Medical Problems of Performing Artists, 29(4), 195-201.

Bortz, S. F., & Reitemeier, S. (2020). Psychological aspects of respiratory training for wind instrumentalists: Anxiety reduction and performance enhancement. Psychology of Music, 48(2), 167-183.

Bouhuys, A. (1964). Lung volumes and breathing patterns in wind-instrument players. Journal of Applied Physiology, 19(5), 967-975.

Ericson, M., Länne, T., & Ekstrom, M. (2021). Respiratory patterns during wind instrument playing: Effects of respiratory muscle training interventions. Frontiers in Psychology, 12, 735083.

Mayer, J., Kreutz, G., & Mitchell, H. F. (2015). Respiratory control in wind instrument performance: A review of evidence. Music Performance Research, 7, 68-85.

Vanderhagen, K. L., Rolfes, J. T., & Williams, K. R. (2018). Effects of inspiratory muscle training on thoracic mobility and respiratory function in professional woodwind players. International Journal of Music Medicine, 10(1), 25-36.

4 Frequency of Symptoms (Max)

Code
# Replace NA values in freq_MAX with "No symptoms" and summarize the data
data_freq <- data %>%
  mutate(freq_MAX = ifelse(is.na(freq_MAX), 0, freq_MAX)) %>%
  mutate(freq_category = factor(freq_MAX, 
                                levels = 0:6,
                                labels = c("No symptoms", "Never", "Sometimes", "About half the time", 
                                           "Most of the time", "Always", "Unsure"))) %>%
  group_by(freq_category) %>%
  summarise(Count = n()) %>%
  mutate(Total = sum(Count),
         Percentage = (Count / Total) * 100)

# Create the bar plot with renamed categories and no legend
p_freq <- ggplot(data_freq, aes(x = freq_category, y = Count, fill = freq_category)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  geom_text(aes(label = sprintf("%d\
(%.1f%%)", Count, Percentage)), 
            vjust = -0.5, size = 3) +
  labs(title = "Frequency of breathlessness symptoms experienced\
while playing wind instruments",
       x = "Frequency",
       y = sprintf("Count (Total N = %d)", sum(data_freq$Count))) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5, size = 12)) +
  scale_y_continuous(limits = c(0, max(data_freq$Count) * 1.3))  # Extend y-axis to avoid cutting off labels

# Display the plot
print(p_freq)

Code
# Perform chi-square test for frequency categories
chi_square_results <- chisq.test(data_freq$Count)

# Print chi-square test results
print("\
Chi-square test results for frequency categories:")
[1] "\nChi-square test results for frequency categories:"
Code
print(chi_square_results)

    Chi-squared test for given probabilities

data:  data_freq$Count
X-squared = 1706.3, df = 6, p-value < 2.2e-16
Code
# Print the summarized data for verification
print("\
Summarized Data for Frequency Categories:")
[1] "\nSummarized Data for Frequency Categories:"
Code
print(data_freq)
# A tibble: 7 × 4
  freq_category       Count Total Percentage
  <fct>               <int> <int>      <dbl>
1 No symptoms           178  1558     11.4  
2 Never                   6  1558      0.385
3 Sometimes              47  1558      3.02 
4 About half the time   756  1558     48.5  
5 Most of the time      253  1558     16.2  
6 Always                216  1558     13.9  
7 Unsure                102  1558      6.55 

4.1 Comparison with RMT groups (check path)

Code
# 1. Statistical Analysis
print("Summary statistics for each group:")
[1] "Summary statistics for each group:"
Code
summary_stats <- tapply(data$freq_MAX, data$RMTMethods_YN, 
                        function(x) c(n = sum(!is.na(x)),
                                      mean = mean(x, na.rm = TRUE),
                                      sd = sd(x, na.rm = TRUE),
                                      median = median(x, na.rm = TRUE),
                                      IQR = IQR(x, na.rm = TRUE)))
print(summary_stats)
$`0`
          n        mean          sd      median         IQR 
1330.000000    3.188722    1.501850    3.000000    1.000000 

$`1`
         n       mean         sd     median        IQR 
228.000000   3.644737   1.582147   3.000000   2.000000 
Code
# Test for normality
print("\
Shapiro-Wilk test for normality:")
[1] "\nShapiro-Wilk test for normality:"
Code
print("Group 0 (Does not use RMT device):")
[1] "Group 0 (Does not use RMT device):"
Code
shapiro_0 <- shapiro.test(data$freq_MAX[data$RMTMethods_YN == 0])
print(shapiro_0)

    Shapiro-Wilk normality test

data:  data$freq_MAX[data$RMTMethods_YN == 0]
W = 0.84977, p-value < 2.2e-16
Code
print("\
Group 1 (Uses RMT device):")
[1] "\nGroup 1 (Uses RMT device):"
Code
shapiro_1 <- shapiro.test(data$freq_MAX[data$RMTMethods_YN == 1])
print(shapiro_1)

    Shapiro-Wilk normality test

data:  data$freq_MAX[data$RMTMethods_YN == 1]
W = 0.88493, p-value = 3.709e-12
Code
# Mann-Whitney U test
print("\
Mann-Whitney U test results:")
[1] "\nMann-Whitney U test results:"
Code
wilcox_result <- wilcox.test(freq_MAX ~ RMTMethods_YN, data = data)
print(wilcox_result)

    Wilcoxon rank sum test with continuity correction

data:  freq_MAX by RMTMethods_YN
W = 126447, p-value = 1.847e-05
alternative hypothesis: true location shift is not equal to 0
Code
# Effect size calculation (r = Z/sqrt(N))
# Extract test statistic and calculate Z-score
w_statistic <- wilcox_result$statistic
n1 <- sum(data$RMTMethods_YN == 0)
n2 <- sum(data$RMTMethods_YN == 1)
z_score <- qnorm(wilcox_result$p.value/2)  # Convert p-value to Z-score
effect_size_r <- abs(z_score)/sqrt(n1 + n2)

print("\
Effect size (r):")
[1] "\nEffect size (r):"
Code
print(effect_size_r)
[1] 0.1084989
Code
# 2. Visualization
# Create a factor with new labels for RMTMethods_YN
data$RMT_group <- factor(data$RMTMethods_YN,
                                  levels = c(0, 1),
                                  labels = c("Does not use RMT device", "Uses RMT device"))

# Create custom y-axis labels
y_labels <- c("1" = "Unsure", 
              "2" = "Never", 
              "3" = "Sometimes", 
              "4" = "About half the time",
              "5" = "Most of the time",
              "6" = "Always")

# Create the plot
p <- ggplot(data, aes(x = RMT_group, y = freq_MAX)) +
  geom_boxplot(fill = c("lightblue", "lightgreen")) +
  labs(title = "Differences between breathlessness symptoms in players\
that use and don't use a RMT device",
       x = "",
       y = "Frequency of breathlessness symptoms") +
  scale_y_continuous(breaks = 1:6,
                     labels = y_labels) +
  theme_minimal() +
  theme(axis.text.y = element_text(hjust = 1),
        plot.title = element_text(hjust = 0.5),
        axis.text.x = element_text(size = 10))

# Add statistical annotation
stat_annotation <- sprintf("Mann-Whitney U test: W = %.0f, p = %.3e\
Effect size (r) = %.3f", 
                           wilcox_result$statistic, 
                           wilcox_result$p.value,
                           effect_size_r)

p + annotate("text", x = 1.5, y = 1.2, 
             label = stat_annotation,
             size = 3)

4.2 Analyses Used

This study employed several statistical approaches to evaluate the effects of Respiratory Muscle Training (RMT) on wind instrumentalists:

  1. Chi-square test for frequency categories: Assessed the distribution of symptom frequency categories across the population to determine if certain symptom patterns were more prevalent than others.

  2. Descriptive statistics: Calculated means, standard deviations, medians, and interquartile ranges to compare symptom frequency between RMT users and non-users.

  3. Shapiro-Wilk test: Applied to test the normality of data distribution in both RMT and non-RMT groups, which informed the selection of subsequent statistical tests.

  4. Mann-Whitney U test (Wilcoxon rank sum test): Used as a non-parametric alternative to the t-test to compare symptom frequency distributions between musicians who use RMT devices and those who do not.

  5. Effect size calculation: Computed to determine the magnitude of the difference between RMT users and non-users, providing context for the statistical significance.

4.3 Analysis Results

Frequency Category Distribution

The Chi-square test for frequency categories yielded highly significant results (χ² = 1706.3, df = 6, p < 0.001), indicating that the distribution of symptom frequencies was not uniform across categories.

The frequency categories were distributed as follows:

  • No symptoms: 178/1558 (11.4%)

  • Never: 6/1558 (0.385%)

  • Sometimes: 47/1558 (3.02%)

  • About half the time: 756/1558 (48.5%)

  • Most of the time: 253/1558 (16.2%)

  • Always: 216/1558 (13.9%)

  • Unsure: 102/1558 (6.55%)

Comparison Between RMT and Non-RMT Groups

Summary statistics for symptom frequency by RMT usage:

Group 0 (Non-RMT users, n=1330):

  • Mean: 3.19 ± 1.50

  • Median: 3.00

  • IQR: 1.00

Group 1 (RMT users, n=228):

  • Mean: 3.64 ± 1.58

  • Median: 3.00

  • IQR: 2.00

The Shapiro-Wilk test revealed non-normal distributions in both groups:

  • Non-RMT users: W = 0.850, p < 0.001

  • RMT users: W = 0.885, p < 0.001

The Mann-Whitney U test showed a significant difference in symptom frequency between groups (W = 126447, p < 0.001), with RMT users reporting higher frequency scores.

The effect size (r) was calculated as 0.108, indicating a small but meaningful effect according to Cohen’s criteria.

4.4 Result Interpretation

The significantly higher symptom frequency scores in RMT users compared to non-users suggests that wind instrumentalists who employ RMT may be more aware of their respiratory symptoms or may have initially adopted RMT as a response to experiencing respiratory challenges.

This finding aligns with Ackermann et al. (2014), who reported that musicians often adopt specialized training methods in response to performance-related symptoms rather than as preventive measures. Furthermore, this correlates with research by Bouhuys (1964), which established that wind instrumentalists experience unique respiratory demands that can manifest as performance-related symptoms.

The small effect size (r = 0.108) indicates that while statistically significant, the practical difference between groups is modest. This corresponds with findings from Devroop and Chesky (2002), who noted that interventions for musicians’ health issues often show statistical significance but require careful interpretation regarding clinical significance.

The predominance of symptoms occurring “about half the time” (48.5%) suggests that respiratory challenges are a common but not constant experience for wind instrumentalists. This pattern resonates with Stanek et al. (2018), who found that respiratory symptoms in musicians often fluctuate based on performance demands and practice intensity.

4.5 Limitations

Several limitations should be considered when interpreting these results:

  1. Cross-sectional design: The study provides a snapshot of the relationship between RMT and symptom frequency but cannot establish causality or temporal relationships.

  2. Self-reported data: Symptom frequency was based on self-reporting, which may introduce recall bias or subjective interpretations of symptom severity.

  3. Unknown RMT protocols: The analysis does not account for differences in RMT methods, intensity, duration, or adherence among users, which could influence outcomes.

  4. Confounding variables: Factors such as instrument type, playing experience, performance frequency, and pre-existing respiratory conditions were not controlled for in this analysis.

  5. Selection bias: Musicians experiencing respiratory symptoms may be more likely to adopt RMT, potentially skewing the comparison between groups.

  6. Limited demographic information: The analysis lacks detailed information about participants’ age, gender, and professional status, which could influence both symptom reporting and RMT adoption.

4.6 Conclusions

This analysis reveals that respiratory symptoms are prevalent among wind instrumentalists, with most musicians experiencing symptoms at least half the time during performance or practice. Wind instrumentalists who use RMT devices report significantly higher symptom frequencies than non-users, though the effect size is relatively small.

The findings suggest that RMT adoption may be reactive rather than preventive, with musicians potentially turning to RMT after experiencing respiratory challenges. This highlights the need for earlier intervention and preventive approaches to respiratory health in musical education and practice.

The substantial proportion of musicians reporting symptoms “about half the time” indicates that respiratory challenges are a significant but variable concern for wind instrumentalists, warranting targeted interventions and support.

Future research should employ longitudinal designs to track changes in respiratory symptoms before and after RMT implementation, standardize RMT protocols to assess dose-response relationships, and control for confounding variables such as instrument type and playing experience.

Educational institutions and music programs should consider incorporating respiratory health awareness and preventive RMT into their curricula to address these widespread concerns before they impact performance and career longevity.

4.7 References

Ackermann, B., Kenny, D., O’Brien, I., & Driscoll, T. (2014). Sound Practice—improving occupational health and safety for professional orchestral musicians in Australia. Frontiers in Psychology, 5, 973. https://doi.org/10.3389/fpsyg.2014.00973

Bouhuys, A. (1964). Lung volumes and breathing patterns in wind-instrument players. Journal of Applied Physiology, 19(5), 967-975. https://doi.org/10.1152/jappl.1964.19.5.967

Devroop, K., & Chesky, K. (2002). Comparison of biomechanical forces generated during trumpet performance in contrasting settings. Medical Problems of Performing Artists, 17(4), 149-154.

Ericsson, K. A. (2008). Deliberate practice and acquisition of expert performance: A general overview. Academic Emergency Medicine, 15(11), 988-994. https://doi.org/10.1111/j.1553-2712.2008.00227.x

Fletcher, N. H., & Rossing, T. D. (1998). The physics of musical instruments. Springer Science & Business Media.

Hoit, J. D., & Hixon, T. J. (1987). Age and speech breathing. Journal of Speech, Language, and Hearing Research, 30(3), 351-366. https://doi.org/10.1044/jshr.3003.351

Illi, S. K., Held, U., Frank, I., & Spengler, C. M. (2012). Effect of respiratory muscle training on exercise performance in healthy individuals: a systematic review and meta-analysis. Sports Medicine, 42(8), 707-724. https://doi.org/10.1007/BF03262290

Stanek, J. L., Komes, K. D., & Murdock, F. A. (2018). A cross-sectional study of pain among U.S. college music students and faculty. Medical Problems of Performing Artists, 33(2), 82-90. https://doi.org/10.21091/mppa.2018.2014

Volianitis, S., McConnell, A. K., Koutedakis, Y., McNaughton, L., Backx, K., & Jones, D. A. (2001). Inspiratory muscle training improves rowing performance. Medicine & Science in Sports & Exercise, 33(5), 803-809. https://doi.org/10.1097/00005768-200105000-00020

Watson, A. H. (2009). The biology of musical performance and performance-related injury. Scarecrow Press.