--- license: mit language: - en metrics: - accuracy pipeline_tag: graph-ml tags: - gnn - trade_flow - food_security - pytorch - regression --- ## Overview This model predicts food trade flows between U.S. counties and Freight Analysis Framework (FAF) zones using Graph Neural Networks (GNNs). It addresses the challenges of sparsity in trade data by applying a two-stage **hurdle model** that distinguishes between the presence and magnitude of trade. This model supports applications in economic planning, infrastructure design, and food security policy. ## Model Details - **Developed by**: Qianheng Zhang & ICICLE Team - **Funded by**: NSF AI Institute for Intelligent Cyberinfrastructure with Computational Learning in the Environment (ICICLE) (OAC 2112606) - **Model type**: Graph Neural Network (GAT and GCN variants) - **Language(s)**: English (for documentation and metadata) - **License**: MIT License - **Framework**: PyTorch, PyTorch Geometric ## Uses ```console python test_model.py --model_type GAT --model_path gat_model.pt --node_features data/faf_features.csv --edges data/FAF5_SCTG1.csv --distance_matrix data/FAF_distance_matrix.csv ``` ### Direct Use - Predicting food flows between regions using node (county/FAF zone) and edge features - Modeling economic connectivity and transportation dependency ### Downstream Use - Spatial forecasting of trade changes under policy shifts - Identifying critical counties for supply chain resilience ### Out-of-Scope Use - Real-time trade forecasting - Non-U.S. geographic settings without retraining ## Bias, Risks, and Limitations - **Bias**: Model predictions depend on historical FAF data and may not reflect unexpected future disruptions (e.g., disasters, pandemics) - **Limitations**: Prediction is limited to predefined commodity codes (SCTG1) - **Data quality**: Assumes accuracy of FAF flow data and economic indicators ### Recommendations Users should: - Evaluate model generalizability before applying it to non-FAF settings - Interpret sparse predictions carefully—zeros may result from missing data, not true absence