Skill Tracer
Skills › Scientific Agent Skills › market-research-reports › data_analysis_patterns.md

data_analysis_patterns.md

292 lines · skills/market-research-reports/references/data_analysis_patterns.md at 5f2bc03

Open on GitHub
1# Data Analysis Patterns for Market Research
2

Data Analysis Patterns for Market Research

Raw lines 1 to 2
3## Measurement contract
4
5Define the quantity before collecting numbers:
6
7- product/service inclusion and exclusion;
8- buyer, user, payer, and transaction type;
9- geography and treatment of imports/exports;
10- historical period, forecast horizon, and as-of date;
11- revenue, expenditure, gross output, value added, units, capacity, users, or
12 another measure;
13- stock versus flow;
14- gross versus net, taxes included/excluded, and channel level;
15- currency, exchange-rate convention, base year, and nominal/real basis;
16- industry and product taxonomy with version;
17- denominator ID used in every share or rate.
19If two estimates do not share this contract, they are not directly comparable.

Measurement contract

Define the quantity before collecting numbers:

  • product/service inclusion and exclusion;
  • buyer, user, payer, and transaction type;
  • geography and treatment of imports/exports;
  • historical period, forecast horizon, and as-of date;
  • revenue, expenditure, gross output, value added, units, capacity, users, or another measure;
  • stock versus flow;
  • gross versus net, taxes included/excluded, and channel level;
  • currency, exchange-rate convention, base year, and nominal/real basis;
  • industry and product taxonomy with version;
  • denominator ID used in every share or rate.

If two estimates do not share this contract, they are not directly comparable.

Raw lines 3 to 20
21## TAM, SAM, and SOM
23Treat all three as conditional scenario constructs.

TAM, SAM, and SOM

Treat all three as conditional scenario constructs.

Raw lines 21 to 24
25### Definitions
27- **TAM**: value or volume of all in-scope demand under the stated market
28 definition and time basis.
29- **SAM**: subset of TAM serviceable under explicit product, geography,
30 regulatory, channel, capacity, and customer constraints.
31- **SOM**: subset of SAM obtainable within a stated time horizon under explicit
32 competitive, operational, sales, retention, and capacity assumptions.
34Never present SOM as a guaranteed share or TAM as an objective universal truth.

Definitions

  • TAM: value or volume of all in-scope demand under the stated market definition and time basis.
  • SAM: subset of TAM serviceable under explicit product, geography, regulatory, channel, capacity, and customer constraints.
  • SOM: subset of SAM obtainable within a stated time horizon under explicit competitive, operational, sales, retention, and capacity assumptions.

Never present SOM as a guaranteed share or TAM as an objective universal truth.

Raw lines 25 to 35
36### Top-down method
38Use disjoint components:
40```text
41TAM_top = sum(value_i * in_scope_fraction_i)
42```
44Each component needs a unique coverage key, source IDs, period, unit, and
45denominator. Do not apply a broad percentage to an unrelated aggregate merely
46because the resulting number looks plausible.

Top-down method

Use disjoint components:

TAM_top = sum(value_i * in_scope_fraction_i)

Each component needs a unique coverage key, source IDs, period, unit, and denominator. Do not apply a broad percentage to an unrelated aggregate merely because the resulting number looks plausible.

Raw lines 36 to 47
48### Bottom-up method
50For a recurring-use market:
52```text
53component_i =
54 customer_count_i
55 * addressable_fraction_i
56 * annual_quantity_per_customer_i
57 * price_per_unit_i
59TAM_bottom = sum(component_i)
60```
62Alternative physical-capacity models may use installed base, utilization,
63replacement cycle, throughput, or transactions. Keep dimensions explicit so
64the resulting unit can be checked.

Bottom-up method

For a recurring-use market:

component_i =
    customer_count_i
  * addressable_fraction_i
  * annual_quantity_per_customer_i
  * price_per_unit_i

TAM_bottom = sum(component_i)

Alternative physical-capacity models may use installed base, utilization, replacement cycle, throughput, or transactions. Keep dimensions explicit so the resulting unit can be checked.

Raw lines 48 to 65
66### SAM and SOM
68```text
69SAM_s = TAM * serviceable_fraction_s
70SOM_s = SAM_s * obtainable_share_s
71```
73The fractions belong to scenario `s`. At minimum, use distinct downside and
74upside cases; a base case is usually useful. For each case, list assumptions,
75evidence, constraints, and horizon. Do not assign probabilities without a
76validated probabilistic model.

SAM and SOM

SAM_s = TAM * serviceable_fraction_s
SOM_s = SAM_s * obtainable_share_s

The fractions belong to scenario s. At minimum, use distinct downside and upside cases; a base case is usually useful. For each case, list assumptions, evidence, constraints, and horizon. Do not assign probabilities without a validated probabilistic model.

Raw lines 66 to 77
78### Preventing double counting
80Common failures:
82- adding manufacturer revenue to distributor or end-customer spend;
83- adding domestic production, imports, and sales without subtracting exports,
84 inventories, or overlapping channels;
85- summing parent and subsidiary revenue;
86- adding product bundles and their included components;
87- combining gross output and value added;
88- counting the same establishment in multiple segment labels;
89- adding annual transactions to installed-base stock;
90- applying overlapping geography or customer filters independently.
92Controls:
941. assign a unique coverage key to every component;
952. use mutually exclusive, collectively understood segments;
963. define a single denominator ID;
974. draw money and product flows through the value chain;
985. reconcile supply, use, trade, inventory, and channel margins;
996. show an ``unallocated/unknown'' residual rather than forcing totals;
1007. test the sum against an independent control total.
102Supply-use tables distinguish products from industries and the origin/use of
103goods and services. Use the
104[OECD Supply and Use Tables](https://www.oecd.org/en/data/datasets/supply-and-use-tables.html)
105and national accounts methodology when the value chain spans intermediate and
106final demand.

Preventing double counting

Common failures:

  • adding manufacturer revenue to distributor or end-customer spend;
  • adding domestic production, imports, and sales without subtracting exports, inventories, or overlapping channels;
  • summing parent and subsidiary revenue;
  • adding product bundles and their included components;
  • combining gross output and value added;
  • counting the same establishment in multiple segment labels;
  • adding annual transactions to installed-base stock;
  • applying overlapping geography or customer filters independently.

Controls:

  1. assign a unique coverage key to every component;
  2. use mutually exclusive, collectively understood segments;
  3. define a single denominator ID;
  4. draw money and product flows through the value chain;
  5. reconcile supply, use, trade, inventory, and channel margins;
  6. show an ``unallocated/unknown'' residual rather than forcing totals;
  7. test the sum against an independent control total.

Supply-use tables distinguish products from industries and the origin/use of goods and services. Use the OECD Supply and Use Tables and national accounts methodology when the value chain spans intermediate and final demand.

Raw lines 78 to 107
108### Reconciliation
110Keep methods separate:
112```text
113absolute_gap = abs(TAM_top - TAM_bottom)
114midpoint = (TAM_top + TAM_bottom) / 2
115gap_percent = absolute_gap / midpoint
116```
118Investigate gaps in this order:
1201. definition and denominator;
1212. geography, period, currency, and price basis;
1223. taxonomy and segment concordance;
1234. gross/net, taxes, channel margins, imports/exports;
1245. missing or duplicate coverage;
1256. source revision and sample limitations;
1267. price, volume, penetration, and utilization assumptions.
128Do not average the methods until their scopes are demonstrably compatible. If
129uncertainty remains, report both or retain a range.

Reconciliation

Keep methods separate:

absolute_gap = abs(TAM_top - TAM_bottom)
midpoint = (TAM_top + TAM_bottom) / 2
gap_percent = absolute_gap / midpoint

Investigate gaps in this order:

  1. definition and denominator;
  2. geography, period, currency, and price basis;
  3. taxonomy and segment concordance;
  4. gross/net, taxes, channel margins, imports/exports;
  5. missing or duplicate coverage;
  6. source revision and sample limitations;
  7. price, volume, penetration, and utilization assumptions.

Do not average the methods until their scopes are demonstrably compatible. If uncertainty remains, report both or retain a range.

Raw lines 108 to 130
131## Growth and forecasts

Growth and forecasts

Raw lines 131 to 132
133### Historical growth
135```text
136YoY_t = value_t / value_(t-1) - 1
137CAGR = (end / start)^(1 / periods) - 1
138```
140CAGR compresses the path. Always show start/end values and period count. It is
141undefined when the start is nonpositive and can hide volatility, breaks, and
142revisions.

Historical growth

YoY_t = value_t / value_(t-1) - 1
CAGR = (end / start)^(1 / periods) - 1

CAGR compresses the path. Always show start/end values and period count. It is undefined when the start is nonpositive and can hide volatility, breaks, and revisions.

Raw lines 133 to 143
144### Scenario forecast
146```text
147value_(t+1,s) = value_(t,s) * (1 + growth_rate_(t,s))
148```
150Build rate paths from named drivers rather than copying a paid headline
151forecast. Separate:
153- historical observed period;
154- nowcast or estimate period;
155- conditional forecast period.
157For each scenario, state demand, price, supply, regulation, competition,
158capacity, and timing assumptions. Use different paths, not merely different
159labels.

Scenario forecast

value_(t+1,s) = value_(t,s) * (1 + growth_rate_(t,s))

Build rate paths from named drivers rather than copying a paid headline forecast. Separate:

  • historical observed period;
  • nowcast or estimate period;
  • conditional forecast period.

For each scenario, state demand, price, supply, regulation, competition, capacity, and timing assumptions. Use different paths, not merely different labels.

Raw lines 144 to 160
161### Sensitivity
163One-way sensitivity varies one input while holding others fixed. Report:
165- tested range and rationale;
166- resulting endpoints;
167- switching value where the decision changes;
168- nonlinearities or constraints;
169- interactions omitted by one-way analysis.
171Scenario analysis explores coherent joint states. It is not a confidence
172interval. Statistical prediction intervals require a specified model, error
173process, diagnostics, and coverage interpretation.
175The reinstated 2003
176[OMB Circular A-4](https://www.whitehouse.gov/wp-content/uploads/2025/08/CircularA-4.pdf)
177provides primary guidance on characterizing uncertainty, sensitivity, and
178transparent assumptions. The 2023 revision was revoked by
179[memorandum M-25-15](https://www.whitehouse.gov/wp-content/uploads/2025/03/M-25-15-Recission-and-Reinstatement-of-Circular-A-4.pdf);
180do not present it as current OMB guidance. The
181[UK Green Book 2026](https://www.gov.uk/government/publications/the-green-book-appraisal-and-evaluation-in-central-government/the-green-book-2026)
182provides additional public-sector appraisal guidance. Adapt principles
183proportionately; do not imply that a market report is a regulatory appraisal.

Sensitivity

One-way sensitivity varies one input while holding others fixed. Report:

  • tested range and rationale;
  • resulting endpoints;
  • switching value where the decision changes;
  • nonlinearities or constraints;
  • interactions omitted by one-way analysis.

Scenario analysis explores coherent joint states. It is not a confidence interval. Statistical prediction intervals require a specified model, error process, diagnostics, and coverage interpretation.

The reinstated 2003 OMB Circular A-4 provides primary guidance on characterizing uncertainty, sensitivity, and transparent assumptions. The 2023 revision was revoked by memorandum M-25-15; do not present it as current OMB guidance. The UK Green Book 2026 provides additional public-sector appraisal guidance. Adapt principles proportionately; do not imply that a market report is a regulatory appraisal.

Raw lines 161 to 184
185## Units, currencies, and price bases

Units, currencies, and price bases

Raw lines 185 to 186
187### Nominal and real
189- **Nominal/current-price** values reflect prices in each period.
190- **Real/constant-price** values remove price change using an identified
191 deflator and base/reference year.
192- Never combine nominal and real values in one total or growth rate.
193- Match nominal values to nominal assumptions and real values to real
194 assumptions.
196Record:
198```text
199real_value_base_year = nominal_value_t * price_index_base / price_index_t
200```
202Identify the index, geography, category, vintage, and whether it is appropriate
203for the market. A broad CPI may be unsuitable for a specialized B2B input.

Nominal and real

  • Nominal/current-price values reflect prices in each period.
  • Real/constant-price values remove price change using an identified deflator and base/reference year.
  • Never combine nominal and real values in one total or growth rate.
  • Match nominal values to nominal assumptions and real values to real assumptions.

Record:

real_value_base_year = nominal_value_t * price_index_base / price_index_t

Identify the index, geography, category, vintage, and whether it is appropriate for the market. A broad CPI may be unsuitable for a specialized B2B input.

Raw lines 187 to 204
205### Chained measures
207Chained-dollar components may not add to published aggregates. BEA's
208[chained-dollar guidance](https://www.bea.gov/resources/methodologies/chained-dollar-indexes)
209explains why. Use published contributions to growth or current-dollar
210composition rather than forcing additivity.

Chained measures

Chained-dollar components may not add to published aggregates. BEA's chained-dollar guidance explains why. Use published contributions to growth or current-dollar composition rather than forcing additivity.

Raw lines 205 to 211
212### Currency conversion
214Record:
216- source and target currency;
217- spot, period-average, or period-end convention;
218- rate date/period and source;
219- order of currency conversion and deflation;
220- effects of high inflation or multiple exchange-rate regimes.
222Do not mix converted flows using period-end rates with balances using averages
223without explanation.

Currency conversion

Record:

  • source and target currency;
  • spot, period-average, or period-end convention;
  • rate date/period and source;
  • order of currency conversion and deflation;
  • effects of high inflation or multiple exchange-rate regimes.

Do not mix converted flows using period-end rates with balances using averages without explanation.

Raw lines 212 to 224
225### Stock and flow
227A stock is measured at a point in time; a flow over an interval. Installed
228base, employees on a date, and capacity are stocks. Revenue, transactions, and
229shipments during a year are flows. A stock-to-flow conversion requires an
230explicit turnover, utilization, or replacement-cycle assumption.

Stock and flow

A stock is measured at a point in time; a flow over an interval. Installed base, employees on a date, and capacity are stocks. Revenue, transactions, and shipments during a year are flows. A stock-to-flow conversion requires an explicit turnover, utilization, or replacement-cycle assumption.

Raw lines 225 to 231
232## Shares and concentration
234```text
235share_i = in_scope_measure_i / same_scope_total
236HHI = sum((100 * share_i)^2)
237CR4 = sum(four_largest_shares)
238```
240Before computing:
242- define product and geographic scope;
243- use one share metric and denominator;
244- include the same period and channel level;
245- account for unknown/residual firms;
246- disclose whether values are revenue, units, capacity, or active users;
247- avoid false precision when company and total estimates use different methods.
249The [2023 U.S. Merger Guidelines](https://www.justice.gov/atr/merger-guidelines)
250describe HHI as one indicator in case-specific merger analysis. The
251[2024 EU Market Definition Notice](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:C_202401645)
252addresses product/geographic scope, non-price parameters, dynamic and digital
253markets, alternate share metrics, and evidence. A market report's HHI is
254descriptive and is not a legal conclusion.

Shares and concentration

share_i = in_scope_measure_i / same_scope_total
HHI = sum((100 * share_i)^2)
CR4 = sum(four_largest_shares)

Before computing:

  • define product and geographic scope;
  • use one share metric and denominator;
  • include the same period and channel level;
  • account for unknown/residual firms;
  • disclose whether values are revenue, units, capacity, or active users;
  • avoid false precision when company and total estimates use different methods.

The 2023 U.S. Merger Guidelines describe HHI as one indicator in case-specific merger analysis. The 2024 EU Market Definition Notice addresses product/geographic scope, non-price parameters, dynamic and digital markets, alternate share metrics, and evidence. A market report's HHI is descriptive and is not a legal conclusion.

Raw lines 232 to 255
256## Survey and interview synthesis

Survey and interview synthesis

Raw lines 256 to 257
258### Survey estimate
260For a probability sample, report the design-based or model-based estimator,
261weights, design effect, and appropriate uncertainty. Do not infer population
262precision from sample size alone.
264For a non-probability sample, disclose recruitment and model assumptions. Use
265careful labels such as ``among respondents'' unless a validated adjustment
266supports broader inference.

Survey estimate

For a probability sample, report the design-based or model-based estimator, weights, design effect, and appropriate uncertainty. Do not infer population precision from sample size alone.

For a non-probability sample, disclose recruitment and model assumptions. Use careful labels such as ``among respondents'' unless a validated adjustment supports broader inference.

Raw lines 258 to 267
268### Interview themes
270Use a structured coding frame:
272```text
273theme_id | definition | inclusion rule | exclusion rule |
274supporting excerpts | disconfirming excerpts | roles represented
275```
277Report a theme as qualitative evidence. Do not translate mention counts into
278market prevalence.

Interview themes

Use a structured coding frame:

theme_id | definition | inclusion rule | exclusion rule |
supporting excerpts | disconfirming excerpts | roles represented

Report a theme as qualitative evidence. Do not translate mention counts into market prevalence.

Raw lines 268 to 279
280## Confidence labels
282Confidence is an analyst assessment, not a substitute for uncertainty:
284- **High**: directly observed, well-defined primary evidence with compatible
285 scope and low material revision risk.
286- **Medium**: triangulated evidence with manageable assumptions or limitations.
287- **Low**: sparse, conflicting, indirect, modeled, or scope-mismatched evidence.
288- **Not assessed**: opinion or recommendation where an evidence-confidence
289 label is inappropriate.
291Always state the reasons. Multiple low-quality sources do not automatically
292produce high confidence.

Confidence labels

Confidence is an analyst assessment, not a substitute for uncertainty:

  • High: directly observed, well-defined primary evidence with compatible scope and low material revision risk.
  • Medium: triangulated evidence with manageable assumptions or limitations.
  • Low: sparse, conflicting, indirect, modeled, or scope-mismatched evidence.
  • Not assessed: opinion or recommendation where an evidence-confidence label is inappropriate.

Always state the reasons. Multiple low-quality sources do not automatically produce high confidence.

Raw lines 280 to 292