lead_time_analysis
lead_time_analysis ¤
Lead time analysis events for supply chain timeseries.
Matches order events to delivery events, computes lead time statistics, and detects anomalous lead times.
LeadTimeAnalysisEvents ¤
LeadTimeAnalysisEvents(
dataframe: DataFrame,
*,
event_uuid: str = "sc:lead_time",
time_column: str = "systime"
)
Bases: Base
Analyze lead times between order placement and delivery in timeseries data.
Order and delivery events are identified by separate UUIDs. They are paired sequentially (first order to first delivery, etc.).
Example usage
analyzer = LeadTimeAnalysisEvents(df) lead_times = analyzer.calculate_lead_times('order_signal', 'delivery_signal') stats = analyzer.lead_time_statistics('order_signal', 'delivery_signal') anomalies = analyzer.detect_lead_time_anomalies('order_signal', 'delivery_signal')
Initialize lead time analyzer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataframe
|
DataFrame
|
Input DataFrame with timeseries data. |
required |
event_uuid
|
str
|
UUID assigned to generated events. |
'sc:lead_time'
|
time_column
|
str
|
Name of timestamp column. |
'systime'
|
calculate_lead_times ¤
calculate_lead_times(
order_uuid: str,
delivery_uuid: str,
value_column: str = "value_string",
) -> pd.DataFrame
Match order events to delivery events by sequential pairing.
The first order is paired with the first delivery, and so on. The value_column is used as an order identifier (e.g. PO number).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
order_uuid
|
str
|
UUID of the order placement signal. |
required |
delivery_uuid
|
str
|
UUID of the delivery received signal. |
required |
value_column
|
str
|
Column containing order identifiers. |
'value_string'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with columns: order_time, delivery_time, uuid, is_delta, |
DataFrame
|
lead_time_seconds, lead_time_hours, order_id. |
lead_time_statistics ¤
lead_time_statistics(
order_uuid: str,
delivery_uuid: str,
value_column: str = "value_string",
) -> pd.DataFrame
Compute summary statistics of lead times.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
order_uuid
|
str
|
UUID of the order placement signal. |
required |
delivery_uuid
|
str
|
UUID of the delivery received signal. |
required |
value_column
|
str
|
Column containing order identifiers. |
'value_string'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
Single-row DataFrame with columns: mean_hours, std_hours, |
DataFrame
|
min_hours, max_hours, p95_hours, count. |
detect_lead_time_anomalies ¤
detect_lead_time_anomalies(
order_uuid: str,
delivery_uuid: str,
threshold_factor: float = 2.0,
value_column: str = "value_string",
) -> pd.DataFrame
Flag lead times exceeding mean + threshold_factor * std.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
order_uuid
|
str
|
UUID of the order placement signal. |
required |
delivery_uuid
|
str
|
UUID of the delivery received signal. |
required |
threshold_factor
|
float
|
Number of standard deviations above mean to flag as anomalous. |
2.0
|
value_column
|
str
|
Column containing order identifiers. |
'value_string'
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with columns: order_time, delivery_time, uuid, is_delta, |
DataFrame
|
lead_time_hours, z_score. |