AI-прогнозирование болезней стада
Стадные болезни в животноводстве — это одновременные потери продуктивности, ветеринарные расходы и риски для здоровья человека (зоонозы). ML-прогнозирование позволяет перейти от реактивного лечения к превентивным мерам: карантин, вакцинация, изменение кормления — до массового распространения болезни.
Эпидемиология в животноводстве
Стадный иммунитет и R₀: Как в человеческих эпидемиях — R₀ (базовое репродуктивное число) определяет, будет ли вспышка. Для BVD (бычий вирусный диарей) R₀ ≈ 2-4 при отсутствии иммунитета.
Модель SIR для стада:
from scipy.integrate import odeint
def sir_model(y, t, beta, gamma, N):
"""
S = восприимчивые, I = инфицированные, R = выздоровевшие
dS/dt = -beta * S * I / N
dI/dt = beta * S * I / N - gamma * I
dR/dt = gamma * I
"""
S, I, R = y
dS = -beta * S * I / N
dI = beta * S * I / N - gamma * I
dR = gamma * I
return [dS, dI, dR]
# Параметры для конкретной болезни
beta_bvd = 0.3 # скорость передачи
gamma_bvd = 0.1 # скорость выздоровления
N_herd = 200
# Прогноз при занесении 1 инфицированного животного
solution = odeint(sir_model, y0=[N_herd-1, 1, 0],
t=np.linspace(0, 90, 90),
args=(beta_bvd, gamma_bvd, N_herd))
Ключевые болезни и предикторы
Респираторные заболевания (BRDC): Bovine Respiratory Disease Complex — главная причина потерь в мясном скотоводстве.
brdc_risk_features = {
# Стресс-факторы
'transport_hours_last_7d': recent_transport, # перевозка → стресс
'commingling_event': new_animals_introduced, # смешивание стад
'weather_stress': cold_wet_weather_days,
# Физиология
'avg_daily_weight_gain_drop': adg_change_pct, # замедление роста
'temperature_spike_count': fever_events_24h,
'activity_drop_pct': activity_vs_baseline,
# История
'previous_brdc_cases': historic_brdc_rate,
'vaccination_coverage': vaccine_pct,
'days_on_feed': time_in_current_group
}
Ящур (FMD) — карантинный риск: Особый статус: при подозрении → немедленное уведомление Россельхознадзора. ML-сигнал: внезапное падение подвижности множества животных + хромота + отказ от корма.
Мастит в молочном стаде: Стадный мастит — когда > 5% коров имеют SCC > 200,000 → системная проблема (гигиена доения, дезинфекция).
def herd_mastitis_risk_score(herd_data):
"""
Стадный риск мастита: агрегированные показатели
"""
return {
'bulk_milk_scc': herd_data['bulk_tank_scc'], # < 200,000 = норма
'new_infection_rate': herd_data['new_cases_monthly'] / herd_data['herd_size'],
'cure_rate': herd_data['spontaneous_cures_pct'],
'chronic_cow_pct': herd_data['recurring_cases_pct'],
'hygiene_score': herd_data['teat_condition_score']
}
ML-модели прогнозирования вспышек
Временной ряд инцидентности:
# Недельный уровень заболеваемости как временной ряд
# SARIMA + внешние регрессоры (погода, торговые потоки)
from statsmodels.tsa.statespace.sarimax import SARIMAX
incidence_model = SARIMAX(
endog=weekly_case_count,
exog=np.column_stack([temperature, precipitation, new_animals]),
order=(1, 0, 1),
seasonal_order=(1, 1, 0, 52) # годовая сезонность
)
Пространственная модель: Болезни распространяются географически. Соседние фермы имеют коррелированный риск:
# Geospatial features: расстояние до ближайших известных случаев
spatial_features = {
'distance_to_nearest_case_km': geodist(farm, nearest_case),
'cases_within_10km_30d': count_recent_cases_nearby(farm, 10, 30),
'wind_direction_exposure': prevailing_wind_from_cases_direction,
'shared_water_source': common_water_upstream
}
Random Survival Forest:
from lifelines import WeibullAFTFitter
# Time-to-outbreak: когда следующая вспышка произойдёт на ферме
survival_model = WeibullAFTFitter()
survival_model.fit(
df=farm_history,
duration_col='days_to_outbreak',
event_col='outbreak_occurred',
ancillary_df=farm_risk_features
)
# Прогноз для конкретной фермы
outbreak_probability = 1 - survival_model.predict_survival_function(current_farm_features)
Ранние предупреждения и протоколы
Уровни тревоги:
def generate_herd_alert(risk_score, risk_components):
if risk_score > 0.7:
return {
'level': 'RED',
'action': 'immediate_vet_visit',
'isolation': 'quarantine_suspect_animals',
'report': 'notify_veterinary_authority_if_notifiable'
}
elif risk_score > 0.4:
return {
'level': 'YELLOW',
'action': 'increased_monitoring',
'frequency': 'twice_daily_temperature_check',
'review_vaccination': True
}
else:
return {'level': 'GREEN', 'action': 'routine_monitoring'}
Нотифицируемые болезни (ФЗ "О ветеринарии"): Ящур, чума КРС, бруцеллёз → автоматическая интеграция с ФГИС ВетИС (Россельхознадзор) при подозрении.
Vaccination Optimization
Timing и coverage: ML-оптимизация схем вакцинации: когда вакцинировать (до сезонного пика), каких животных приоритизировать (низкий иммунитет по истории болезней).
def optimize_vaccination_schedule(herd, disease_seasonality, vaccine_efficacy, cost_per_dose):
"""
Минимизация: ожидаемые потери от болезни + стоимость вакцинации
Ограничение: целевой R_effective < 1 (подавление вспышки)
"""
optimal_coverage = 1 - 1/(R0 * vaccine_efficacy) # порог стадного иммунитета
priority_animals = rank_by_exposure_risk(herd)
return priority_animals[:int(optimal_coverage * len(herd))]
Сроки: SIR-модель для ключевых нозологий + стадные алерты + ФЗ-нотификация — 4-5 недель. ML-классификаторы вспышек, пространственная модель, vaccination optimizer, ВетИС интеграция — 2-3 месяца.







