---
title: "BuSuCo: Business Survey Sample Coordination"
author: "Johannes Straubinger and Ralf Münnich"
date: "29 July 2026"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{BuSuCo: Business Survey Sample Coordination}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

## Introduction

The **BuSuCo** package provides functions for coordinating survey samples of businesses across multiple surveys and time periods. Business survey coordination aims to control the overlap between consecutive samples of the same survey and across different surveys while managing the response burden on enterprises.

## Background

Conducting multiple business surveys requires the following to be addressed:

- **Longitudinal coordination**: Samples of the same survey often follow a given rotation scheme and sampling fraction. This has to be applied on each sampling occasion.
- **Cross-survey coordination**: Elements may be eligible to be drawn in multiple samples of different surveys at the same time. The properties of these surveys, i.e. rotation and sampling fraction, periodicity, and survey length often differ. This requires rules to determine which elements to draw for which survey.
- **Response burden management**: Being drawn in a survey creates a burden for enterprises. The perception of this burden depends on a number of factors and can vary from enterprise to enterprise. Coordinating the draws to manage the burden in an appropriate way is therefore preferable.

## Main Functions

### Core Coordination Algorithms

The package implements four different business sample coordination algorithms:

- **`Dutch.BSC()`**: Modified Dutch Business Sample Coordination Algorithm (Smeets & Boonstra, 2018)
- **`French.BSC()`**: Modified French Business Sample Coordination Algorithm (Guggemos & Sautory, 2012; Gros, 2015)
- **`Norwegian.BSC()`**: Modified Norwegian Business Sample Coordination Algorithm (Zhang, 2009)
- **`Swiss.BSC()`**: Modified Swiss Business Sample Coordination Algorithm (Qualité, 2009)

Each algorithm has its own approach to handling response burden, rotation schemes, and simultaneous samples for different surveys. Small modifications have been made to each of them by Straubinger (2025).

### Data Generation

- **`Gen.Data()`**: Generate synthetic business data with Pareto-distributed variables, allowing for population dynamics such as births, deaths, and stratum/domain jumpers.

### Supporting Functions

- **`Survey.relevance()`**: Creates an array indicating survey relevance for each element
- **`Stratify()`**: Creates an array indicating stratum membership of each element
- **`uneq.sample()`**: Draws samples with unequal probabilities (with/without replacement)
- **`target.corr.sort()`**: Rearranges data to achieve a targetted correlation between variables
- **`nearest.neighbour()`**: Finds the nearest neighbours of elements
- **`random.order()`**: Randomly reorders elements of a dataset
- **`is.in.interval()`**: Checks whether a number is within a given interval

## Basic Workflow

### Step 1: Generate or Load Data

```{r, eval = FALSE}
library(BuSuCo)

# Generate synthetic business data
DATA <- Gen.Data(
  N = 1000,
  periods = 5,
  D = 2,
  D.probs = c(0.8, 0.2),
  H = 3,
  borders = c(100, 500),
  corr.B.U = 0.75
)
```

### Step 2: Define Survey Relevance

```{r, eval = FALSE}
# Define which enterprises are relevant for each survey
Sur_rel <- Survey.relevance(
  DATA,
  periods = 5,
  years = c(1, 2),
  domains.survey = list(1:2, 1),
  ge.or.less = c("ge", "l"),
  TO.or.EM = c("TO", "EM"),
  size.class = c(0, 5)
)
```

### Step 3: Create Strata

```{r, eval = FALSE}
# Stratify the population
strat <- Stratify(
  DATA,
  Survey.relevant = Sur_rel,
  periods = 5,
  years = c(1, 2),
  TO.or.EM = c("TO", "EM"),
  strata.TO = c(500),
  strata.EM = c(10)
)
```

### Step 4: Draw Coordinated Samples

```{r, eval = FALSE}
# Apply Dutch BSC algorithm for period 1
result <- Dutch.BSC(
  DATA = DATA,
  period = 1,
  sf = c(0.2, 0.5),        # Sampling fractions
  rf = c(0.5, 1),          # Rotation fractions
  years = c(1, 2),         # Survey periodicity
  chi_S = c(0.5, 2),       # Response burden in hours
  survey.prio = 1:2,       # Survey priority order
  burden.periods = 5,
  seed = 123,
  Survey.relevant = Sur_rel,
  stratification = strat
)

# Use updated DATA for next period
DATA <- result$DATA
in_sample <- result$in.sample
```

## Algorithm Comparison

### Dutch Algorithm

The Modified Dutch Business Sample Coordination Algorithm achieves coordination via ordering the data according to the values of a customisable burden indicator.

### French Algorithm

The Modified French Business Sample Coordination Algorithm uses a theoretical sample inclusion indicator which is determined through a beta-distribution.

### Norwegian Algorithm

The Modified Norwegian Business Sample Coordination Algorithm achieves coordination by using two separate burden indicators, one based on the total number of draws, the other one based on the number of consecutive inclusion or pause periods.

### Swiss Algorithm

The Modified Swiss Business Sample Coordination Algorithm supports interval-based coordination across periods for sophisticated longitudinal sample coordination.

### Burden Weights

Some of the abovementioned algorithms contain a burden score which can be customised. For this purpose, the following parameters are available (see Straubinger, 2025, pp.48ff. for details):
- Stratum size weight (`alpha`)
- Enterprise size weight (`vita`)
- Pause duration weight (`ggamma`)

## References

- Gros, E. (2015). *Études et Simulations Relatives à la Nouvelle Méthode de Coordination des Échantillons d’Enquêtes Entreprises et Établissements Développé a l’Insee*. In: Journées de Méthodologie Statistique de l’Insee, 2015, pp. 1-23.

- Guggemos, C., & Sautory, O. (2012). *Sampling Coordination of Business Surveys Conducted by Insee*. In: Proceedings of the Fourth International Conference of Establishment Surveys. Montréal, Canada.

- Qualité, L. (2009). *Unequal probability sampling and repeated surveys* (PhD Thesis). Université de Neuchâtel, Switzerland.

- Smeets, M., & Boonstra, J.H. (2018). *Sampling Coordination of Business Surveys at Statistics Netherlands*. In: B. Lorenc et al. (Eds.), The Unit Problem and Other Current Topics in Business Survey Methodology (pp. 1-6). Newcastle upon Tyne, UK: Cambridge Scholars Publishing.

- Straubinger, J. (2025). *Methods to Coordinate Survey Samples in the Context of German Business Statistics* (PhD Thesis). Universität Trier, Germany.

- Zhang, L.-C. (2009). *Coordination of business surveys*. In: European Establishment Statistics Workshop (EESW09). Stockholm, Sweden.

## License

This package is licensed under GPL (>= 3).
