Communicating Results Clearly
In the previous lesson, we learned how to translate model outputs into defensible real-world claims.
Now we take the next step:
How do we communicate those claims clearly to others?
This is where many analyses fail.
Not because the model is wrong.
But because the communication is vague, overstated, too technical, or disconnected from the decision context.
A useful data science result must be understandable to people who did not build the model.
How to Run This Lesson
Run the supporting script from the project root:
python scripts/python/15a_build_results_communication_summary.pyThis creates communication-ready outputs in the reports/ directory:
reports/diabetes-communication-summary.md
reports/diabetes-results-communication-table.csv
Then render the Quarto site:
quarto renderYou can also run the code blocks in this chapter interactively.
The script-based workflow is preferred because it leaves behind a reusable summary that can be reviewed, revised, committed, and shared.
Why Communication Matters
Model results are rarely consumed only by the person who built the model.
They may be read by:
- collaborators
- decision-makers
- clinicians or domain experts
- managers
- students
- clients
- non-technical stakeholders
This means:
clarity is not optional; it is part of the analysis.
A model can be technically correct and still fail if the result is communicated poorly.
Good communication helps others understand:
- what was done
- what the model found
- how strong the result is
- what the result does not prove
- how the result should be used
The Communication Gap
A model produces technical outputs such as:
- coefficients
- metrics
- predictions
- residuals
- feature importance values
- cross-validation summaries
Stakeholders usually need something different.
They need:
- meaning
- context
- evidence strength
- limitations
- implications
- next steps
The work of communication is to bridge this gap without distorting the result.
Good communication is not about making the analysis sound impressive.
It is about making the reasoning visible and trustworthy.
Load Existing Model Outputs
In an applied workflow, communication should be based on saved outputs, not memory.
We start by loading the model metrics saved in earlier lessons.
import pandas as pd
from pathlib import Path
metrics_path = Path("reports/diabetes-model-metrics.csv")
coefficients_path = Path("reports/diabetes-model-coefficients.csv")
metrics_df = pd.read_csv(metrics_path)
coefficients_df = pd.read_csv(coefficients_path)
metrics_dfNow inspect the coefficient table:
coefficients_df.head()These files provide the evidence base for communication.
The goal is not to invent a story after seeing results.
The goal is to translate project outputs into careful statements.
From Technical Output to Clear Statement
Consider two common metrics:
R² = 0.45
MAE = 42.8
A weak communication would be:
The model performs reasonably well.
This is vague.
It does not explain what the numbers mean.
A clearer communication would be:
The model explains about 45% of the variation in disease progression. On average, predictions differ from observed values by about 43 units.
This statement is better because it:
- names the metric
- explains what it represents
- gives approximate values
- avoids overclaiming
Build a Communication Table
We can create a small table that translates technical outputs into stakeholder-facing language.
communication_rows = [
{
"technical_output": "R² score",
"plain_language": "How much outcome variation the model explains",
"careful_statement": "The model explains part of the variation in disease progression, but not all of it."
},
{
"technical_output": "Mean absolute error",
"plain_language": "Average size of prediction error",
"careful_statement": "Predictions differ from observed values by a measurable average amount."
},
{
"technical_output": "Model coefficient",
"plain_language": "How the model changes prediction when a feature changes",
"careful_statement": "A larger coefficient means the model relies more strongly on that feature, not that the feature causes the outcome."
},
{
"technical_output": "Cross-validation variability",
"plain_language": "How much performance changes across data splits",
"careful_statement": "Stable performance across folds increases confidence, but does not prove causation."
}
]
communication_df = pd.DataFrame(communication_rows)
communication_dfThis table is useful because it creates a direct bridge between technical output and responsible interpretation.
Save the Communication Table
Communication outputs should be saved like any other project artifact.
Path("reports").mkdir(exist_ok=True)
communication_df.to_csv(
"reports/diabetes-results-communication-table.csv",
index=False
)
communication_dfThis creates:
reports/diabetes-results-communication-table.csv
A saved communication table can be reused in reports, presentations, README files, and stakeholder summaries.
Explaining Model Performance
A model metric should not be reported without meaning.
Poor communication
The model has an R² of 0.48 and an MAE of 44.3.
This is technically correct, but it assumes the reader knows what the metrics mean.
Better communication
The model explains about 48% of the variation in disease progression. Its predictions are off by about 44 units on average.
This version is more useful because it connects the metric to interpretation.
Better still
The model shows moderate predictive ability. It captures some meaningful signal in the data, but prediction errors remain large enough that results should be interpreted cautiously.
This version adds judgment and limitation.
That is the level needed in applied data science.
Explaining Model Behavior
Instead of simply reporting a coefficient:
BMI coefficient = 529
we should translate what it means.
Poor communication
BMI has a coefficient of 529.
Better communication
Higher BMI values are associated with higher predicted disease progression in this model.
Stronger and safer communication
BMI is one of the stronger predictors used by the model. In this dataset and modeling setup, higher BMI values are associated with higher predicted disease progression. This should be interpreted as a predictive association, not as proof that BMI causes progression.
This is longer, but it is safer and more useful.
It tells the reader what the result means and what it does not mean.
Communicating Uncertainty
All models have uncertainty.
Ignoring uncertainty creates false confidence.
Instead of saying:
The model is accurate.
Say:
The model shows moderate predictive performance.
Instead of saying:
The model is reliable.
Say:
The model shows reasonably stable performance across the evaluations performed here.
Instead of saying:
BMI is the key driver.
Say:
BMI is one of the strongest predictors used by the model in this dataset.
These wording choices matter.
They protect the analysis from claims that are stronger than the evidence.
Avoiding Common Communication Mistakes
Overgeneralization
Avoid:
This applies to all patients.
Prefer:
This result applies to this dataset and may be relevant under similar conditions.
Causal language
Avoid:
BMI causes disease progression.
Prefer:
BMI is associated with predicted disease progression in this model.
Overconfidence
Avoid:
The model is highly reliable.
Prefer:
The model shows reasonable stability, but prediction errors and dataset limitations remain.
Vague conclusions
Avoid:
The model performed well.
Prefer:
The model explains part of the variation in the outcome and has a measurable average prediction error.
Structuring a Clear Result Summary
A clear result summary usually includes six parts.
| Section | Purpose |
|---|---|
| Objective | What problem was addressed? |
| Data context | What data were used? |
| Model summary | What model was applied? |
| Key results | What metrics and patterns were observed? |
| Interpretation | What do the results mean? |
| Limitations | What should not be concluded? |
This structure keeps communication grounded.
It prevents a report from becoming a list of metrics without interpretation.
It also prevents a report from becoming a story without evidence.
Create a Communication Summary
Now we create a short communication-ready summary.
summary_text = """# Diabetes Model Communication Summary
## Objective
Predict disease progression using the available clinical features in the diabetes dataset.
## Model Summary
A linear regression model was used as a baseline predictive model.
## Key Result
The model shows moderate predictive ability. It captures some signal in the data, but prediction errors remain large enough that results should be interpreted cautiously.
## Interpretation
Some features, including BMI-related information, are important predictors in this model. This means the model uses those features to estimate disease progression.
## Limitation
These results describe predictive associations in this dataset. They do not establish causation, clinical effectiveness, or general truth beyond the data and modeling setup.
"""
Path("reports/diabetes-communication-summary.md").write_text(summary_text)
print(summary_text)This creates:
reports/diabetes-communication-summary.md
The summary can be edited further for a stakeholder report, README, presentation, or final case study.
Example of Clear Communication
A clear communication might look like this:
We used a linear regression model to predict disease progression from clinical features. The model showed moderate predictive ability, meaning it captured some useful signal but still made meaningful errors. BMI-related features were among the stronger predictors used by the model. These findings should be interpreted as predictive associations within this dataset, not as evidence that any feature causes disease progression.
This statement is effective because it includes:
- the model type
- the purpose
- the strength of performance
- the main pattern
- the limitation
It is clear without being misleading.
CDI Insight
Good analysis is not complete until it is clearly understood.
A technically correct result can still fail if people misunderstand it.
Clear communication makes the reasoning visible.
Responsible communication keeps the claim aligned with the evidence.
What This Means in Practice
When communicating model results, focus on:
- clarity over complexity
- meaning over metrics
- evidence over excitement
- limitations over false certainty
- decision relevance over technical display
Avoid:
- vague language
- unsupported causal claims
- exaggerated confidence
- unnecessary technical detail
- conclusions that go beyond the data
Communication is not decoration added at the end.
It is part of the analytical system.
Summary
In this lesson, we moved from interpretation to communication.
We:
- loaded saved model outputs
- translated technical outputs into plain-language statements
- created a communication table
- saved a communication-ready summary
- distinguished clear communication from overclaiming
- connected metrics, model behavior, and limitations
The key idea is:
clear communication turns model output into usable understanding without overstating what the model proves.
Next Step
In the next lesson, we move from communication to decision-making.
A model result is useful only when it helps people decide what to do, what not to do, or what to investigate next.
→ From analysis to real-world decision-making