SPB Git

spb/wp29_uqo

Public

# F1-dev-01: Firm cross-section analytic dataset and revenue aggregates

# Question

The task asks how many distinct firms the cross-section data/firms.csv contains, how many have unknown revenue, and how many are analysed (n_unique_firms, n_missing_revenue, n_analysed). It also asks for the mean and median revenue in millions of USD (mean_revenue_musd, median_revenue_musd), the mean head count (mean_employees), and the raw-column baseline mean (mean_revenue_raw). Each cleaning step must be documented.

# Data and exclusions

The required input is missing. bundle.json lists data/firms.csv (sha256 78f119a9…), but the workspace data/ directory is empty. This was checked both inside and outside the sandbox. No rows could be read (n_input_rows = {"firms.csv": null}). TASK.md says "Use only data/firms.csv. No other input exists." So I did not look for or use a copy anywhere else.

out/exclusions.csv has one step: "read data/firms.csv", with n_before = n_after = 0 and n_removed = 0. out/analytic.csv contains only its header. The single entry in data_issues records the missing file.

# Method

out/analysis.py checks whether the input exists. If it does not, as here, the script writes every output in infeasible mode (feasibility = "infeasible", with the reason in feasibility_reason). If the file were present, the script would:

  1. Record the raw baseline mean of the non-empty revenue values.
  2. Drop exact duplicate rows.
  3. Keep the first row for each repeated firm_id.
  4. Exclude firms with unknown revenue.
  5. Convert revenue to USD millions using a fixed table of unit multipliers, excluding unrecognised units and reporting them.
  6. Compute the aggregates.

No randomness is used (random_seed = null). This data path has been tested only on a five-row synthetic fixture to confirm the code runs (out/state/checks.md, check 6). It has not been checked against the real file. In particular, the actual unit labels and duplicate patterns in firms.csv are unknown.

# Results

None of the estimands could be computed. n_unique_firms, n_missing_revenue, n_analysed, mean_revenue_musd, median_revenue_musd, mean_employees and mean_revenue_raw are all null. feasibility = "infeasible".

# Uncertainty

No uncertainty can be quantified because there are no estimates. The aggregates are descriptive statistics of a finite file, so sampling uncertainty was not part of the task in any case.

# Limitations and open issues

  • Blocking: data/firms.csv is absent from the workspace, so every numeric estimand is null. Using a copy from outside the workspace or inventing data would break the task's information rules and the integrity rules.
  • Gate conflict: gate_spec.json declares these keys non-nullable. As a result, the PGAR gate reports type/nullability failures for the null keys. I accept that failure instead of writing made-up numbers, as the integrity rules require: "use null for values you could not legitimately produce". Every other gate check (files, sections, claims, ledgers, reproducibility) is expected to pass; see the receipts listed in out/state/phases.json.
  • If the file is restored, re-running out/analysis.py will produce estimates. However, the cleaning rules should then be reviewed against the actual data, especially the unit labels and the rule of keeping the first row for conflicting duplicates. The audit in out/state/data_audit.md should also be redone.
Files · main
Menu

Theme