{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":81933,"databundleVersionId":9643020}],"dockerImageVersionId":30804,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Introduction","metadata":{}},{"cell_type":"markdown","source":"Over the last three decades, the use of the Internet has grown tremendously. In the recent years, spending time online has become a normal pastime for a wide range of people, from the youth to the elderly. For many children and adults, the Internet has become a significant part of their everyday life, providing a convenient platform for connection, information sharing, entertainment, education, work, and more.","metadata":{}},{"cell_type":"markdown","source":"Unsurprisingly, this has also raised various concerns about the effect Internet use has on our lives. Although this effect is not yet clearly understood, evidence suggests that extensive use of the Internet may influence our attention, memory, and other aspects of cognition <cite data-cite=\"firth2020-bx\">(Firth et al, 2020)</cite>. From a social standpoint, the term _Problematic Internet Use_ (PIU) widely conceptualizes one's inability to moderate time spent online, leading to negative consequences in daily life, such as excessive or compulsive behavior, as well as detrimental neglect of social activities, relationship, health, and duties <cite data-cite=\"spada2014overview\">(Spada, 2014)</cite>.","metadata":{}},{"cell_type":"markdown","source":"Today, the ability to accurately assess PIU is critical for addressing the development of mental health issues, especially in children and adolescents. In 2024, the Child Mind Institute hosted a Kaggle competition with the goal of developing a predictive model to detect early signs of PIU in children <cite data-cite=\"child-mind-institute-problematic-internet-use\">(Santorelli et al, 2024)</cite>. We present our results from participating in this competition, where we used several machine learnings methods to predict the _Severity Impairment Index_ (SII) - a standard measure of PIU - based on features related to mental and physical health.","metadata":{}},{"cell_type":"markdown","source":"This report is structured as follows. In the _Problem Definition_ section, we elaborate on the task and dataset of the competition. In _State-of-Art_, we review existing research in applications of artificial intelligence (AI) and machine learning (ML) to mental health, particularly in the context of Internet use. In _Exploratory Data Analysis_, we extract insights about the dataset to better understand its structure, relations between features, and anomalies or other issues. In _Data Preprocessing_, we clean and prepare the dataset for training. In the _Model Training_ sections, we apply XGBoost, LightGBM, and CatBoost methods to solve the prediction problem. Lastly, in _Conclusions_, we compare the results obtained using each method and offer suggestions for future work.","metadata":{}},{"cell_type":"markdown","source":"# Problem Definition","metadata":{}},{"cell_type":"markdown","source":"The existing methods of measuring PIU in children and adolescents often require careful assessment from professionals, which makes them difficult to access for many families. Instead, more commonly identified issues with mental health, such as depression and anxiety, are sometimes used as proxies to detect PIU. Additionally, easily collectable measures related to physical health and fitness may be used to identify PIU based on negative changes in physical habits, poor posture, irregular diet, and other problems with physical activity that may be expected from children with excessive use of technology. Thus, the problem objective is to use these features to develop a model for prediction of SII for early intervention in PIU, particularly for children lacking access to clinical expertise or suitable assessment tools.","metadata":{}},{"cell_type":"markdown","source":"## Dataset Description","metadata":{}},{"cell_type":"markdown","source":"The dataset for this research was hosted on Kaggle and provided by the _Healthy Brain Network_ (HBN), a mental health study based in New York and partnered with the Child Mind Institute to better understand brain development in young people. The dataset is a clinical sample of approximately five thousand children, adolescents, and young adults in the age range from 5 to 22 years old. The aim of the study conducted by HBN is to improve the diagnosis and treatment of mental health conditions, as well as learning disorders, using objective biological markers.","metadata":{}},{"cell_type":"markdown","source":"The data provided for this competition consists of two parts. Firstly, tabular data contains results of various fitness assessments and questionnaires, compiled into an ordinary CSV file. The data consists of 81 features which were gathered using several instruments and grouped as follows:\n\n- _Demographics_, such as the age and sex of participants.\n- _Internet Use_, such as the number of hours spent using the Internet daily.\n- _Sleep Disturbance Scale_ (SDS), which categorizes sleep disorders in young people.\n- _Physical Measures_, such as weight, height, body mass index, heart rate, etc.\n- _Physical Activity Questionnaire_ (PAQ), which assesses involvement in energetic activities over the past week.\n- _Bio-electric Impedance Analysis_ (BIA), which measures the composition of key body elements, such as fat and muscle.\n- _FitnessGram Child_ (FGC), which measures physical fitness parameters, such as aerobic capacity and muscular strength.\n- _FitnessGram Vitals and Treadmill_, which are treadmill-based measures of cardiovascular fitness gathered using the NHANES protocol.\n- _Children's Global Assessment Scale_ (CGAS), which is a 1-100 scale used by clinicians to rate the lowest level of functioning in youth under 18.\n- _Parent-Child Internet Addiction Test_ (PCIAT), which is a twenty-item scale measuring characteristics and behaviors associated with compulsivity, escapism, and dependency in use of the Internet. \n","metadata":{}},{"cell_type":"markdown","source":"The target SII feature has only four possible values (0 - None, 1 - Mild, 2 - Moderate, and 3 - Severe), and is derived exactly from the PCIAT. Each of the test's twenty items is associated with a 0-5 score, and the SII is obtained from binning the total score into four ranges (0-30 corresponds to SII of 0, 31-49 corresponds to SII of 1, 50-79 corresponds to SII of 2, and 80-100 corresponds to SII of 3). Therefore, it is possible to either predict SII directly as a classification problem, the total PCIAT score as a regression problem, or the individual PCIAT scores as a multi-target regression problem.","metadata":{}},{"cell_type":"markdown","source":"Additionally, the dataset contains actigraphy data in Parquet files, collected from wrist-worn accelerometers for up to 30 days for a portion of the participants. The actigraphy data is stored in a separate file for each participant and is represented by a series of continuous recordings for a single subject throughout many days. The actigraphy data consists of the following fields:\n\n| Feature                    | Description                                                                                                                 |\n|----------------------------|-----------------------------------------------------------------------------------------------------------------------------|\n| Id                         | The patient's unique identifier.                                                                                            |\n| Step                       | The integer timestamp of the observation within the series.                                                                 |\n| X, Y, and Z                | The measures of acceleration of the wrist-worn watch along each standard axis, in _g_ force.                                |\n| ENMO                       | The Euclidean Norm Minus One of accelerometer signals along x, y, and z axes, with zeroes indicating periods of inactivity. |\n| Angle-Z                    | The angle of the arm relative to the horizontal plane.                                                                      |\n| Non-Wear Flag              | When set to 1, indicates that the watch has been removed.                                                                   |\n| Light                      | The measure of ambient light, in _lux_.                                                                                     |\n| Battery Volt.              | The measure of battery charge, in _mV_.                                                                                     |\n| Time of Day                | The number of nanoseconds since midnight.                                                                                   |\n| Weekday                    | The day of the week, encoded as an integer (Monday - 1, Sunday - 7).                                                        |\n| Quarter                    | The quarter of the year, encoded as an integer (from 1 to 4).                                                               |\n| Relative Date              | The number of days since the PCIAT was administered (negative if actigraphy was collected prior to the test).               |","metadata":{}},{"cell_type":"markdown","source":"## Submission Evaluation","metadata":{}},{"cell_type":"markdown","source":"The contest was organized as a so-called _code competition_, meaning the objective was to develop a model that would perform the best on previously unseen data as indicated by the _quadratic weighted kappa_ (QWK) score, also known as Cohen's Kappa. This metric measures the inter-rater agreement between two judges or observers, and typically varies from 0 (random agreement) to 1 (complete agreement), with negative values indicating less agreement than expected by chance. Winners of the competition are selected by the highest QWK score.\n\nThe dataset for this competition is split into two samples: a _training_ sample and a _testing_ sample. The training sample contains about 3900 observations and is accessible publicly by all participants for creation and evaluation of their prediction models. Conversely, the testing sample contains about 3800 instances and is hidden from participants because it is used to evaluate and rank their submissions.\n\nSolutions must load the testing dataset from a specific path and, for each observation in it, predict its SII. The predictions, along with their corresponding observation identifiers, are written to the `submission.csv` file. Depending on the environment in which the notebook is run, the contents of the test sample will either contain example data or a portion of the real test sample (about 38% of which is used for preliminary ranking, with only the remaining 62% used for final evaluation). Obviously, the target features, including SII and all PCIAT columns, are omitted from the testing data to avoid cheating, but the ground truth values are known to the hosts of the competition and are used for evaluation of the submitted models.","metadata":{}},{"cell_type":"markdown","source":"# State-of-Art","metadata":{}},{"cell_type":"markdown","source":"The recent years have seen a variety of applications of AI and ML in the mental health domain. For example, <cite data-cite=\"d2020ai\">D'Alfonso (2020)</cite> describes the use of both AI and ML as digital approaches for prediction, detection, and treatment solutions in mental health care. According to the review, AI is already being incorporated into smartphones, as well as specialized actigraphy devices, to enable _digital phenotyping_ (also known as _personal sensing_) to collect sensor and usage data from personal devices that may be used by machine learning models to predict mental health conditions. This includes connecting movement and other physical activities with depression or anxiety, though evidence suggests that schizophrenia or psychotic disorders may be identified from such data as well. Furthermore, digital phenotyping can be used to automatically deliver timely and personalized recommendations for therapy, which would be valuable for PIU intervention.","metadata":{}},{"cell_type":"markdown","source":"Similarly, <cite data-cite=\"graham2019artificial\">Graham et al (2019)</cite> noted that existing research had revealed high accuracies in use of AI and ML to predict depression, schizophrenia, psychiatric illnesses, suicide ideation, and other mental health issues, though they caution that existing approaches should be seen as early proof-of-concept works rather than fully-fledged solutions. Firstly, they suggest data availability as a significant limitation in the use of ML for mental health care, as very large, representative, and high-quality datasets are required to discover new relationships between, e.g., actigraphy data and mental illnesses. Furthermore, once this data is available, its complexity will likely necessitate the use of deep learning (DL) methods, after which the primary challenge would be to make them clinically interpretable instead of treating them as \"black box\" models.","metadata":{}},{"cell_type":"markdown","source":"Although the relation between PIU and addiction has been previously debated <cite data-cite=\"widyanto2006internet\">(Griffiths et al, 2006)</cite>, applications of ML to more general addiction studies is informative as well. <cite data-cite=\"mak2019applications\">Mak et al (2019)</cite> compared the use of supervised, unsupervised, and reinforcement learning algorithms in studies related to addictions to substances, gambling, and Internet gaming. They found that supervised learning methods - particularly ensemble learning and regression - were the most prevalent, though it could be more indicative of limitations in existing research and ambiguities in method classifications than the effectiveness of these approaches per se.","metadata":{}},{"cell_type":"markdown","source":"In a survey dedicated to multimodal sensing of mental health using data obtained from wearable sensors, <cite data-cite=\"garcia2018mental\">Garcia et al (2018)</cite> found that the most commonly used methods for classification of mental health problems include AdaBoost, support vector machines, naive Bayes, logistic regression, $k$-nearest neighbors, and random forests, among others. Decision trees seem to be particularly suitable due to their simplicity and interpretability. According to the publication, the primary challenges related to monitoring of mental health include: data labeling (i.e., obtaining ground-truth values used for training, which is too time-consuming to conduct accurately and too unreliable for self-reporting), inter-user variance (i.e., variations in physiological and behavioral patterns between individuals makes user-dependent models perform better than user-independent models, as had been demonstrated by previous studies), intra-user variance (i.e., variations in personal behavior over time, requiring time-adaptive models to avoid the so-called _context drift_), and sensor data fusion (i.e., combining data from data sources with different formats, usually accomplished either through aggregation of sensor data or training of separate models for each data source that all participate in making the final prediction). Moreover, the authors also suggest the use of semi-supervised learning due to the frequent absence of target feature values in significant portions of the datasets (e.g., because they require professional, time-consuming evaluation), though such approaches are not as well-explored and are thus challenging to apply in practice.","metadata":{}},{"cell_type":"markdown","source":"In a more recent survey, <cite data-cite=\"van2020survey\">Van et al (2020)</cite> suggest wrapper approaches for semi-supervised learning, where predictions are iteratively made on portions of unlabeled data using ordinary supervised learning methods to produce _pseudo-labels_. Observations with pseudo-labels having the highest confidence scores are then added to the training data for subsequent iterations. Their taxonomy of wrapper methods includes self-training, co-training, and boosting. Another notable category of semi-supervised learning is unsupervised preprocessing, where unsupervised learning is used in preparation for supervised learning to either transform the sample features to reduce the number of missing values, cluster the training data to guide the learning process, or initialize the supervised model's hyperparameters. Currently, a significant disadvantage of semi-supervised learning is its lack of support in major machine learning packages, though support for self-training is currently provided by, e.g., `scikit-learn`.","metadata":{}},{"cell_type":"markdown","source":"In a study on classification of depression levels based on actigraphy data, <cite data-cite=\"choi2021depression\">Choi et al (2021)</cite> extracted thirteen circadian indices from demographic, physical activity,\nmental health, subjective health status variables collected from the Korea National Health and Nutrition Examination Survey (KNHANES). To select the most adequate features, they applied three-step rank and frequency feature selection method, using lasso and ridge regularization as feature selection criteria. Moreover, they generated several versions of the dataset by varying the length of actigraphy monitoring and compared the performance of several models for classification of two, three, four, and five classes. In their results, the XGBoost classifier outperformed the support vector classifier, multilayer perceptron, and logistic regression on all evaluation metrics (precision, recall, accuracy, F1-score, true-positive rate and false-positive rate), achieving scores above 94% for all classification problems, with the significance of the results  statistically confirmed using ANOVA test.","metadata":{}},{"cell_type":"markdown","source":"On the relation between Internet use and problems in social and academic life, <cite data-cite=\"xu2019prediction\">Xu et al (2019)</cite> used decision trees, neural networks, and support vector machines to predict undergraduate students' academic performance based on their Internet usage data. Features such as the duration of time spent online, Internet traffic volume, and connection frequency were obtained from real data collected from a sample of 4000 students in China. They performed Spearman's non-parametric correlation analysis to show statistically significant negative correlation between academic performance and Internet use features (with $p$-value of 0.001) before applying machine learning methods for prediction, achieving average predictions of 60.95%–62.30% for decision trees, 67.75%–70.95% for neural networks, and 69.55%–72.75% for support vector machines, with the latter having the highest values of average accuracy.","metadata":{}},{"cell_type":"markdown","source":"# Exploratory Data Analysis","metadata":{}},{"cell_type":"markdown","source":"As with any machine learning problem, we begin by exploring the dataset to better understand its features and structure, as well as to identify variables which must be cleaned, removed, or otherwise adjusted to facilitate more efficient learning.","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.ticker as mticker\nimport seaborn as sns\nsns.set_theme()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.140525Z","iopub.execute_input":"2025-01-12T10:41:32.14095Z","iopub.status.idle":"2025-01-12T10:41:32.147777Z","shell.execute_reply.started":"2025-01-12T10:41:32.140914Z","shell.execute_reply":"2025-01-12T10:41:32.146409Z"}},"outputs":[],"execution_count":77},{"cell_type":"code","source":"import warnings\nwarnings.filterwarnings('ignore')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.14992Z","iopub.execute_input":"2025-01-12T10:41:32.150852Z","iopub.status.idle":"2025-01-12T10:41:32.165837Z","shell.execute_reply.started":"2025-01-12T10:41:32.150812Z","shell.execute_reply":"2025-01-12T10:41:32.164047Z"}},"outputs":[],"execution_count":78},{"cell_type":"markdown","source":"## Data Loading","metadata":{}},{"cell_type":"markdown","source":"The dataset for the competition is located at a pre-defined relative path.","metadata":{}},{"cell_type":"code","source":"DATA_ROOT = '../input/child-mind-institute-problematic-internet-use'","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.167823Z","iopub.execute_input":"2025-01-12T10:41:32.168255Z","iopub.status.idle":"2025-01-12T10:41:32.178207Z","shell.execute_reply.started":"2025-01-12T10:41:32.168219Z","shell.execute_reply":"2025-01-12T10:41:32.177013Z"}},"outputs":[],"execution_count":79},{"cell_type":"markdown","source":"The CSV portion of the data is located directly in the dataset directory.","metadata":{}},{"cell_type":"code","source":"train_df = pd.read_csv(f'{DATA_ROOT}/train.csv', index_col='id')\ntest_df = pd.read_csv(f'{DATA_ROOT}/test.csv', index_col='id')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.180173Z","iopub.execute_input":"2025-01-12T10:41:32.180622Z","iopub.status.idle":"2025-01-12T10:41:32.256066Z","shell.execute_reply.started":"2025-01-12T10:41:32.18057Z","shell.execute_reply":"2025-01-12T10:41:32.255072Z"}},"outputs":[],"execution_count":80},{"cell_type":"markdown","source":"We may now learn what features are available in the training sample.","metadata":{}},{"cell_type":"code","source":"train_df.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.258192Z","iopub.execute_input":"2025-01-12T10:41:32.25857Z","iopub.status.idle":"2025-01-12T10:41:32.277888Z","shell.execute_reply.started":"2025-01-12T10:41:32.258533Z","shell.execute_reply":"2025-01-12T10:41:32.276594Z"}},"outputs":[{"name":"stdout","text":"<class 'pandas.core.frame.DataFrame'>\nIndex: 3960 entries, 00008ff9 to ffef538e\nData columns (total 81 columns):\n #   Column                                  Non-Null Count  Dtype  \n---  ------                                  --------------  -----  \n 0   Basic_Demos-Enroll_Season               3960 non-null   object \n 1   Basic_Demos-Age                         3960 non-null   int64  \n 2   Basic_Demos-Sex                         3960 non-null   int64  \n 3   CGAS-Season                             2555 non-null   object \n 4   CGAS-CGAS_Score                         2421 non-null   float64\n 5   Physical-Season                         3310 non-null   object \n 6   Physical-BMI                            3022 non-null   float64\n 7   Physical-Height                         3027 non-null   float64\n 8   Physical-Weight                         3076 non-null   float64\n 9   Physical-Waist_Circumference            898 non-null    float64\n 10  Physical-Diastolic_BP                   2954 non-null   float64\n 11  Physical-HeartRate                      2967 non-null   float64\n 12  Physical-Systolic_BP                    2954 non-null   float64\n 13  Fitness_Endurance-Season                1308 non-null   object \n 14  Fitness_Endurance-Max_Stage             743 non-null    float64\n 15  Fitness_Endurance-Time_Mins             740 non-null    float64\n 16  Fitness_Endurance-Time_Sec              740 non-null    float64\n 17  FGC-Season                              3346 non-null   object \n 18  FGC-FGC_CU                              2322 non-null   float64\n 19  FGC-FGC_CU_Zone                         2282 non-null   float64\n 20  FGC-FGC_GSND                            1074 non-null   float64\n 21  FGC-FGC_GSND_Zone                       1062 non-null   float64\n 22  FGC-FGC_GSD                             1074 non-null   float64\n 23  FGC-FGC_GSD_Zone                        1063 non-null   float64\n 24  FGC-FGC_PU                              2310 non-null   float64\n 25  FGC-FGC_PU_Zone                         2271 non-null   float64\n 26  FGC-FGC_SRL                             2305 non-null   float64\n 27  FGC-FGC_SRL_Zone                        2267 non-null   float64\n 28  FGC-FGC_SRR                             2307 non-null   float64\n 29  FGC-FGC_SRR_Zone                        2269 non-null   float64\n 30  FGC-FGC_TL                              2324 non-null   float64\n 31  FGC-FGC_TL_Zone                         2285 non-null   float64\n 32  BIA-Season                              2145 non-null   object \n 33  BIA-BIA_Activity_Level_num              1991 non-null   float64\n 34  BIA-BIA_BMC                             1991 non-null   float64\n 35  BIA-BIA_BMI                             1991 non-null   float64\n 36  BIA-BIA_BMR                             1991 non-null   float64\n 37  BIA-BIA_DEE                             1991 non-null   float64\n 38  BIA-BIA_ECW                             1991 non-null   float64\n 39  BIA-BIA_FFM                             1991 non-null   float64\n 40  BIA-BIA_FFMI                            1991 non-null   float64\n 41  BIA-BIA_FMI                             1991 non-null   float64\n 42  BIA-BIA_Fat                             1991 non-null   float64\n 43  BIA-BIA_Frame_num                       1991 non-null   float64\n 44  BIA-BIA_ICW                             1991 non-null   float64\n 45  BIA-BIA_LDM                             1991 non-null   float64\n 46  BIA-BIA_LST                             1991 non-null   float64\n 47  BIA-BIA_SMM                             1991 non-null   float64\n 48  BIA-BIA_TBW                             1991 non-null   float64\n 49  PAQ_A-Season                            475 non-null    object \n 50  PAQ_A-PAQ_A_Total                       475 non-null    float64\n 51  PAQ_C-Season                            1721 non-null   object \n 52  PAQ_C-PAQ_C_Total                       1721 non-null   float64\n 53  PCIAT-Season                            2736 non-null   object \n 54  PCIAT-PCIAT_01                          2733 non-null   float64\n 55  PCIAT-PCIAT_02                          2734 non-null   float64\n 56  PCIAT-PCIAT_03                          2731 non-null   float64\n 57  PCIAT-PCIAT_04                          2731 non-null   float64\n 58  PCIAT-PCIAT_05                          2729 non-null   float64\n 59  PCIAT-PCIAT_06                          2732 non-null   float64\n 60  PCIAT-PCIAT_07                          2729 non-null   float64\n 61  PCIAT-PCIAT_08                          2730 non-null   float64\n 62  PCIAT-PCIAT_09                          2730 non-null   float64\n 63  PCIAT-PCIAT_10                          2733 non-null   float64\n 64  PCIAT-PCIAT_11                          2734 non-null   float64\n 65  PCIAT-PCIAT_12                          2731 non-null   float64\n 66  PCIAT-PCIAT_13                          2729 non-null   float64\n 67  PCIAT-PCIAT_14                          2732 non-null   float64\n 68  PCIAT-PCIAT_15                          2730 non-null   float64\n 69  PCIAT-PCIAT_16                          2728 non-null   float64\n 70  PCIAT-PCIAT_17                          2725 non-null   float64\n 71  PCIAT-PCIAT_18                          2728 non-null   float64\n 72  PCIAT-PCIAT_19                          2730 non-null   float64\n 73  PCIAT-PCIAT_20                          2733 non-null   float64\n 74  PCIAT-PCIAT_Total                       2736 non-null   float64\n 75  SDS-Season                              2618 non-null   object \n 76  SDS-SDS_Total_Raw                       2609 non-null   float64\n 77  SDS-SDS_Total_T                         2606 non-null   float64\n 78  PreInt_EduHx-Season                     3540 non-null   object \n 79  PreInt_EduHx-computerinternet_hoursday  3301 non-null   float64\n 80  sii                                     2736 non-null   float64\ndtypes: float64(68), int64(2), object(11)\nmemory usage: 2.5+ MB\n","output_type":"stream"}],"execution_count":81},{"cell_type":"markdown","source":"The testing sample, provided purely as an example of submission formatting, should contain only a subset of the columns with the target features removed.","metadata":{}},{"cell_type":"code","source":"test_df.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.279667Z","iopub.execute_input":"2025-01-12T10:41:32.280035Z","iopub.status.idle":"2025-01-12T10:41:32.287375Z","shell.execute_reply.started":"2025-01-12T10:41:32.280001Z","shell.execute_reply":"2025-01-12T10:41:32.286359Z"}},"outputs":[{"execution_count":82,"output_type":"execute_result","data":{"text/plain":"(20, 58)"},"metadata":{}}],"execution_count":82},{"cell_type":"markdown","source":"Indeed, the only columns missing from the testing sample are PCIAT values and SII:","metadata":{}},{"cell_type":"code","source":"set(train_df.columns) - set(test_df.columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.288971Z","iopub.execute_input":"2025-01-12T10:41:32.289307Z","iopub.status.idle":"2025-01-12T10:41:32.301658Z","shell.execute_reply.started":"2025-01-12T10:41:32.289274Z","shell.execute_reply":"2025-01-12T10:41:32.30056Z"}},"outputs":[{"execution_count":83,"output_type":"execute_result","data":{"text/plain":"{'PCIAT-PCIAT_01',\n 'PCIAT-PCIAT_02',\n 'PCIAT-PCIAT_03',\n 'PCIAT-PCIAT_04',\n 'PCIAT-PCIAT_05',\n 'PCIAT-PCIAT_06',\n 'PCIAT-PCIAT_07',\n 'PCIAT-PCIAT_08',\n 'PCIAT-PCIAT_09',\n 'PCIAT-PCIAT_10',\n 'PCIAT-PCIAT_11',\n 'PCIAT-PCIAT_12',\n 'PCIAT-PCIAT_13',\n 'PCIAT-PCIAT_14',\n 'PCIAT-PCIAT_15',\n 'PCIAT-PCIAT_16',\n 'PCIAT-PCIAT_17',\n 'PCIAT-PCIAT_18',\n 'PCIAT-PCIAT_19',\n 'PCIAT-PCIAT_20',\n 'PCIAT-PCIAT_Total',\n 'PCIAT-Season',\n 'sii'}"},"metadata":{}}],"execution_count":83},{"cell_type":"markdown","source":"According to the competition's rules, the testing data accessible outside of the Kaggle submission environment is only intended to be used for testing the generation of the submission file, and simply contains several observations from the training sample with the target features removed. Thus, it should not be used for evaluation of accuracy and may be omitted from further exploration and analysis.","metadata":{}},{"cell_type":"markdown","source":"## Missing Values","metadata":{}},{"cell_type":"markdown","source":"Evidently, the dataset contains 58 independent features that may be used for prediction, grouped by instruments which were used to measure them (as indicated by each feature's prefix before the dash symbol). However, many features in the dataset contain large amounts of missing values, including the target feature itself:","metadata":{}},{"cell_type":"code","source":"round(train_df['sii'].isnull().mean(), 2)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.303435Z","iopub.execute_input":"2025-01-12T10:41:32.303872Z","iopub.status.idle":"2025-01-12T10:41:32.316244Z","shell.execute_reply.started":"2025-01-12T10:41:32.303837Z","shell.execute_reply":"2025-01-12T10:41:32.314926Z"}},"outputs":[{"execution_count":84,"output_type":"execute_result","data":{"text/plain":"0.31"},"metadata":{}}],"execution_count":84},{"cell_type":"markdown","source":"Overall, the ground truth labels are missing for 31% of observations. Given the small size of the original dataset, simply discarding these observations is undesirable, as it would further reduce the dataset by almost a third. As alternatives, either imputation or semi-supervised learning could be applied to preserve as much data as possible.","metadata":{}},{"cell_type":"markdown","source":"Interestingly, the total PCIAT score (along with the derived SII) is present for more observations than the individual PCIAT scores. This is likely due to test respondents being allowed to skip questions, whereas the total score is still calculated from the provided answers. Therefore, for a small number of participants the SII may be higher than indicated in the dataset. However, without additional information, we will have to assume that the total score is appropriate for all respondents.","metadata":{}},{"cell_type":"markdown","source":"In a similar way, we may identify all features for which the majority of values are missing.","metadata":{}},{"cell_type":"code","source":"missing_df = train_df.isnull().mean()\nmissing_df[missing_df > 0.5].sort_values(ascending=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.31774Z","iopub.execute_input":"2025-01-12T10:41:32.318131Z","iopub.status.idle":"2025-01-12T10:41:32.340383Z","shell.execute_reply.started":"2025-01-12T10:41:32.318098Z","shell.execute_reply":"2025-01-12T10:41:32.339159Z"}},"outputs":[{"execution_count":85,"output_type":"execute_result","data":{"text/plain":"PAQ_A-Season                    0.880051\nPAQ_A-PAQ_A_Total               0.880051\nFitness_Endurance-Time_Mins     0.813131\nFitness_Endurance-Time_Sec      0.813131\nFitness_Endurance-Max_Stage     0.812374\nPhysical-Waist_Circumference    0.773232\nFGC-FGC_GSND_Zone               0.731818\nFGC-FGC_GSD_Zone                0.731566\nFGC-FGC_GSND                    0.728788\nFGC-FGC_GSD                     0.728788\nFitness_Endurance-Season        0.669697\nPAQ_C-Season                    0.565404\nPAQ_C-PAQ_C_Total               0.565404\ndtype: float64"},"metadata":{}}],"execution_count":85},{"cell_type":"markdown","source":"Thus, there are 13 features with missing values in at least 50% of observations. Depending on their significance, these features may be removed from the dataset altogether. Alternatively, imputation or algorithms capable of handling missing data could be used to avoid shrinking the dataset further.","metadata":{}},{"cell_type":"markdown","source":"## Data Types","metadata":{}},{"cell_type":"markdown","source":"The dataset includes both quantitative (numerical) and qualitative (categorical) features.","metadata":{}},{"cell_type":"code","source":"num_cols = train_df.select_dtypes(['int64', 'float64']).columns.tolist()\ncat_cols = train_df.select_dtypes(['object']).columns.tolist()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.342123Z","iopub.execute_input":"2025-01-12T10:41:32.342574Z","iopub.status.idle":"2025-01-12T10:41:32.350578Z","shell.execute_reply.started":"2025-01-12T10:41:32.342523Z","shell.execute_reply":"2025-01-12T10:41:32.349293Z"}},"outputs":[],"execution_count":86},{"cell_type":"markdown","source":"The majority of features in the dataset are numerical (including targets):","metadata":{}},{"cell_type":"code","source":"len(num_cols), len(cat_cols)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.35535Z","iopub.execute_input":"2025-01-12T10:41:32.35581Z","iopub.status.idle":"2025-01-12T10:41:32.364686Z","shell.execute_reply.started":"2025-01-12T10:41:32.355757Z","shell.execute_reply":"2025-01-12T10:41:32.36363Z"}},"outputs":[{"execution_count":87,"output_type":"execute_result","data":{"text/plain":"(70, 11)"},"metadata":{}}],"execution_count":87},{"cell_type":"markdown","source":"The only categorical features are the seasons of participation for each group of measurements:","metadata":{}},{"cell_type":"code","source":"cat_cols","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.365995Z","iopub.execute_input":"2025-01-12T10:41:32.366364Z","iopub.status.idle":"2025-01-12T10:41:32.378934Z","shell.execute_reply.started":"2025-01-12T10:41:32.366331Z","shell.execute_reply":"2025-01-12T10:41:32.377757Z"}},"outputs":[{"execution_count":88,"output_type":"execute_result","data":{"text/plain":"['Basic_Demos-Enroll_Season',\n 'CGAS-Season',\n 'Physical-Season',\n 'Fitness_Endurance-Season',\n 'FGC-Season',\n 'BIA-Season',\n 'PAQ_A-Season',\n 'PAQ_C-Season',\n 'PCIAT-Season',\n 'SDS-Season',\n 'PreInt_EduHx-Season']"},"metadata":{}}],"execution_count":88},{"cell_type":"markdown","source":"Thus, each categorical feature only has up to four unique values:","metadata":{}},{"cell_type":"code","source":"set(train_df[cat_cols].values.flatten())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.380802Z","iopub.execute_input":"2025-01-12T10:41:32.381256Z","iopub.status.idle":"2025-01-12T10:41:32.401885Z","shell.execute_reply.started":"2025-01-12T10:41:32.381209Z","shell.execute_reply":"2025-01-12T10:41:32.400575Z"}},"outputs":[{"execution_count":89,"output_type":"execute_result","data":{"text/plain":"{'Fall', 'Spring', 'Summer', 'Winter', nan}"},"metadata":{}}],"execution_count":89},{"cell_type":"markdown","source":"## Distribution of SII","metadata":{}},{"cell_type":"markdown","source":"As has been mentioned previously, the target SII value has four labels:","metadata":{}},{"cell_type":"code","source":"sii_labels = ['None', 'Mild', 'Moderate', 'Severe']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.403083Z","iopub.execute_input":"2025-01-12T10:41:32.40341Z","iopub.status.idle":"2025-01-12T10:41:32.40945Z","shell.execute_reply.started":"2025-01-12T10:41:32.403379Z","shell.execute_reply":"2025-01-12T10:41:32.408275Z"}},"outputs":[],"execution_count":90},{"cell_type":"markdown","source":"The distribution of present SII labels is displayed in the following plot.","metadata":{}},{"cell_type":"code","source":"# plt.figure(figsize=(5, 3))\n# sns.barplot(data=train_df['sii'].value_counts(normalize=True))\n# plt.title('Distribution of severity impairment index (SII)')\n# plt.xticks(range(len(sii_labels)), labels=sii_labels)\n# plt.ylabel('Percentage')\n# plt.gca().yaxis.set_major_formatter(\n#     mticker.PercentFormatter(xmax=1))\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.410909Z","iopub.execute_input":"2025-01-12T10:41:32.411223Z","iopub.status.idle":"2025-01-12T10:41:32.422431Z","shell.execute_reply.started":"2025-01-12T10:41:32.411192Z","shell.execute_reply":"2025-01-12T10:41:32.421213Z"}},"outputs":[],"execution_count":91},{"cell_type":"markdown","source":"Evidently, the impairment index follows an expected trend, with higher severity levels being rarer. About 58% of the participants seem to have no impairment from Internet use at all, whereas only several respondents were considered severely impaired, implying that the classification problem is not well-balanced and that the resulting models may be biased towards lower SII levels. Conversely, it is also plausible that problematic cases of Internet use are relatively rare, which would justify more conservative judgements of impairment severity.","metadata":{}},{"cell_type":"markdown","source":"For more granular results, we may look into the distribution of total PCIAT scores.","metadata":{}},{"cell_type":"code","source":"sns.histplot(train_df['PCIAT-PCIAT_Total'], bins=25)\nplt.title('Distribution of the total PCIAT scores')\nplt.xlabel('PCIAT Total')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.424462Z","iopub.execute_input":"2025-01-12T10:41:32.424992Z","iopub.status.idle":"2025-01-12T10:41:32.74663Z","shell.execute_reply.started":"2025-01-12T10:41:32.424942Z","shell.execute_reply":"2025-01-12T10:41:32.745566Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAkUAAAHPCAYAAABdva7iAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWC0lEQVR4nO3deVxU9eL/8dfMACrgIOb2DVyALmiKgrmRikmmgqZtlrfUsnIpl7RfN5fUsrzq7V5zRU00202zrFRSc7+aV1u8WtmiYoZ23ZVhM2Fmfn94mds0qCwDM+D7+Xj4gPmcz/nM55zPAG/P+ZxzDHa73Y6IiIjIdc7o6Q6IiIiIeAOFIhEREREUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAokuvA3LlziYqKKpf36t+/P/3793e83r17N1FRUaxbt65c3n/s2LEkJCSUy3uVVHZ2Ns899xzt27cnKiqKv/71r8Vuo2BMz507VwY99C7Hjh0jKiqKDz/80NNdEan0fDzdAZHi+PDDDxk3bpzjtZ+fH0FBQURFRdGpUyfuueceAgMDS/0+J0+eZMWKFXTp0oUmTZqUuj138ua+FcWrr77KqlWrePLJJ6lfvz4RERFXrLtw4UJuuukmunTpUo49/J+vv/6anTt38vDDD2M2m0vUxjvvvEO1atW455573Nw7Z7t372bAgAGO1z4+PtSrV49bbrmFESNGUL9+faf6WVlZvP7662zYsIH09HSsVisNGjSgU6dODBgwgLp16wKXg/b69evZu3dvoe9733338c033/D888/z4IMPFtqXq/nxxx9LsrkiZUKhSCqkkSNHEhoaSn5+PmfOnGHPnj1MnTqV119/nfnz59O4cWNH3SeeeILBgwcXq/1Tp04xb948QkJCihU8lixZUqz3KYmr9e2ll17C2x9n+K9//YsWLVowfPjwa9Z99dVX6datm8dC0d69e5k3bx533313iUPRsmXLCA4OLvNQVKB///5ER0eTn5/PgQMHWL58Odu2beOTTz5xBJ309HQeeeQR/vOf/9C9e3ceeOABfH19+fHHH1m5ciUbN25k/fr113yvn3/+mW+++YaQkBBWr17tCEURERG8/PLLTnVfeeUV/P39GTp0qPs3WsRNFIqkQoqPjyc6OtrxesiQIezatYuhQ4fy5JNPkpqaStWqVYHL/2P28Snbj3pubi7VqlXDz8+vTN/nWnx9fT36/kVx9uxZbrrpJk93o9Jq1aoV3bt3B+Dee++lUaNGTJkyhY8++oghQ4aQn5/P8OHDOXv2LG+++SatWrVyWn/06NGkpKQU6b0++eQTbrjhBsaOHcvIkSM5duwYoaGh1KpVi969ezvVTUlJITg42KXcm/3222/4+vpiNGqmyfVCIy2VRlxcHE8++STHjx/nk08+cZQXNqdo586d/PnPf6ZVq1bExsbSrVs3XnnlFeDyof/77rsPgHHjxhEVFeU0p6N///707NmTb7/9loceeogWLVo41v3jnKICNpuNV155hfbt2xMTE8PQoUP5z3/+41QnISGBsWPHuqz7+zav1bfC5hTl5OQwffp0OnXqRLNmzejWrRtLlixxOaIUFRXFiy++yMaNG+nZsyfNmjWjR48ebN++/Wq73eHs2bOMHz+eW2+9lejoaHr16sWqVascywvmVx07doytW7c6+n7s2LFC24uKiiInJ4dVq1Y56v5x/2RmZjJ27FhatWrFLbfcwrhx48jNzXVp6+OPP+aee+6hefPmtGnThtGjR7vs/z+aO3eu42jH7bff7tLf/Px8kpOT6dKlC82aNSMhIYFXXnmFS5cuOdpISEjg4MGD7Nmzx7F+wVheuHCBv/3tb9x5553ExsbSsmVLHn/8cX744Yci7O2ia9euHYCj3xs2bOCHH35g6NChLoEIIDAwkNGjRxep7TVr1tCtWzduu+02qlevzpo1a9zXceCtt96iR48etGjRgtatW3PPPfewevVqpzonT55k/PjxdOjQwTEOzz//vNM4pKenM3LkSNq0aUOLFi24//772bp1q1M7BZ/PtWvXMnPmTDp27EiLFi3IysoCYN++fTz22GPccssttGjRgn79+vHVV185tZGVlcVf//pXEhISaNasGXFxcQwcOJDvvvvOrftFyo6OFEml0rt3b1555RV27NjB/fffX2idgwcPMmTIEKKiohg5ciR+fn4cPXqUr7/+Grh86H/kyJHMmTOHBx54gFtuuQWAli1bOtq4cOECgwYNokePHvTq1Ysbbrjhqv1asGABBoOBQYMGcfbsWd544w0eeeQRPv74Y8cRraIoSt9+z26388QTTzjCVJMmTfjnP//Jyy+/7Phj8ntfffUVGzZs4MEH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cPkIg9ls5r333iMgIAB/f3+aN29e4rkBQUFBPPjgg9xzzz2OS/IbNmzodNuAPn36sH79eh5//HESExP55ZdfWL16tcupwOL0LSEhgbZt2zJz5kyOHz9OVFQUO3fuZNOmTTz88MNXPc1YHA888ADLly9n7NixfPfdd4SEhLB+/Xq+/vprxo8fX+JHrzRt2pRdu3axdOlS6tSpQ2hoaKHzQ66kQYMGjBo1ihkzZnD8+HG6dOlCQEAAx44dY+PGjdx///089thjV31/gJkzZ5KUlISvry+dO3emcePG3H333SxfvhyLxULr1q355ptvWLVqFV26dHE6StK0aVOWLVvG/PnzadiwITVr1iQuLo7bbruN5ORkxo0bR2xsLD/99BOrV68u8/knvr6+zJs3j4EDB9KvXz+6d+9Oy5Yt8fX15eDBg6xZswaz2XzFexWtXr2aGjVqEBsbW+jyhIQEVqxYwdatW684l6soHnvsMWrVqkXLli254YYbSEtL4+2336ZTp06Oz9PTTz/Nzp076d+/P/fffz8RERGcPn2adevW8e6772I2mxk8eDBr165l0KBB9O/fn6CgID766COOHTvG3Llzrzn3yWg0MmXKFAYNGkTPnj255557qFu3LidPnmT37t0EBgaycOFCsrOz6dSpE926daNx48b4+/vz+eef88033xR6/zHxTgpFUiHNmTMHuPwLvkaNGkRGRjJ+/PgiPfssISGB48eP88EHH3D+/HmCg4Np06YNI0aMoHr16o52p0+fziuvvMILL7xAfn4+06ZNK/EfrKFDh/Ljjz+yaNEisrOziYuL4/nnn3cciQDo2LEjY8eOZenSpUydOpVmzZqxcOFC/va3vzm1VZy+GY1GFixYwJw5c0hNTeXDDz8kJCSEZ5991nGllDtUrVqVt956i3/84x+sWrWKrKwswsLCmDZtWqkebzF27FgmTZrErFmzuHjxInfffXexQhHA4MGDadSoEa+//rrj/kH16tWjffv213x4bvPmzXnqqad47733+Oc//4nNZmPTpk34+/szZcoUQkNDWbVqFRs3bqRWrVoMGTLE5fElw4YN49dff2Xx4sVkZ2fTpk0b4uLiGDp0KLm5uaxevZrU1FRuvvlmXn31VWbMmFG8nVQCDRs25KOPPuL111/ns88+c1yJ2bBhQ/r06VPoDUjh8g06d+3aRY8ePa44/ywuLo5q1arxySeflCoUPfDAA6xevZqlS5eSk5NDvXr16N+/P08++aSjTt26dVmxYgWzZ89m9erVZGVlUbduXeLj4x1zg2rVqsV7773H3//+d95++21+++03oqKiWLhwIbfddluR+tK2bVuWL1/O/Pnzefvtt8nJyaF27do0b96cBx54ALj8M/DnP/+ZnTt3smHDBux2Ow0aNHB6Jpx4P4PdW2dQioiIiJQjzSkSERERQaFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQF088Zis9vt2Gzuv7WT0Wgok3al6DQGnqcx8DyNgedpDNzPaDQU6bmRCkXFZLPZOXfO9fk3peHjYyQ4OACLJYf8fJtb25ai0Rh4nsbA8zQGnqcxKBs1awZgMl07FOn0mYiIiAgKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiIA+Hi6A/I/JlPpM6rNZsdms7uhNyIiItcXhSIvYDAYsNnsmM3VSt2W1WbjwvkcBSMREZFiUijyAkajAaPRwLL1P3DybHaJ26lT058HuzfBaDQoFImIiBSTQpEXOXUuh+OnszzdDRERkeuSJlqLiIiIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAnhxKMrOziY+Pp6oqCi++eYbp2Xvv/8+3bp1Izo6ml69erFlyxaX9TMzMxk/fjxt2rQhNjaWkSNHcurUqfLqvoiIiFQwXhuK5s+fj9VqdSlfu3YtEydOJDExkZSUFGJiYhg+fDj//ve/neqNGjWKnTt38sILL/CPf/yDI0eOMGjQIPLz88tpC0RERKQi8cpQdPjwYd59911GjBjhsmzOnDn06NGDUaNG0a5dO1588UWio6NJTk521Nm7dy87duzgr3/9K0lJSdx+++3Mnj2bH3/8kQ0bNpTnpoiIiEgF4ZWhaMqUKfTt25ewsDCn8vT0dH7++WcSExOdypOSkti1axeXLl0CYPv27ZjNZtq3b++oEx4eTpMmTdi+fXvZb4CIiIhUOF4XitatW8dPP/3EsGHDXJalpaUBuISliIgI8vLySE9Pd9QLCwvDYDA41QsPD3e0ISIiIvJ7Pp7uwO/l5uYyffp0Ro8eTWBgoMvyjIwMAMxms1N5weuC5RaLherVq7usHxQUxLffflvqfvr4uDdLGo3/DW8GXIJccRSsazJ5Xdb1egX7TPvOczQGnqcx8DyNgWd5VShasGABN9xwA/fee6+nu3JFRqOB4OCAMmnbZDTi42Mq+fr//SEym6u5q0vXHe07z9MYeJ7GwPM0Bp7hNaHo+PHjvPbaayQnJ5OZmQlATk6O42t2djZBQUHA5cvta9eu7VjXYrEAOJabzWZOnDjh8h4ZGRmOOiVls9mxWHJK1cYf+fqaCAysitVmIz/f9Yq7orJabQBYLLmO76VoTCYjZnM17TsP0hh4nsbA8zQGZcNsrlako29eE4qOHTtGXl4egwcPdlk2YMAAWrRowYwZM4DLc4bCw8Mdy9PS0vD19aV+/frA5blDu3btwm63O52OOnLkCJGRkaXua36+ez+ojoGyg91uL3E7BetarTa39/F6oX3neRoDz9MYeJ7GwDO8JhQ1adKEN99806ns+++/Z9q0aUyePJno6Gjq169Po0aNWLduHV26dHHUS01NJS4uDj8/PwDi4+OZP38+u3bt4tZbbwUuB6IDBw7w+OOPl99GiYiISIXhNaHIbDbTtm3bQpc1bdqUpk2bAjBixAieeeYZGjRoQNu2bUlNTWX//v28/fbbjvqxsbF06NCB8ePHM2bMGKpUqcLMmTOJioqia9eu5bI9IiIiUrF4TSgqqp49e5Kbm0tKSgqLFi0iLCyMefPmERsb61Rv1qxZTJs2jUmTJpGfn0+HDh2YMGECPj4VbpNFRESkHBjspZnEch2yWm2cO5ft1jarVPHBbK7G7GVfc+xUZonbCakdyKgHb+H8+Wydiy4mHx8jwcEB2ncepDHwPI2B52kMykbNmgFFmmitGyGIiIiIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgIoFAkIiIiAigUiYiIiAAKRSIiIiKAQpGIiIgI4GWhaNu2bfTr14927drRrFkzbr/9dqZNm0ZmZqajztixY4mKinL5t337dqe2Ll26xN/+9jfat29PTEwMAwcOJC0trbw3SURERCoIH0934PcuXLhA8+bN6d+/PzVq1ODgwYPMnTuXgwcP8tprrznq1a9fn3/84x9O60ZERDi9njJlCqmpqYwdO5a6deuycOFCHnnkEdauXUv16tXLZXtERESk4vCqUNS7d2+n123btsXPz4+JEydy8uRJ6tatC0DVqlWJiYm5YjsnTpxg5cqVPP/889x3330AREdH07lzZ9577z0GDRpUZtsgIiIiFZNXnT4rTI0aNQDIy8sr8jo7duzAZrPRvXt3p3bat2/vcppNREREBLzsSFEBq9VKfn4+hw4dIjk5mYSEBEJDQx3Ljx49yi233MJvv/1GZGQkTz75JF26dHEsT0tL44YbbiAoKMip3YiICFauXFnq/vn4uDdLGo2Gy98YwGAwlLidgnVNJq/Pul6nYJ9p33mOxsDzNAaepzHwLK8MRZ07d+bkyZMAdOzYkRkzZjiWNWnShOjoaG666SYyMzNZtmwZw4YNY/bs2Y4jQxaLpdB5Q2azmYyMjFL1zWg0EBwcUKo2rsRkNOLjYyr5+v/9ITKbq7mrS9cd7TvP0xh4nsbA8zQGnuGVoWjRokXk5uZy6NAhFixYwNChQ1m6dCkmk4mHH37YqW5CQgJ9+/Zlzpw5TqfLyorNZsdiyXFrm76+JgIDq2K12cjPt5a4HavVBoDFkuv4XorGZDJiNlfTvvMgjYHnaQw8T2NQNszmakU6+uaVoahx48YAxMbGEh0dTe/evfnss88KDT1Go5GuXbvy97//nYsXL1K1alXMZjNZWVkudS0Wi8sptZLIz3fvB9UxUHaw2+0lbqdgXavV5vY+Xi+07zxPY+B5GgPP0xh4hteftIyKisLX15dffvmlyOuEh4dz5swZl1NlaWlphIeHu7uLIiIiUgl4fSjat28feXl5ThOtf89ms7Fu3Tr+9Kc/UbVqVQA6dOiA0Whkw4YNjnoZGRns2LGD+Pj4cum3iIiIVCxedfps+PDhNGvWjKioKKpWrcoPP/zAkiVLiIqKokuXLhw/fpyxY8fSo0cPGjZsSEZGBsuWLePbb79l7ty5jnbq1avHfffdx8svv4zRaKRu3bq8+uqrVK9enb59+3pwC0VERMRbeVUoat68OampqSxatAi73U5ISAh9+vThsccew8/Pj4CAAAIDA1mwYAFnz57F19eXZs2akZKSQseOHZ3amjBhAgEBAcyYMYPs7GxatmzJ0qVLdTdrERERKZTBXpqZvdchq9XGuXPZbm2zShUfzOZqzF72NcdOZV57hSsIqR3IqAdv4fz5bE3QKyYfHyPBwQHadx6kMfA8jYHnaQzKRs2aAUW6+szr5xSJiIiIlAeFIhEREREUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBFAoEhEREQEUikREREQAhSIRERERQKFIREREBPCyULRt2zb69etHu3btaNasGbfffjvTpk0jMzPTqd7mzZvp1asX0dHRdOvWjQ8++MClrUuXLvG3v/2N9u3bExMTw8CBA0lLSyuvTREREZEKxqtC0YULF2jevDmTJ09myZIlDBw4kI8++oinnnrKUefLL79k+PDhxMTEkJKSQmJiIs899xzr1q1zamvKlCm8//77jB49mrlz53Lp0iUeeeQRl4AlIiIiAuDj6Q78Xu/evZ1et23bFj8/PyZOnMjJkyepW7cuCxYsoHnz5rz44osAtGvXjvT0dObMmUP37t0BOHHiBCtXruT555/nvvvuAyA6OprOnTvz3nvvMWjQoPLdMBEREfF6XnWkqDA1atQAIC8vj0uXLrF7925H+CmQlJTE4cOHOXbsGAA7duzAZrM51atRowbt27dn+/bt5dZ3ERERqTi86khRAavVSn5+PocOHSI5OZmEhARCQ0M5dOgQeXl5hIeHO9WPiIgAIC0tjdDQUNLS0rjhhhsICgpyqbdy5cpS98/Hx71Z0mg0XP7GAAaDocTtFKxrMnl91vU6BftM+85zNAaepzHwPI2BZ3llKOrcuTMnT54EoGPHjsyYMQOAjIwMAMxms1P9gtcFyy0WC9WrV3dp12w2O+qUlNFoIDg4oFRtXInJaMTHx1Ty9f/7Q2Q2V3NXl6472neepzHwPI2B52kMPMMrQ9GiRYvIzc3l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/vx5x+vs7OxCJ0H7+/vTt29fhg0bVqzObN68+Zp1lixZUqS2qlevztSpU5k6dWqx+iAiIiLXp2KFogcffJAHH3wQgISEBJ577jluv/32MumYiIiISHkq8bmkohzVEREREakoSj3BJisri19//RWLxVLo5eStW7cu7VuIiIiIlLkSh6Jz584xZcoUNmzYgNXqesPBgnsEff/996XqoIiIiEh5KHEomjRpElu2bKF///60atUKs9nszn6JiIiIlKsSh6KdO3fy8MMP8+yzz7qzPyIiIiIeUeI7WletWpWQkBB39kVERETEY0ocinr16sXGjRvd2RcRERERjynx6bNu3brxxRdf8Nhjj/HAAw9Qr149TCaTS72mTZuWqoMiIiIi5aHEoajgJo4An3/+uctyXX0mIiIiFUmJQ9G0adPc2Q8RERERjypxKLr77rvd2Q8RERERjyrxRGsRERGRyqTER4rGjRt3zToGg0FPqRcREZEKocShaPfu3S5lNpuN06dPY7VaqVmzJtWqVStV50RERETKS4lD0ebNmwstz8vLY/ny5bzxxhu89tprJe6YiIiISHly+5wiX19f+vXrR/v27XnppZfc3byIiIhImSizidaNGzfmiy++KKvmRURERNyqxKfPruXzzz/XnCLxOkajAaPR4FJuMhmdvhaFzWbHZrO7rW8iIuJZJQ5F8+bNK7Q8MzOTL774ggMHDjB48OASd0zE3YxGAzWC/TEZrxx8zOaiB3mrzcaF8zkKRiIilYTbQ1FQUBD169dn8uTJ3H///SXumIi7GY0GTEYj7677nlPncpyWGQwGTCYjVqsNu/3aIadOTX8e7N4EX18TVqutVP3SEScREe9Q4lD0ww8/uLMfIuXm1Lkcjp/OciozGAz4+JjIz7cWKRRV9/fFZrMX68jSlbjriNOVTg0Wl0KaiFyvymxOkUhlVrWKD0ajgWXrf+Dk2ewSt1NwxMloNJQqiBTl1GBR6bSgiFyvSh2K9uzZw9atW/n1118BuPHGG7ntttto06ZNqTsn4u0KO+rkCVc7NVgc7gppIiIVUYlD0aVLl/h//+//sXHjRux2O2azGQCLxcLSpUu54447mDFjBr6+vm7rrIhcnbeENBGRiqjEx9qTk5P57LPPGDhwIDt27GDPnj3s2bOHnTt38uijj7JhwwaSk5Pd2VcRERGRMlPiULR69Wruvvtunn32WWrVquUov+GGG/jLX/7CXXfdxSeffOKWToqIiIiUtRKHotOnT9O8efMrLm/evDmnT58uafMiIiIi5arEoahevXrs2bPnisu/+OIL6tWrV9LmRURERMpViUPRXXfdxaeffsqkSZNIS0vDarVis9lIS0vj+eefZ926ddx9993FavPTTz/liSeeID4+npiYGHr37s3KlStd7hvz/vvv061bN6Kjo+nVqxdbtmxxaSszM5Px48fTpk0bYmNjGTlyJKdOnSrp5oqIiEglV+Krz4YOHUp6ejorVqzg/fffx/jf+6PYbJfvCHz33XczdOjQYrX5+uuvExISwtixYwkODubzzz9n4sSJnDhxguHDhwOwdu1aJk6cyNChQ2nXrh2pqakMHz6cd955h5iYGEdbo0aN4tChQ7zwwgtUqVKFWbNmMWjQID744AN8fHR7JhEREXFW4nRgMpmYPn06jzzyCNu3b+f48eMAhISEEB8fT+PGjYvd5oIFC6hZs6bjdVxcHBcuXGDp0qU8+eSTGI1G5syZQ48ePRg1ahQA7dq146effiI5OZmUlBQA9u7dy44dO1iyZAkdOnQAICwsjKSkJDZs2EBSUlJJN1tEREQqqWKFot9++42//vWv/OlPf6J///4ANG7c2CUAvfnmm7z33ns899xzxbpP0e8DUYEmTZqwYsUKcnJyOH/+PD///DN/+ctfnOokJSXx8ssvc+nSJfz8/Ni+fTtms5n27ds76oSHh9OkSRO2b9+uUCQiIiIuihWKli9fzqpVq0hNTb1qvdtuu42///3vREZG8uCDD5aqg1999RV169YlMDCQr776Crh81Of3IiIiyMvLIz09nYiICNLS0ggLC8NgcH4OVHh4OGlpaaXqD4CPT+kfpfB7judVGXDpc3EUrGsyubd/lUXBfjEYDK772fC/rwauPQaO9b1kzK66bR7oT0kUvKc+v56jMfA8jYFnFSsUffrpp3Tt2pX69etftV6DBg3o3r07a9euLVUo+vLLL0lNTWXMmDEAZGRkADjunl2g4HXBcovFQvXq1V3aCwoK4ttvvy1xf+BygAkODihVG1diMhrx8TGVfP3//hC54yGllZnJdOX97GMq2v4veMaYt43Z1bbNE/0pCX1+PU9j4HkaA88oVij66aefuPPOO4tUNzY2ttCrworqxIkTjB49mrZt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k0yfPp2LFy8yadIkT3dPRESkVEp72qt2sHuPNFWGZ8NV2lD03nvvkZ2dzbx586hRowYAVquVyZMnM2TIEOrWrevZDoqIiIhXqbQ3b9y+fTtxcXGOQASQmJiIzWZj586dnuuYiIiIeCWD/VrT2yuouLg47r33Xp555hmn8o4dO9K7d2+X8qKy290/M95gAKPRSFbOJaylaNvXx4h/VV+1U8bteGOf1I7aUTtqp6K3YzIaCPT3w2az4e5kYjQaijR3qtKePrNYLJjNZpfyoKAgMjIyStzu5XtIlP7un4UJ9HfPBHC1Uz7tuLMttaN21I7aUTuXGd1wM8kSv7fH3llERETEi1TaUGQ2m8nMzHQpz8jIICgoyAM9EhEREW9WaUNReHg4aWlpTmWZmZmcPn2a8PBwD/VKREREvFWlDUXx8fF8/vnnWCwWR9m6deswGo20b9/egz0TERERb1Rprz7LyMigR48ehIWFMWTIEMfNG++8807dvFFERERcVNpQBJcf8/HSSy85PeZj9OjResyHiIiIuKjUoUhERESkqCrtnCIRERGR4lAoEhEREUGhSERERARQKBIREREBFIpEREREAIUiEREREUChyKMOHz7MwIEDiYmJoX379rz88stcunTJ092qtD799FOeeOIJ4uPjiYmJoXfv3qxcuZI/3pXi/fffp1u3bkRHR9OrVy+2bNnioR5XbtnZ2cTHxxMVFcU333zjtExjUPZWrVrFXXfdRXR0NG3btuXxxx/n4sWLjuWbN2+mV69eREdH061bNz744AMP9rby2bRpE3369CE2NpYOHTrw1FNPkZ6e7lJPPwvlS6HIQzIyMnj44YfJy8tj7ty5jB49mhUrVjB9+nRPd63Sev3116lWrRpjx45lwYIFxMfHM3HiRJKTkx111q5dy8SJE0lMTCQlJYWYmBiGDx/Ov//9b891vJKaP38+VqvVpVxjUPYWLFjASy+9RFJSEkuWLOHFF18kNDTUMR5ffvklw4cPJyYmhpSUFBITE3nuuedYt26dh3teOezevZvhw4dz0003kZyczPjx4/nhhx949NFHnYKpfhY8wC4esXDhQntMTIz9/PnzjrL33nvP3qRJE/uJEyc817FK7OzZsy5lEyZMsLds2dJutVrtdrvd3rVrV/vTTz/tVOeBBx6wP/744+XSx+vFoUOH7DExMfZly5bZIyMj7fv373cs0xiUrcOHD9tvvvlm+9atW69Y59FHH7U/8MADTmVPP/20PTExsay7d12YOHGiPSEhwW6z2Rxlu3btskdGRtq/+OILR5l+FsqfjhR5yPbt24mLi6NGjRqOssTERGw2Gzt37vRcxyqxmjVrupQ1adKErKwscnJySE9P5+effyYxMdGpTlJSErt27dKpTTeaMmUKffv2JSwszKlcY1D2PvzwQ0JDQ+nUqVOhyy9dusTu3bvp3r27U3lSUhKHDx/m2LFj5dHNSi0/P5+AgAAMBoOjrHr16gCO0/n6WfAMhSIPSUtLIzw83KnMbDZTu3Zt0tLSPNSr689XX31F3bp1CQwMdOz3P/6hjoiIIC8vr9Dz/VJ869at46effmLYsGEuyzQGZW/fvn1ERkYyf/584uLiaNasGX379mXfvn0A/PLLL+Tl5bn8foqIiADQ7yc3uOeeezh8+DDvvPMOmZmZpKen88orr3DzzTfTsmVLQD8LnqJQ5CEWiwWz2exSHhQUREZGhgd6dP358ssvSU1N5dFHHwVw7Pc/jkvBa41L6eXm5jJ9+nRGjx5NYGCgy3KNQdk7ffo0O3bs4OOPP+b5558nOTkZg8HAo48+ytmzZzUG5aBVq1bMmzePGTNm0KpVK7p06cLZs2dJSUnBZDIB+lnwFIUiuS6dOHGC0aNH07ZtWwYMGODp7lw3FixYwA033MC9997r6a5ct+x2Ozk5OcyePZvu3bvTqVMnFixYgN1u5+233/Z0964LX3/9Nc8++yz3338/b7zxBrNnz8ZmszF48GCnidZS/hSKPMRsNpOZmelSnpGRQVBQkAd6dP2wWCwMGjSIGjVqMHfuXIzGyz8GBfv9j+NisViclkvJHD9+nNdee42RI0eSmZmJxWIhJycHgJycHLKzszUG5cBsNlOjRg0aN27sKKtRowY333wzhw4d0hiUgylTptCuXTvGjh1Lu3bt6N69O4sWLeLAgQN8/PHHgH4feYpCkYeEh4e7nJvPzMzk9OnTLufyxX0uXrzIkCFDyMzMZPHixY7JjYBjv/9xXNLS0vD19aV+/frl2tfK5tixY+Tl5TF48GBat25N69atGTp0KAADBgxg4MCBGoNycNNNN11x2W+//UaDBg3w9fUtdAwA/X5yg8OHDzuFUoB69eoRHBzML7/8Auj3kacoFHlIfHw8n3/+uSP1w+UJqEajkfbt23uwZ5VXfn4+o0aNIi0tjcWLF1O3bl2n5fXr16dRo0Yu92JJTU0lLi4OPz+/8uxupdOkSRPefPNNp3/jxo0DYPLkyTz//PMag3LQuXNnLly4wPfff+8oO3/+PN999x1NmzbFz8+Ptm3bsn79eqf1UlNTiYiIIDQ0tLy7XOnceOONHDhwwKns+PHjnD9/npCQEEC/jzzFx9MduF717duXt956i2HDhjFkyBBOnjzJyy+/TN++fV3+WIt7TJ48mS1btjB27FiysrKcboB288034+fnx4gRI3jmmWdo0KABbdu2JTU1lf3792uuhRuYzWbatm1b6LKmTZvStGlTAI1BGevSpQvR0dGMHDmS0aNHU6VKFRYtWoSfnx8PPvggAE888QQDBgzghRdeIDExkd27d7NmzRpmzpzp4d5XDn379mXq1KlMmTKFhIQELly44Jhv9/tL8PWzUP4MdvsfnnEg5ebw4cO89NJL7N27l4CAAHr37s3o0aP1P4AykpCQwPHjxwtdtmnTJsf/gN9//31SUlL49ddfCQsL4+mnn6Zz587l2dXrxu7duxkwYAArV64kOjraUa4xKFvnzp1j2rRpbNmyhby8PFq1asW4ceOcTq1t2rSJWbNmceTIEW688UYGDx7Mfffd58FeVx52u5333nuPZcuWkZ6eTkBAADExMYwePdpx64MC+lkoXwpFIiIiImhOkYiIiAigUCQiIiICKBSJiIiIAApFIiIiIoBCkYiIiAigUCQiIiICKBSJiIiIAApFIiIiIoBCkYhIhXLs2DGioqL48MMPPd0VkUpHzz4TkTLx4YcfOh74CuDn58eNN95I+/btefLJJ6lVq5ZT/TNnzrBkyRK2bNnCf/7zHwwGA+Hh4XTp0oV+/fphNpsB6N+/P+fPn2fNmjUu72m1WunUqROnT59m0aJFdOrUqdC+XElISAibN292Kb/aI2J+b9q0adxzzz1XrfPOO+9QrVq1a9YTkfKnUCQiZWrkyJGEhoZy6dIlvvrqK5YtW8a2bdtYs2YN1apVA2D//v0MHjyYnJwcevXq5Xg47LfffktKSgpffvklr7322jXf61//+henT58mJCSE1atXO0JR69atefnll53qTpgwgebNm3P//fc7ygICAgptd/z48WRnZzteb9++nTVr1jBu3DiCg4Md5S1btrxmH5ctW0ZwcLBCkYgXUigSkTIVHx/veNhrnz59qFGjBkuXLmXTpk307NkTi8XC8OHDMZlMrFq1yuWBmKNHj2bFihVFeq9PPvmEpk2bctdddzFz5kxycnLw9/enfv361K9f36nuCy+8QP369endu/c12+3SpYvT6zNnzrBmzRq6dOnieJCwiFR8mlMkIuWqXbt2wOW5MQDvvfceJ0+eZOzYsS6BCKBWrVo8+eST12z34sWLfPbZZyQlJZGYmMjFixfZtGmTezt/Ffn5+SQnJ9OlSxeaNWtGQkICr7zyCpcuXXLUSUhI4ODBg+zZs4eoqCiioqLo378/ABcuXOBvf/sbd955J7GxsbRs2ZLHH3+cH374ody2QeR6pyNFIlKufvnlFwBq1KgBwObNm6latSrdunUrVbubN28mJyeHHj16ULt2bdq0acPq1au58847S9vlIpkwYQKrVq2iW7duDBw4kP379/Pqq69y+PBhkpOTgcun4V566SX8/f0ZOnQogGNuVXp6Ohs3bqR79+6EhoZy5swZli9fTr9+/Vi7di1169Ytl+0QuZ4pFIlImcrKyuLcuXNcunSJr7/+muTkZKpWrUrnzp0BSEtLo1GjRvj5+ZXqfT755BNiY2P5v//7PwB69OjB5MmTOXfuHDVr1iz1dlzNDz/8wKpVq+jTpw9TpkwB4KGHHqJmzZq89tpr/Otf/6Jdu3Z06dKFWbNmERwc7HLaLioqivXr12M0/u8Afu/evUlMTGTlypUMGzasTLdBRHT6TETK2COPPEJcXBydOnVi9OjRBAQEMG/ePMeRj6ysrCtOcC6q8+fPs2PHDnr27Oko69q1KwaDgU8//bRUbRfFtm3bABg4cKBT+aOPPuq0/Gr8/PwcgchqtXL+/Hn8/f0JCwvjwIEDbu6xiBRGR4pEpExNmjSJsLAwTCYTtWrVIiwszOloSGBgoNOVXSWRmppKXl4eTZo04ejRo47y5s2bs3r1ah566KFStX8tx48fx2g00qBBA6fy2rVrYzabi3Q5v81m48033+Tdd9/l2LFjWK1Wx7KCU40iUrYUikSkTDVv3txx9VlhwsPD+f7777l06VKJT6GtXr0agD//+c+FLk9PT3e5+qwsGAyGEq+7cOFCZs+ezb333stTTz1FUFAQRqORqVOnYrfb3dhLEbkShSIR8ajOnTuzd+9eNmzY4HT6q6jS09PZu3cv/fr1o3Xr1k7LbDYbzz77LKtXry7SFWwlFRISgs1m4+jRo05X0J05cwaLxUJISIij7ErBaf369bRt25apU6c6lVssFqd7IYlI2dGcIhHxqL59+1K7dm2mT5/OkSNHXJafPXuW+fPnX3H9gqNEjz/+ON27d3f6l5SU5LgKrSwV3CTyjTfecCpfunSp03KAatWqYbFYXNowmUwuR4Q+/fRTTp486e7uisgV6EiRiHhUUFAQycnJDB48mLvuusvpjtYHDhxgzZo1xMbGXnH91atX06RJE8dVZ3+UkJDASy+9xHfffedo190aN27M3XffzfLly7FYLLRu3ZpvvvmGVatW0aVLF8e9mQCaNm3KsmXLmD9/Pg0bNqRmzZrExcVx2223kZyczLhx44iNjeWnn35i9erV5XLaT0QuUygSEY9r0aIFq1evZsmSJWzdupWPP/4Yo9FIeHg4gwcPpl+/foWu991335GWlnbVU2OdO3fmpZdectztuqxMmTKF0NBQVq1axcaNG6lVqxZDhgxh+PDhTvWGDRvGr7/+yuLFi8nOzqZNmzbExcUxdOhQcnNzWb16Nampqdx88828+uqrzJgxo8z6LCLODHbN4BMRERHRnCIRERERUCgSERERARSKRERERACFIhERERFAoUhEREQEUCgSERERARSKRERERACFIhERERFAoUhEREQEUCgSERERARSKRERERACFIhEREREA/j+x9khLnXetaQAAAABJRU5ErkJggg=="},"metadata":{}}],"execution_count":92},{"cell_type":"markdown","source":"It appears that a large portion of participants scored somewhere around zero for the PCIAT, with some participants obtaining exactly zero:","metadata":{}},{"cell_type":"code","source":"len(train_df[train_df['PCIAT-PCIAT_Total'] == 0])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.748177Z","iopub.execute_input":"2025-01-12T10:41:32.748959Z","iopub.status.idle":"2025-01-12T10:41:32.757446Z","shell.execute_reply.started":"2025-01-12T10:41:32.74891Z","shell.execute_reply":"2025-01-12T10:41:32.756213Z"}},"outputs":[{"execution_count":93,"output_type":"execute_result","data":{"text/plain":"313"},"metadata":{}}],"execution_count":93},{"cell_type":"markdown","source":"Although this could be an error due to missing PCIAT scores, it seems that individual scores are mostly present for these observations, meaning they genuinely scored nothing. For each question, there are no more than three participants who skipped it while scoring zero on the test overall:","metadata":{}},{"cell_type":"code","source":"(train_df[train_df['PCIAT-PCIAT_Total'] == 0] \\\n    .filter(regex=r'PCIAT-PCIAT_\\d\\d') \\\n    .isna().sum() <= 3).all()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.759051Z","iopub.execute_input":"2025-01-12T10:41:32.760015Z","iopub.status.idle":"2025-01-12T10:41:32.77245Z","shell.execute_reply.started":"2025-01-12T10:41:32.759976Z","shell.execute_reply":"2025-01-12T10:41:32.771291Z"}},"outputs":[{"execution_count":94,"output_type":"execute_result","data":{"text/plain":"True"},"metadata":{}}],"execution_count":94},{"cell_type":"markdown","source":"Naturally, this raises a concern over the validity of the obtained responses. Since the PCIAT questions are essentially self-reported by children and their parents, the resulting SII depends largely on subjective interpretation and honesty of the participants. It is possible that some parents may either be unaware of the problems faced by their children or simply try to portray them in a better light, skewing the PCIAT scores downwards.","metadata":{}},{"cell_type":"markdown","source":"Additional insights may be obtained by looking into the distribution of individual PCIAT scores across all participants.","metadata":{}},{"cell_type":"code","source":"# sns.barplot(data=train_df.filter(regex=r'PCIAT-PCIAT_\\d\\d').sum())\n# plt.title('Distribution of individual PCIAT scores')\n# plt.xticks(rotation=90)\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.773942Z","iopub.execute_input":"2025-01-12T10:41:32.774391Z","iopub.status.idle":"2025-01-12T10:41:32.78116Z","shell.execute_reply.started":"2025-01-12T10:41:32.774342Z","shell.execute_reply":"2025-01-12T10:41:32.780071Z"}},"outputs":[],"execution_count":95},{"cell_type":"markdown","source":"Apparently, questions 4, 7, and 12 were the least applicable to the participants. According to the dataset's dictionary, the questions are:\n\n- _Q4_. How often does your child form new relationships with fellow online users?\n- _Q7_. How often does your child check his or her e-mail before doing something else?\n- _Q12._ How often does your child receive strange phone calls from new \"online\" friends?","metadata":{}},{"cell_type":"markdown","source":"Since Q4 and Q12 are about social aspects of Internet use, these questions may not be universally applicable (e.g., for children who spend most of their time online playing single-player video games). However, arguably only Q7 and Q12 can correlate with problematic Internet use, as forming relationships with other people online can be interpreted as a positive factor (particularly in the absence of other social issues in offline life).","metadata":{}},{"cell_type":"markdown","source":"Conversely, questions 1, 2, 3, and 5 appear to be the most highly scored overall:\n\n- _Q1_. How often does your child disobey time limits you set for online use?\n- _Q2_. How often does your child neglect household chores to spend more time online?\n- _Q3_. How often does your child prefer to spend time online rather than with the rest of your family?\n- _Q5_. How often do you complain about the amount of time your child spends online?","metadata":{}},{"cell_type":"markdown","source":"While these should be more indicative of PIU, they may also be influenced by parents who are overly critical towards their children or technology as a whole. Notably, some questions may not be applicable to all participants (e.g., online time limits are less common for young adults, while young children are unlikely to have household chores). This means that the distribution of scores can be affected by age and other demographics related to cultural norms, and that respondents are unlikely to score close to 100.","metadata":{}},{"cell_type":"markdown","source":"## Demographics","metadata":{}},{"cell_type":"markdown","source":"While comparatively simplistic, demographics available in this dataset can affect the applicability of certain PCIAT questions, while simultaneously serving as proxies for various physical features (e.g., height, weight). Furthermore, demographics can be used to assess the representativeness of the dataset, which is significant for generalization of the study's results beyond the scope of the competition.","metadata":{}},{"cell_type":"markdown","source":"Overall, there are only two demographics available in the dataset: sex and age. Thus, the simplest one to consider first is the distribution of boys and girls among the participants of the study.","metadata":{}},{"cell_type":"code","source":"# plt.figure(figsize=(4, 3))\n\n# sns.barplot(train_df['Basic_Demos-Sex'].value_counts(normalize=True))\n# plt.title('Distribution of the sex of participants')\n\n# plt.xticks([0, 1], labels=['Male', 'Female'])\n# plt.xlabel(None)\n\n# plt.ylabel('Percentage')\n# plt.gca().yaxis.set_major_formatter(\n#     mticker.PercentFormatter(xmax=1))\n\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.782936Z","iopub.execute_input":"2025-01-12T10:41:32.783676Z","iopub.status.idle":"2025-01-12T10:41:32.793724Z","shell.execute_reply.started":"2025-01-12T10:41:32.783637Z","shell.execute_reply":"2025-01-12T10:41:32.79269Z"}},"outputs":[],"execution_count":96},{"cell_type":"markdown","source":"As could be expected, there are more boys than girls among the participants, with about 63% respondents being male. Although this is not a perfect balance, both genders are relatively well-represented in the dataset.","metadata":{}},{"cell_type":"markdown","source":"However, it is more interesting to look at the relation between sex and SII instead.","metadata":{}},{"cell_type":"code","source":"x = np.arange(len(sii_labels))\nw = 0.35\n\nvc_boys = train_df[train_df['Basic_Demos-Sex'] == 0]['sii'] \\\n    .value_counts(normalize=True) \\\n    .sort_index().reindex(range(len(sii_labels)))\nplt.bar(x, vc_boys, w, label='Boys', color='lightblue')\n\nvc_girls = train_df[train_df['Basic_Demos-Sex'] == 1]['sii'] \\\n    .value_counts(normalize=True) \\\n    .sort_index().reindex(range(len(sii_labels)))\nplt.bar(x + w, vc_girls, w, label='Girls', color='pink')\n\nplt.title('Distribution of SII by the sex of particiants')\nplt.xticks(x, labels=sii_labels)\nplt.ylabel('Percentage')\nplt.gca().yaxis.set_major_formatter(\n    mticker.PercentFormatter(xmax=1))\nplt.legend()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:32.795121Z","iopub.execute_input":"2025-01-12T10:41:32.795446Z","iopub.status.idle":"2025-01-12T10:41:33.09342Z","shell.execute_reply.started":"2025-01-12T10:41:32.795413Z","shell.execute_reply":"2025-01-12T10:41:33.092299Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"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OSj5+vrivffegyAICA4OxsCBA9G8eXONNhKJBKampmjYsCGqVq2qs2KJiIiISlORg5KjoyMcHR0BAIsWLULz5s1Rp04dnRdGREREpG9aPUfpww8/1FUdRERERAZHq6AEAHfv3sWePXvw8OFDpKSk5LkTTiKRYPPmzdquhoiIiKjUaRWUfvzxR0ybNg1GRkaoW7cu5HJ5njYFPUKAiIiIyFBpFZQiIiLQsGFDREVFwdbWVlc1ERERERkErR44+eTJE3z88ccMSURERFQuaRWUnJ2d8eTJE13VQkRERGRQtApKoaGh2L17N/78809d1UNERERkMLS6RikqKgqWlpbo378/6tevj5o1a0Iq1cxeEokEa9eu1apIIiIiIn3QKijdunULAFCzZk2kp6fjzp07edpIJBJtVkFERESkN1oFpePHj+uqDiIiIiKDo9U1SkRERETlmdZP5s7JycHhw4dx/vx5PH/+HOPHj4ezszNSU1Nx9uxZNGvWjF+MS0RERGWSVkFJoVBg+PDhuHz5MszMzJCRkYEBAwYAAMzMzBAWFoZevXph0qRJOimWiIiIqDRpdept2bJluH37Nr755hscO3ZM4+tKZDIZunbtilOnTmldJBEREZE+aBWUYmJiMHDgQLRp0ybfu9scHByQkJCgzSqIiIiI9EaroJSamgo7OzvR+dnZ2cjJydFmFURERER6o1VQsre3x7Vr10Tnx8bGwtHRUZtVEBEREemNVkHpk08+wZ49exAdHa2+PkkikUCpVGLFihX47bff0Lt3b50USkRERFTatLrrbfDgwbhz5w4mTZoEuVwOAAgJCcGLFy+QnZ2N3r17IyAgQCeFEhEREZU2rYKSRCJRPwLgyJEjuH//PlQqFezt7eHr64sWLVroqk4iIiKiUqf1AycBoHnz5mjevLnW/Zw6dQpRUVG4c+cO0tLSUKNGDXTq1Anjxo2DpaWlut3x48excuVK/PPPP6hVqxZGjhyJjz/+WD0/OzsbixYtws8//wxra2tMnz4d7du311jXoEGD0KFDBwwZMkTruomIiKh80uoapfj4+Ld+39vx48fx8OHDQvf34sULuLq6Yu7cufjmm2/w2Wef4ccff8SECRPUbX7//XeMGzcObm5uiIqKgq+vL6ZPn47Dhw+r2+zZswfHjx/Hl19+ifbt22PSpEl48eKFev6hQ4fw7Nkz9cMxiYiIiPKj1RGlJUuWIC0tDR06dMh3/vbt2yGXy7FixYpC9efv76/x2tPTEyYmJpg5cyYSExNRo0YNrF27Fq6urpg3bx4AwMvLC/Hx8Vi1ahW6desG4PXddv3794ePjw+8vb2xe/duXLp0Ce3bt0dmZiaWLFmCsLAwGBnp5IAaERERlVNaHVH666+/0Lp1a9H5rVq1wu+//67NKmBtbQ0AyMrKglKpxPnz59WBKFf37t1x9+5d9dErpVKJypUrAwCMjIxgYmICpVIJANiwYQMaNWqENm3aaFUXERERlX9aBSWFQgFzc3PR+WZmZhqnvAorJycHr169wrVr1xAZGYkOHTrAzs4ODx48QFZWFurVq6fRPvdZTXFxcQAAFxcX7N+/H8+ePcOPP/6I1NRUNGzYEAkJCdi2bRtCQ0OLXBMRERFVPFqde6pZsyb+/PNP9OvXL9/5f/zxB955550i9+vj44PExEQAgLe3N7766isAQEpKCgCoH0WQK/d17vxBgwbh1KlT6q9WmTx5Muzs7BAUFIR+/fqhTp06Ra6pIEZGWmXOPGQy3fZHmsrz+5u7beV5G4njXFFwnPVPq6Dk5+eHNWvWwNXVFQMGDIBU+nogc3JysG3bNkRHRyMwMLDI/W7YsAEZGRm4c+cO1q5di8DAQGzcuLHQy1taWmLHjh14+PAhLC0tYW1tjbNnz+LKlStYsmQJ/vnnH8yaNQs3btxAgwYNsGDBAtjb2xe5zlxSqQQ2NuJH1sjwyOWm+i6hxFWEbSSOc0XBcdYfrYLSqFGj8Mcff2DhwoVYt24d6tatCwD4559/kJSUhJYtW2L06NFF7rdBgwYAAHd3d7i4uMDf3x9Hjx5F/fr1Abz+jrn/UigUAAArKyv1NIlEoj5ylJ2djQULFuDzzz+HqakppkyZAjc3N2zYsAFLly7FlClTsGPHjqK/Af+fSiVAoXhZ7OXzI5NJ+cEoQQpFBnJyVPouo0Tk7jvleRuJ41xRcJxLjlxuWqgjdVoFJRMTE3z77bfYt28fjh49igcPHgAAXF1d0aVLF/Tq1Ut9lKm4nJ2dYWxsjAcPHqBDhw4wNjZGXFwcvL291W1yr01689qlXNu3b4eNjQ26d++OtLQ0XLlyBQsXLoSpqSn69OmDDz74AOnp6W+93qog2dncgcuSnBxVuR+zirCNxHGuKDjO+lPsoJSZmYkVK1bA09MTH3/8scYDH3Xp0qVLyMrKgp2dHUxMTODp6YkjR45g8ODB6jbR0dFwdHSEnZ1dnuWTkpKwZs0abN68OU/9AJCRkQEA6u+qIyIiIspV7KBUuXJl7NixQ306TBfGjRuHJk2awNnZGZUrV8aNGzfwzTffwNnZGZ06dQIAjB49GoMGDcKcOXPg6+uL8+fP48CBA6LPalq+fDm6d++uPp1nYWGBxo0bIzw8HEOHDsXXX38NFxcXWFhY6Gw7iIiIqHzQ6tRb48aNcevWLV3VAldXV0RHR2PDhg0QBAG1a9dGQEAAhg0bBhMTEwCvvy5l9erVWLlyJXbv3o1atWohLCwMvr6+efq7evUqYmJicOjQIY3pS5cuxYwZMzBu3Dg4OztjyZIlOtsGIiIiKj8kghbnnK5du4aRI0ciODgYH374YYV90nVOjgpJSek67dPISAobG3Mcv/cUL15l67RvXbOzrIyWtWyAP/4G0nR7UbvOWZgBHo2QnJxebs/35+475XkbieNcUXCcS46trXnJX8wdGhoKiUSCWbNmISwsDDVq1EClSpU02kgkEvz000/arIaIiIhIL7QKStbW1rC2tlY/FoCIiIioPNEqKG3dulVXdRAREREZHD4TnYiIiEiE1kEpLS0NGzZswLBhw9CrVy9cvnwZAPDixQts3LgR9+/f17pIIiIiIn3Q6tTb48ePMWDAADx+/Bjvvvsu4uLikJ7++u4va2tr/PDDD0hISMCMGTN0UixReSSVSiCVSnTWX0l+iaZKJUCl4sNZiaji0CooLVmyBOnp6fjxxx9ha2uL1q1ba8zv1KkTTp48qc0qiMq13C9U1mVQylUS3xWoUglITk5nWCKiCkOroBQbG4vBgwejfv36SE5OzjO/Tp06+Pfff7VZBVG5lns06cKjZKQqDft5WZYmRmhRywZSqYRBiYgqDK2CUmZmJmxtbUXn556GI6K3S1VmG/yDRYmIKiKtLmJwdHTEhQsXROcfO3YMjRo10mYVRERERHqjVVAaPHiw+rvZ0tLSAACCIOD+/fuYMmUKLl68iCFDhuiiTiIiIqJSp9WpN39/fzx69Ajh4eFYuXIlAGD48OEQBAFSqRQTJ05Ep06ddFEnERERUakrVlB69eoVYmJi8PDhQ1SpUgVHjx7FL7/8gvv370OlUsHe3h5dunRBnTp1dF0vERERUakpclB6/vw5+vTpg4cPH0IQBEgkElSuXBkRERE8zUZERETlSpGvUVqzZg0SEhIwZMgQrF+/Hl988QUqVaqE2bNnl0R9RERERHpT5CNKp0+fhr+/P6ZOnaqeVrVqVUyePBlxcXGoV6+eTgskIiIi0pciH1H6999/4eHhoTHNw8MDgiDg+fPnOiuMiIiISN+KHJSUSiUqVaqkMc3ExAQAkJ3NB+YRERFR+VGsu94SEhJw7do19evU1FQAwP379yGXy/O0b9y4cTHLIyIiItKfYgWl8PBwhIeH55k+d+5cjde5d8Vdv369eNURkcGRybR6Tm2pUKkEfh8dEelEkYPSokWLSqIOIjJwlWRSQBAgl5vqu5QCCSoBScnpDEtEpLUiB6UPP/ywJOogIgNnLJMCEglwPQ54manvcsSZVYakYT1IpRIGJSLSmlZfYUJEFdDLTCDtpb6rICIqFYZ/sQERERGRnjAoEREREYlgUCIiIiISwaBEREREJIJBiYiIiEgEgxIRERGRCAYlIiIiIhEMSkREREQiGJSIiIiIRDAoEREREYlgUCIiIiISwaBEREREJIJBiYiIiEgEgxIRERGRCAYlIiIiIhEMSkREREQiGJSIiIiIRDAoEREREYlgUCIiIiISYVBB6dChQxg9ejTatWsHNzc3+Pv7Y/fu3RAEQaPdrl270LVrV7i4uKBnz544ceKExvz09HRMnjwZHh4e8Pf3x+XLlzXmZ2VloVu3bjh69GiJbxMRERGVXQYVlDZt2gRTU1OEhoZi7dq1aNeuHWbOnInIyEh1m4MHD2LmzJnw9fVFVFQU3NzcMG7cOFy8eFHdZv369bhz5w5WrlwJR0dHBAcHIysrSz1/8+bNqFmzJjp37lyam0dERERljJG+C/ivtWvXwtbWVv26VatWePHiBTZu3IgxY8ZAKpVi1apV6NGjB4KDgwEAXl5euHXrFiIjIxEVFQUAiI2NRWBgILy9vdGwYUO0adMG9+/fR/369fH06VNERUVh+/bt+thEIiIiKkMM6ojSf0NSroYNGyItLQ0vX75EfHw87t27B19fX4023bt3x9mzZ6FUKgEASqUSlStXBgD137nzli1bBn9/f9SvX78kN4WIiIjKAYMKSvn5448/UKNGDVhYWCAuLg4AULduXY02jo6OyMrKQnx8PADAxcUFO3fuRHJyMrZs2QJLS0s4ODjg4sWLOH36NIKCgkp9O4iIiKjsMahTb2/6/fffER0djalTpwIAUlJSAAByuVyjXe7r3Pljx47F0KFD4eXlBWNjYyxcuBCmpqYICwtDcHAwLC0tdV6rkZFuM6dMZvAZtkwzlPfXUOooj8r7e5u7feV9Oys6jrP+GWxQevz4MSZOnAhPT08MGjSoSMvWrl0b0dHRiI+PR9WqVWFhYYFdu3ZBEAR88sknuHTpEubOnYuHDx/Cw8MDCxYsyPe0X2FJpRLY2JgXe3kqfXK5qb5LoBJWUca4omxnRcdx1h+DDEoKhQIjRoyAtbU1Vq9eDan0dZK2srICAKSmpqJatWoa7f87HwBkMhkcHBzU7VeuXInIyEhkZWUhKCgIgwYNQr9+/RASEoKwsDAsX7682PWqVAIUipfFXj4/MpmUH4wSpFBkICdHpe8yOM4lyFDGuKTk7jvlfTsrOo5zyZHLTQt1pM7gglJmZiZGjRqF1NRU7NixQ+M0Wb169QAAcXFx6n/nvjY2NkadOnXy7XP16tVo27Yt3NzccOPGDSQmJqJv374wMzNDQEAAQkNDta47O5s7cFmSk6PimJVzFWWMK8p2VnQcZ/0xqJOe2dnZCA4ORlxcHL7++mvUqFFDY36dOnXg4OCAw4cPa0yPjo5Gq1atYGJikqfPu3fvYv/+/QgJCdGYnpmZCQDIyMjQ8VYQERFReWFQR5Tmzp2LEydOIDQ0FGlpaRoPkWzUqBFMTEwQFBSEkJAQ2Nvbw9PTE9HR0bh8+TK2bduWb58LFizAiBEj1Kfq6tWrh+rVq2PRokXo1asX1q9fDy8vr9LYPCIiIipjDCooxcbGAgAWL16cZ15MTAzs7Ozg5+eHjIwMREVFYcOGDahbty4iIiLg7u6eZ5mjR48iISEBgwcPVk8zMTFBeHg45s6di6CgIDRv3hzTp08vuY0iIiKiMsuggtLx48cL1S4gIAABAQEFtuvcuXO+X1PSrFkz7N+/v8j1ERERUcViUNcoERERERkSBiUiIiIiEQxKRERERCIYlIiIiIhEMCgRERERiWBQIiIiIhLBoEREREQkgkGJiIiISASDEhEREZEIBiUiIiIiEQxKRERERCIYlIiIiIhEMCgRERERiWBQIiIiIhLBoEREREQkwkjfBRARVQRSqQRSqURn/clkUo2/dUmlEqBSCTrvl6gsYlAiIiphUqkENjbmOg1KueRyU533qVIJSE5OZ1giAoMSEVGJyz2adOFRMlKV2fou560sTYzQopYNpFIJgxIRGJSIiEpNqjIbL14ZdlAiIk28mJuIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEmFQQen+/fuYNWsW/P390ahRI/j5+eXbbteuXejatStcXFzQs2dPnDhxQmN+eno6Jk+eDA8PD/j7++Py5csa87OystCtWzccPXq0xLaFiIiIyj6DCkq3b9/GqVOn8O6778LR0THfNgcPHsTMmTPh6+uLqKgouLm5Ydy4cbh48aK6zfr163Hnzh2sXLkSjo6OCA4ORlZWlnr+5s2bUbNmTXTu3LmkN4mIiIjKMCN9F/BfHTp0QKdOnQAAoaGhuHr1ap42q1atQo8ePRAcHAwA8PLywq1btxAZGYmoqCgAQGxsLAIDA+Ht7Y2GDRuiTZs2uH//PurXr4+nT58iKioK27dvL7XtIiIiorLJoI4oSaVvLyc+Ph737t2Dr6+vxvTu3bvj7NmzUCqVAAClUonKlSsDgPrv3HnLli2Dv78/6tevr+vyiYiIqJwxqCNKBYmLiwMA1K1bV2O6o6MjsrKyEB8fD0dHR7i4uGDnzp1wc3PD999/D0tLSzg4OODixYs4ffo0Dh8+rI/yiYjKDJnMoP4fnS+VSoBKJei7DCrnylRQSklJAQDI5XKN6bmvc+ePHTsWQ4cOhZeXF4yNjbFw4UKYmpoiLCwMwcHBsLS01HltRka6/aFSFn5IlWWG8v4aSh3lkSG9t4ZUS0EqyaSAIEAuN9V3KQUSVAJSFBkQhPIblnL3nbK0D5U3ZSooFVbt2rURHR2N+Ph4VK1aFRYWFti1axcEQcAnn3yCS5cuYe7cuXj48CE8PDywYMEC2NraFnt9UqkENjbmOtwCKmll4ZcAaYdjXDzGMikgkQDX44CXmfouR5xZZUga1oO1tZm+KykV3J/1p0wFJSsrKwBAamoqqlWrpp6uUCg05gOATCaDg4ODuv3KlSsRGRmJrKwsBAUFYdCgQejXrx9CQkIQFhaG5cuXF7sulUqAQvGy2MvnRyaT8oNRghSKDOTkqPRdBse5BBnKGANldJxfZgJpuv25VhIMaZxLQu6+U963Ux/kctNCHakrU0GpXr16AF5fq5T779zXxsbGqFOnTr7LrV69Gm3btoWbmxtu3LiBxMRE9O3bF2ZmZggICEBoaKjWtWVncwcuS3JyVByzco5jXDFUlHGuKNtpiMrUSc86derAwcEhz8XY0dHRaNWqFUxMTPIsc/fuXezfvx8hISEa0zMzXx9SzsjIKLmCiYiIqEwzqCNKGRkZOHXqFAAgISEBaWlp6lDUsmVL2NraIigoCCEhIbC3t4enpyeio6Nx+fJlbNu2Ld8+FyxYgBEjRqhP1dWrVw/Vq1fHokWL0KtXL6xfvx5eXl6ls4FERERUphhUUHr+/DkmTJigMS339ZYtW+Dp6Qk/Pz9kZGQgKioKGzZsQN26dREREQF3d/c8/R09ehQJCQkYPHiwepqJiQnCw8Mxd+5cBAUFoXnz5pg+fXrJbhgRERGVSQYVlOzs7HDz5s0C2wUEBCAgIKDAdp07d873a0qaNWuG/fv3F6tGIiIiqjjK1DVKRERERKWJQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJYFAiIiIiEsGgRERERCSCQYmIiIhIBIMSERERkQgGJSIiIiIRDEpEREREIhiUiIiIiEQwKBERERGJMNJ3AUREROWFVCqBVCrRWX8ymVTjb11SqQSoVILO+y1vGJSIiIh0QCqVwMbGXKdBKZdcbqrzPlUqAcnJ6QxLBWBQIiIi0oHco0kXHiUjVZmt73LeytLECC1q2UAqlTAoFaBMBqW7d+8iLCwMf/31F8zNzeHv74/g4GCYmJio2+zatQsRERHIzs7GwIEDERgYqNFHREQErl27hrVr15Z2+UREVI6lKrPx4pVhB6VcJXFKT9f0fYqwzAWllJQUDB48GA4ODli9ejUSExOxePFiZGZmYtasWQBeB6n58+dj5syZAIA5c+bA1dUVrVu3BgA8evQIW7ZswZ49e/S2HURERPpSSSYFBKFETunpmqASkKTHU4RlLij98MMPSE9PR0REBKytrQEAOTk5mDt3LkaNGoUaNWrg3Llz8PLyQkBAAADgyJEjOH36tDooLV68GH379kWdOnX0tRlERER6YyyTAhIJcD0OeJmp73LEmVWGpGE9vZ4iLHNB6ddff0WrVq3UIQkAfH19MXv2bMTGxuKjjz6CUqlE5cqV1fNNTU2hVCoBAOfOncOlS5ewePHi0i6diIjIsLzMBNJe6rsKg2b4JyffEBcXh3r16mlMk8vlqFatGuLi4gAALi4uOHPmDG7cuIEbN27gzJkzcHFxQU5ODhYsWIApU6bAzMxMH+UTERFRGVLmjigpFArI5fI8062srJCSkgIAaN68Obp37w5/f38AQMeOHeHn54fvvvsOcrkcfn5+Oq1JKpXA1tZcp31K/v/dpa3tbCEY+A0JstxbYV3eg8EX+//fWCsrU4MoleNcAgxsjAGOc4ngOGuF44xCP8ahzAWlwpo3bx6CgoKQnZ2NmjVrIikpCZGRkdi4cSPS0tIwb948nDp1ClWrVkVoaCi8vb2LvS6JRAKZTPfPzQCAykayEum3RJgY67uCQpNKDetgKsdZ9wxtjAGOc0ngOGuJ41zwuvW25mKSy+VITU3NMz0lJQVWVlYa06pVq4aaNWsCAFauXImuXbuiYcOGWLNmDe7fv49ffvkFY8aMwYQJE5CUlFQq9RMREVHZUeaCUr169dTXIuVKTU3F06dP81y7lOvvv//GL7/8guDgYADA2bNn8cEHH8DKygo9evSAsbExLl26VNKlExERURlT5oJSu3btcObMGSgUCvW0w4cPQyqVok2bNvkuM3/+fAQFBcHGxkY9LSMjA8DrRwsolUoIhnyOloiIiPSizF2j1KdPH2zduhVjx47FqFGjkJiYiCVLlqBPnz6oUaNGnvY//fQT0tPT0adPH/U0Ly8vfP/996hfvz7OnTsHAGjatGmpbQMRERGVDRKhDB5KyX3y9n+/wmTixIkaX2ECAC9fvkS3bt2wbNkytGzZUj09LS0Ns2fPxsmTJ1GlShWEhoaiQ4cOpb0ZREREZODKZFAiIiIiKg1l7holIiIiotLCoEREREQkgkGJiIiISASDEhEREZEIBiUiIiIiEQxKRERERCIYlMqI1atXw9nZGf37988zb8GCBXwOVDmVO+7e3t5QqVR55vfp0wfOzs4IDQ1Vt3d3d1fPP3/+PJydnXHlypW3rmfTpk1wdnbWbfHlVFHHRBv6+GwrFAqsXr0ad+7cKdX1lmU//fQTPvnkE3h4eKBZs2bw9fXF9OnT8fz5c32XRjrAoFTG/P777zh//ry+y6BSZGxsjOTkZFy4cEFjekJCAi5evAgzMzP1tICAAGzevLm0S6xwijImZY1CoUBERASDUiFFRUXh888/R/PmzbFixQqsWLECH3/8Ma5evYonT57ouzzSgTL3FSYVmZmZGerXr481a9bA09NT3+VQKTE2NkarVq1w8OBBjXE/ePAg3nvvPUil//v/zjvvvIN33nlHH2VWKEUZE0OgVCphZGRkcHWVB1u3bsWHH36ocQSxffv2GD58eL5HHPWF+0Dx8R0rY8aMGYNz587hzz//FG2TkJCA8ePHw8PDA25ubhg2bBhu3ryp0aZDhw6YN28etm/fDh8fH3h4eGDMmDFISkrSaKdQKDBnzhy0bdsWTZo0wUcffYTTp0+XyLaROD8/Pxw5cgRZWVnqaQcOHICfn59GuzdPveUnLS0Nn3/+Odzd3eHl5YUlS5YgJyenROouzwo7JgBw4cIF9OnTB66urvD09MQXX3yBFy9eaLRJTExEYGAgmjZtCm9vb0RFReW73sePHyMkJASenp5wdXVF//79cfXqVY02uZ/vqKgo+Pj4wNXVFS9evMDdu3cxceJEtG/fHk2bNkX37t3x7bffqn+hP3z4EB07dgQATJgwAc7OznB2dsbDhw8BvP5lu3z5cvj4+KBJkybw9fXFzz//XOz3sDxQKBSoXr16vvPeDCV79+7FBx98ABcXF3h7e2PFihXqz97Dhw/h7OyMw4cP5+nno48+wqRJk9SvtdkHCqqD8mJQKmN8fHzQqFEjREZG5js/LS0NAwcOxN9//425c+di6dKlSE5OxoABA/Dvv/9qtD1+/DiOHz+OWbNmYfr06bhw4QLmz5+vnq9UKvHZZ5/h5MmTCA4Oxtq1a+Ho6IhRo0blCV5Usnx8fKBUKhEbGwsAuHPnDm7evInu3bsXua9p06bh6NGjCAkJwZdffom7d+/ydF0xFHZMrl69is8++wzm5uYIDw9HSEgITpw4gREjRmj8chozZgyuXr2KOXPmYPbs2Th27BiOHDmi0VdKSgr69euHGzduYObMmVi9ejVMTU0xePDgPNfD/PLLLzh58iSmT5+ONWvWwMzMDE+ePEHdunUxe/ZsbNiwAZ9++ikiIyOxZs0aAED16tUREREBAJg0aRJ27NiBHTt2qIPAhAkTsGPHDnz22WdYv349vL29MWXKFJw6dUq3b24Z0rhxY/zwww/YtWsXnj59Ktpu48aNmDFjBtq2bYt169ZhxIgR2LJlC1asWAEAsLOzg5ubG6KjozWWu3fvHq5du6YO4NruAwXVQfkQqExYtWqV4ObmJgiCIBw5ckRwcnISLl26JAiCIISFhQk+Pj6CIAjC5s2bBWdnZ+HOnTvqZZOTkwU3Nzdh0aJF6mk+Pj5Cu3bthFevXmmso3HjxkJOTo4gCIKwe/duoVGjRsLt27c1agkICBDGjx9fMhtKGv477pMmTRJCQkIEQRCEFStWCL179xYEQRB69uwpTJ06NU97QRCEc+fOCU5OTsLly5cFQRCE27dvC87OzsKuXbvUbbKzs4UOHToITk5OpbJNZV1Rx2Ts2LHC+++/LyiVSnUfv/32m+Dk5CTExMQIgiAIp06dEpycnIQzZ86o2ygUCsHd3V392RYEQQgPDxc8PDyEZ8+eqae9evVKeP/994Uvv/xSPc3Hx0do2bKlkJ6eLrodKpVKyMrKEtauXSu0adNGPT0+Pl5wcnISDh06pNH+7NmzgpOTk/Dbb79pTA8ODhY+/vjjt71l5drNmzeFzp07C05OToKTk5PQoUMHYf78+UJ8fLy6TWpqquDm5iZ89dVXGst+9913gqurq5CUlCQIwuuf3y4uLkJqaqq6zerVq4UWLVqof1Zrsw8Utg7SxCNKZVDnzp3h5OSU71Gl33//He+99x4cHR3V06ytrdG6dWv88ccfGm1btGgBExMT9WtHR0dkZWWp/1cSGxsLJycnODg4IDs7W/2ndevWBd5FRbrn5+eHmJgYZGZmIjo6Gj169ChyH1euXIEgCOjcubN6mkwmQ6dOnXRZaoVRmDH5/fff0bFjRxgbG6untW3bFnK5XP2ZvHz5MiwtLdGqVSt1G0tLS7Ru3Vqjr9jYWHh6esLKykr9eZRKpWjRokWez6Snp2eei8pfvXqFVatWoXPnznBxcUHjxo2xYsUKPH36FOnp6W/d1tjYWFhbW8PLyyvPz4Pr169X2FM3Tk5OOHDgADZs2IBBgwbB0tISW7duRc+ePXH9+nUAwF9//YWXL1+iW7dued67zMxM3L59GwDg6+uLrKwsHDt2TN1/dHQ0unTpov5Zrc0+UNg6SBMv5i6DJBIJAgMDMWnSJFy7dk1jnkKhQNWqVfMsU6VKlTwfArlcrvE694P46tUrAEBycjL+/vtvNG7cOE9/MplMq22gomvbti2MjY0RHh6Ohw8fwtfXt8h9PH36FMbGxrCystKYXqVKFV2VWaEUZkwUCkW+72+VKlWQkpICAHjy5AlsbW3zbfNfycnJuHjxYr6fSXt7+7cuCwBLly7Frl27MHbsWDRp0gSWlpaIiYnB2rVr8erVK5ibm4tua3JyMl68eJHvuoHX+1ZFvZHAxMQE7du3R/v27QEAv/32G0aNGoXIyEhEREQgOTkZAPDhhx/mu3zuZRHVqlWDp6cnDh48iF69euHGjRu4e/cuZs2apW6rzT5Q2DpIE4NSGeXr64vVq1djzZo1qFWrlnq6lZUV/vnnnzztnz9/nueXY0GsrKzg7OyMBQsWaF0vac/Y2BhdunTBpk2b0KpVq3wDcUGqVauGrKwspKSkaOwPfN5L8RRmTKysrPJ9f//7maxevXqeGyly27zZl7e3NyZMmJCn7X+PDgOv/0P1psOHD6N3794YOXKkelphry+ysrKCra0tNmzYkO/8/IJeReXt7Y0GDRrg7t27AKAe54iIiHzDpJ2dnfrfPXr0wNy5c5GcnIyDBw+iWrVqaNmypXq+NvtAUeqg/2FQKqOkUikCAwMRGhqq8SHy8PDAkSNHEBcXh3r16gF4ffHfmTNn0Lt37yKto3Xr1jh16hSqV6+OGjVq6LR+Kp6AgAA8f/4cn376abGWd3FxAQAcPXoUn3zyCQAgJydH41A/FU1BY+Lh4YGYmBiEhobCyOj1j9zY2FgoFAp4eHgAeD0uqampOHv2rPr0W2pqKs6cOQNra2t1X61bt8ZPP/0ER0fHYj2r6dWrVxqnAHNycnDw4EGNNrnzc48s/3fdX3/9NYyNjdGgQYMir7u8evbsWZ6AnJmZiX///Rf169cHALi7u8PU1BSPHz/WOO2dny5dumDu3Lk4cuQIDh48iO7du2vcPafNPlCUOuh/GJTKsA8++ACRkZE4f/48ateuDeD1baSbNm3CqFGjEBwcjEqVKmHt2rUwMjLC4MGDi9R/r1698MMPP2DQoEEYOnQoHBwckJqair///htZWVmYPHlySWwWvYWrq6v6DqXiqF+/Pjp37oyFCxfi1atXsLOzw3fffadxizsVTUFjEhgYiD59+mDUqFEYOHAgnj17hq+++gqurq7qUzXt2rVD48aNMWXKFISEhMDS0hIbNmyAhYWFRl9DhgzBzz//jAEDBmDQoEGoVasWkpKScOnSJdSoUQNDhgx5a62tW7fGrl27UL9+fdjY2OC7776DUqnUaFOtWjXI5XIcPHgQdnZ2MDExgbOzM9q0aQMfHx8MHz4cw4cPh7OzMzIyMnDnzh3cv3+/wh55/uCDD+Dj44O2bduievXqSExMxLZt25CcnKz+mSuXyzF+/HgsXboUjx8/RsuWLSGTyRAfH4+YmBj1nWvA/44YRUZG4smTJ3keN6HNPlCUOuh/GJTKMJlMhpEjR2LGjBnqaRYWFti6dSsWL16MmTNnQqVSoVmzZti2bRtq1qxZpP5NTEywZcsWrF69GuvWrcPTp09hbW2NRo0aoV+/frreHColCxcuxLx587Bs2TKYmJjgww8/RMuWLbFkyRJ9l1YuNWnSBN9++y2WL1+OoKAgmJmZoUOHDpg6dar6Wj+JRII1a9Zg9uzZmDVrFuRyuTpUxcTEqPuysbHBjh07sHLlSixbtgwvXrxAlSpV0LRp00IdIZg5cyZmz56N+fPnw9TUFB9++CE6d+6s8TNEKpVi0aJFWL58OYYMGQKlUomYmBjY2dlh1apV2LBhA77//nskJCTA0tIS7733Hj766CPdv3FlxLhx43DixAksXrwYSUlJsLGxgbOzMzZt2gQvLy91u6FDh6JGjRrYuHEjtm3bBiMjI9jb2+P999/XOMoHvL5J4Pjx47C3t4erq6vGPG33gaLUQa9JBEEQ9F0EERERkSHi4wGIiIiIRDAoEREREYlgUCIiIiISwaBEREREJIJBiYiIiEgEgxIRERGRCAYlIiIiIhEMSkREREQiGJSIiIiIRDAoEREREYlgUCIiIiISwaBEREREJOL/AaXDBVYUBs37AAAAAElFTkSuQmCC"},"metadata":{}}],"execution_count":97},{"cell_type":"markdown","source":"Apparently, girls are less likely to be impaired from Internet use than boys, implying that gender (or other features correlating with it) may have predictive power in this problem, assuming the sample is representative. Generally, it is plausible that boys may spend more time online due to certain Internet activities sometimes being considered to be male-dominant (e.g., playing video games), though this could also be a consequence of cultural or even neurological factors.","metadata":{}},{"cell_type":"markdown","source":"Continuing on, the following plot showcases the distribution of the participants' age. Evidently, the study focused more on young children, with ages 6-10 being among the most common, while young adults (19 and older) are heavily underrepresented. This makes sense in the context of PCIAT, which considers the parents' judgement and, therefore, assumes that the child is under the care of other adults.","metadata":{}},{"cell_type":"markdown","source":"However, this also means that the participants who are above 18 must be living with their parents and are thus not yet following an independent lifestyle. Hypothetically, young adults who are living on their own are less likely to be impaired from Internet use, as they must be able to carry out their daily duties and responsibilities on their own. Thus, older participants of this study are likely to be more biased towards having PIU without being representative of the more general tendencies in young adults.","metadata":{}},{"cell_type":"code","source":"# plt.figure(figsize=(6, 4))\n# sns.barplot(train_df['Basic_Demos-Age'].value_counts())\n# plt.title('Distribution of the age of participants')\n# plt.ylabel('Count')\n# plt.xlabel('Age')\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.095083Z","iopub.execute_input":"2025-01-12T10:41:33.095599Z","iopub.status.idle":"2025-01-12T10:41:33.101102Z","shell.execute_reply.started":"2025-01-12T10:41:33.095547Z","shell.execute_reply":"2025-01-12T10:41:33.099859Z"}},"outputs":[],"execution_count":98},{"cell_type":"markdown","source":"Furthermore, the following plot shows that higher levels of impairment severity correlate with older age, where young adults with absent or mild severity are outliers.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(6, 3))\nsns.boxplot(data=train_df, x='sii', y='Basic_Demos-Age')\nplt.title('Distribution of SII by the age of participants')\nplt.xticks(x, labels=sii_labels)\nplt.ylabel('Age')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.102326Z","iopub.execute_input":"2025-01-12T10:41:33.102779Z","iopub.status.idle":"2025-01-12T10:41:33.400757Z","shell.execute_reply.started":"2025-01-12T10:41:33.102744Z","shell.execute_reply":"2025-01-12T10:41:33.399516Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 600x300 with 1 Axes>","image/png":"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LnavlAO+vt1QoYLmAV+hQkV07uxnoIiIiKg8YtJRTkyfPveNz3PyKElERKQfTDrKibffro569eQAgHr15Hj77eoGjoiIiMobduiXI3z0ORERGRKTjnJk8OC+6n+vX7/dgJEQEVF5xO6VcuLHH3fn+5mIiEjfmHSUE/v37833MxERkb4x6SgHxowZXqTpRERE+sCko4x79uwZ0tJStc5LS0vFs2fPxA2IiIjKLSYdZVxIyIQSzSciItIVJh1l3NdfLy7RfCIiIl1h0lHG2drawsLCSus8Kysr2NraihsQERGVW0w6yoHly1drnb5smfbpRERE+sCko5zo1q1nvp+JiIj0jUlHOdGjx0f5fiYiItI3Pga9HOGjz4mIyJDY0kFERESiYNJBREREomDSQURERKJg0kFERESi4EDSUkYQBKSnK/W2bACQSCR6Wb65uUxvyyYiIuPHpKMUEQQB8+fPxs2bNwwdSrHUrSvH5MkzmXgQEZFW7F4hIiIiUbCloxSRSCSYPHmmXrpXlEolgoJGAgCWLAmHTCbT+TrYvUJERPlh0lHKSCQSyGQV9LoOmUym93UQERG9id0rREREJAomHURERCQKJh1EREQkCiYdREREJAomHURERCQKJh1EREQkCiYdREREJAo+p4OIiEolfb6LSt+USqXWfxsTfTzwkUkHERGVSunpSowcOdjQYZRY9tOgjU14+HqdP0iS3StEREQkCrZ0EBFRqTfQxg5mRvZuJ0EQAMCo3kmVIQjY9Pyp3pbPpIOIiEo9M4nE6JIOGFu8ImD3ChEREYmCSQcRERGJgkkHERERiaJUjemIj4/HunXrcPHiRcTFxeGdd97BgQMHNMr0798fv//+e67vRkVFwdnZWaxQiYiIqIhKVdIRFxeH48ePo3HjxlCpVOqRv29q0qQJJk2apDHN0dFRjBCJiIiomEpV0uHj44P3338fABASEoIrV65oLWdtbQ13d3cRIyMiIqKSKlVjOqTSUhUOERER6VCpaukorN9//x3u7u7IyspC48aNMX78eDRv3tzQYRGRgfFdHYalj3d1UNlidElH8+bN0b17d9SuXRsPHz7EunXrMGjQIGzZsgUeHh4lWrapadltacnK+t+2mZpKy/S2lgesT+2Uyld8V4cBrVmzUafv6sh5nJP49HFtMbqkY9y4cRqf27VrB39/f4SFhWHN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"},"metadata":{}}],"execution_count":99},{"cell_type":"markdown","source":"## Correlations","metadata":{}},{"cell_type":"markdown","source":"While the dataset contains a comparatively large number of features, it is unlikely that all of them will be informative for SII prediction. For example, seasons of participation (the only non-encoded categorical features within the dataset) should not be expected to hold any predictive power for the target feature as they are only relevant to the survey but bear little significance on a person's Internet habits and are thus of little interest.","metadata":{}},{"cell_type":"markdown","source":"As for the numerical features, it should be expected that various physical measures will be related with each other (e.g., height, weight, waist circumference, BMI). However, it is not immediately clear which features are the most significant for predicting SII. Thus, we may look at the strength of correlations between the total PCIAT score (being more suitable as a regression target) and other non-target numerical features, limiting the output only to several most significant features.","metadata":{}},{"cell_type":"code","source":"train_df[num_cols] \\\n    .filter(regex=r'^(?!(PCIAT-PCIAT_\\d\\d|sii))') \\\n    .corr()['PCIAT-PCIAT_Total'].abs() \\\n    .sort_values(ascending=False)[1:16]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.402389Z","iopub.execute_input":"2025-01-12T10:41:33.402907Z","iopub.status.idle":"2025-01-12T10:41:33.443826Z","shell.execute_reply.started":"2025-01-12T10:41:33.402857Z","shell.execute_reply":"2025-01-12T10:41:33.442595Z"}},"outputs":[{"execution_count":100,"output_type":"execute_result","data":{"text/plain":"Physical-Height                           0.420765\nBasic_Demos-Age                           0.409559\nPreInt_EduHx-computerinternet_hoursday    0.374124\nPhysical-Weight                           0.353048\nPhysical-Waist_Circumference              0.327013\nFGC-FGC_CU                                0.287494\nBIA-BIA_BMI                               0.248060\nPhysical-BMI                              0.240858\nSDS-SDS_Total_T                           0.237718\nSDS-SDS_Total_Raw                         0.234432\nFGC-FGC_PU                                0.196006\nBIA-BIA_Frame_num                         0.193631\nFGC-FGC_GSD                               0.160472\nFGC-FGC_SRL_Zone                          0.148850\nPhysical-Systolic_BP                      0.147081\nName: PCIAT-PCIAT_Total, dtype: float64"},"metadata":{}}],"execution_count":100},{"cell_type":"markdown","source":"Therefore, it appears that the most informative features include height, age, daily hours spent at the computer, weight, waist circumference, number of curl ups, BMI, and sleep disturbance, along with several other measures of fitness.","metadata":{}},{"cell_type":"markdown","source":"Interestingly, BMI appears in the dataset twice: as part of physical measures and as part of bio-electrical impedance analysis. Additionally, the following plot demonstrates that the two measures may differ, particularly for some participants. This could be explained by the measurements being collected during different seasons or using different tools. Regardless, one of these measures may be dropped due to redundancy (e.g., the one with lower correlative power).","metadata":{}},{"cell_type":"code","source":"plt.scatter(train_df['Physical-BMI'], train_df['BIA-BIA_BMI'], s=6)\nplt.title('Differences in measures of body-mass index')\nplt.xlabel('BMI (Physical)')\nplt.ylabel('BMI (BIA)')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.445316Z","iopub.execute_input":"2025-01-12T10:41:33.445796Z","iopub.status.idle":"2025-01-12T10:41:33.763783Z","shell.execute_reply.started":"2025-01-12T10:41:33.445736Z","shell.execute_reply":"2025-01-12T10:41:33.762562Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"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IQeTiQzrRpxYL+LFuhEnR64Xb283i2dp1asxPERERES1wcBDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSx8BDREREksfAQ0RERJLHwENERESSVy8DT1paGp599llERESgW7duWLRoEYqLi+1dLCIiIhIpJ3sXoKby8vIwbtw4tGjRAkuWLEFWVhbeeecd3L17F/PmzbN38YiIiEiE6l3g2bRpEwoLC7F06VJ4enoCAHQ6HebPn4+JEyfC19fXvgUkIiIi0al3XVpHjhxBVFSUMewAQExMDPR6PY4dO2a/glGNqTVaLNv2E15aehTLtv0EtUZr7yIREZFE1bvAk56ejpYtW5ocUyqV8PHxQXp6up1KRbWRmJyCs6m3kKsuxtnUW0hMTrF3kYiISKLqXZdWfn4+lEql2XEPDw/k5eXd17WdnKyf/xQKucn/6W/pf+RDL5R+rRdKH9uiDirDuhEn1ot4sW7EifVimXoXeGxFLpfBy8vNZtdXKl1tdu36qk0Lb5y4eBN6vQC5XIY2LbxtWgeVYd2IE+tFvFg34sR6qVq9CzxKpRIFBQVmx/Py8uDh4VHr6+r1AvLzi+6naBVSKORQKl2Rn6+BTqe3+vXrs9H9g1Cs1SHteh5UzTwwun8QcnIK6+z9WTfixHoRL9aNODlyvSiVrha3bNW7wNOyZUuzsToFBQW4deuW2diemiopsd0Pik6nt+n166OGzgpMGdLO5Jg9PiPWjTixXsSLdSNOrJeq1bsOv549e+L7779Hfn6+8djevXshl8vRrVs3O5aMiIiIxKreBZ6nn34abm5umDp1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"},"metadata":{}}],"execution_count":101},{"cell_type":"markdown","source":"Furthermore, it is notable that there are two features representing sleep disturbance: a raw score and a $t$-score. In this case, it is also possible to omit one of the two features due to redundancy.","metadata":{}},{"cell_type":"markdown","source":"Conversely, features which are the least correlated with PCIAT include physical activity questionnaire scores, fitness zones (i.e., whether particular fitness exercises need improvement), as well as various compositions of body elements, as per the following:","metadata":{}},{"cell_type":"code","source":"train_df[num_cols] \\\n    .filter(regex=r'^(?!(PCIAT-PCIAT_\\d\\d|sii))') \\\n    .corr()['PCIAT-PCIAT_Total'].abs() \\\n    .sort_values(ascending=True)[1:16]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.765389Z","iopub.execute_input":"2025-01-12T10:41:33.765865Z","iopub.status.idle":"2025-01-12T10:41:33.807394Z","shell.execute_reply.started":"2025-01-12T10:41:33.765817Z","shell.execute_reply":"2025-01-12T10:41:33.806193Z"}},"outputs":[{"execution_count":102,"output_type":"execute_result","data":{"text/plain":"FGC-FGC_CU_Zone                0.004454\nFGC-FGC_GSD_Zone               0.006861\nBIA-BIA_BMC                    0.008870\nFGC-FGC_GSND_Zone              0.009525\nPAQ_C-PAQ_C_Total              0.021943\nBIA-BIA_LDM                    0.025885\nPAQ_A-PAQ_A_Total              0.026854\nBIA-BIA_ECW                    0.035568\nBIA-BIA_FFM                    0.037009\nBIA-BIA_BMR                    0.037009\nFGC-FGC_TL_Zone                0.037214\nPhysical-HeartRate             0.037594\nBIA-BIA_Fat                    0.038548\nFitness_Endurance-Max_Stage    0.041720\nBIA-BIA_TBW                    0.043015\nName: PCIAT-PCIAT_Total, dtype: float64"},"metadata":{}}],"execution_count":102},{"cell_type":"markdown","source":"To gain a better sense of the most significant features, four of them are displayed on the following chart. Notably, height is distributed close to normally, with some skewness towards lower values (presumably, since most of the participants are children). Weight appears to have invalid observations valued at zero, as well as some high outliers. Waist circumference appears plausible, and daily Internet hours make sense if most participants are very young.","metadata":{}},{"cell_type":"code","source":"# _, axes = plt.subplots(2, 2)\n\n# sns.histplot(train_df['Physical-Height'], ax=axes[0][0])\n# sns.histplot(train_df['Physical-Weight'], ax=axes[0][1])\n# sns.histplot(train_df['Physical-Waist_Circumference'], ax=axes[1][0])\n\n# sns.barplot(\n#     train_df['PreInt_EduHx-computerinternet_hoursday']\n#         .value_counts(normalize=True),\n#     ax=axes[1][1])\n\n# axes[0][0].set_xlabel('Height')\n# axes[0][1].set_xlabel('Weight')\n# axes[1][0].set_xlabel('Waist circumference')\n\n# axes[1][1].set_ylabel('Percentage')\n# axes[1][1].set_xlabel('Internet hours per day')\n# axes[1][1].set_xticks(\n#     ticks=range(4),\n#     labels=['<1h', '~1h', '~2h', '>3h'])\n# axes[1][1].yaxis.set_major_formatter(\n#     mticker.PercentFormatter(xmax=1))\n\n# plt.tight_layout()\n# plt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.808925Z","iopub.execute_input":"2025-01-12T10:41:33.809997Z","iopub.status.idle":"2025-01-12T10:41:33.814688Z","shell.execute_reply.started":"2025-01-12T10:41:33.809963Z","shell.execute_reply":"2025-01-12T10:41:33.81347Z"}},"outputs":[],"execution_count":103},{"cell_type":"markdown","source":"## Anomalies","metadata":{}},{"cell_type":"markdown","source":"Naturally, the dataset also contains anomalies, particularly in BIA measurements.","metadata":{}},{"cell_type":"code","source":"train_df.filter(regex=r'BIA-BIA_.{3,4}$').describe() \\\n    .transpose()[['mean', 'std', 'min', 'max']]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.822786Z","iopub.execute_input":"2025-01-12T10:41:33.82397Z","iopub.status.idle":"2025-01-12T10:41:33.871869Z","shell.execute_reply.started":"2025-01-12T10:41:33.82393Z","shell.execute_reply":"2025-01-12T10:41:33.870692Z"}},"outputs":[{"execution_count":104,"output_type":"execute_result","data":{"text/plain":"                     mean          std          min          max\nBIA-BIA_BMC      6.719826    92.586325    -7.789610    4115.3600\nBIA-BIA_BMI     19.367048     5.047848     0.048267      53.9243\nBIA-BIA_BMR   1237.018187  1872.383246   813.397000   83152.2000\nBIA-BIA_DEE   2064.693747  2836.246272  1073.450000  124728.0000\nBIA-BIA_ECW     20.825346    73.266287     1.789450    3233.0000\nBIA-BIA_FFM     74.021708   199.433753    28.900400    8799.0800\nBIA-BIA_FFMI    15.030554     5.792505     7.864850     217.7710\nBIA-BIA_FMI      4.336495     6.356402  -194.163000      28.2515\nBIA-BIA_Fat     16.855020   199.372119 -8745.080000     153.8200\nBIA-BIA_ICW     33.173380    56.272346    14.489000    2457.9100\nBIA-BIA_LDM     20.022990    70.215610     4.635810    3108.1700\nBIA-BIA_LST     67.301883   108.705918    23.620100    4683.7100\nBIA-BIA_SMM     34.389466    84.050607     4.655730    3607.6900\nBIA-BIA_TBW     53.998726   129.362539    20.589200    5690.9100","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>mean</th>\n      <th>std</th>\n      <th>min</th>\n      <th>max</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>BIA-BIA_BMC</th>\n      <td>6.719826</td>\n      <td>92.586325</td>\n      <td>-7.789610</td>\n      <td>4115.3600</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_BMI</th>\n      <td>19.367048</td>\n      <td>5.047848</td>\n      <td>0.048267</td>\n      <td>53.9243</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_BMR</th>\n      <td>1237.018187</td>\n      <td>1872.383246</td>\n      <td>813.397000</td>\n      <td>83152.2000</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_DEE</th>\n      <td>2064.693747</td>\n      <td>2836.246272</td>\n      <td>1073.450000</td>\n      <td>124728.0000</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_ECW</th>\n      <td>20.825346</td>\n      <td>73.266287</td>\n      <td>1.789450</td>\n      <td>3233.0000</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_FFM</th>\n      <td>74.021708</td>\n      <td>199.433753</td>\n      <td>28.900400</td>\n      <td>8799.0800</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_FFMI</th>\n      <td>15.030554</td>\n      <td>5.792505</td>\n      <td>7.864850</td>\n      <td>217.7710</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_FMI</th>\n      <td>4.336495</td>\n      <td>6.356402</td>\n      <td>-194.163000</td>\n      <td>28.2515</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_Fat</th>\n      <td>16.855020</td>\n      <td>199.372119</td>\n      <td>-8745.080000</td>\n      <td>153.8200</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_ICW</th>\n      <td>33.173380</td>\n      <td>56.272346</td>\n      <td>14.489000</td>\n      <td>2457.9100</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_LDM</th>\n      <td>20.022990</td>\n      <td>70.215610</td>\n      <td>4.635810</td>\n      <td>3108.1700</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_LST</th>\n      <td>67.301883</td>\n      <td>108.705918</td>\n      <td>23.620100</td>\n      <td>4683.7100</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_SMM</th>\n      <td>34.389466</td>\n      <td>84.050607</td>\n      <td>4.655730</td>\n      <td>3607.6900</td>\n    </tr>\n    <tr>\n      <th>BIA-BIA_TBW</th>\n      <td>53.998726</td>\n      <td>129.362539</td>\n      <td>20.589200</td>\n      <td>5690.9100</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":104},{"cell_type":"markdown","source":"Almost all of the above features have non-sensical maximum values, such as absurdly high basal metabolic rate (BMR), daily energy expenditure (DEE), and fat-free mass (FFM). Some features contain negative values, even though they must all be positive.","metadata":{}},{"cell_type":"markdown","source":"Interestingly, heart rates also seem to contain abnormally low or high values (below 60 and above 120) despite being normally distributed.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(6, 4))\nsns.histplot(train_df['Physical-HeartRate'])\nplt.xlabel('Heart rate')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:33.873264Z","iopub.execute_input":"2025-01-12T10:41:33.873719Z","iopub.status.idle":"2025-01-12T10:41:34.172179Z","shell.execute_reply.started":"2025-01-12T10:41:33.873684Z","shell.execute_reply":"2025-01-12T10:41:34.171064Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 600x400 with 1 Axes>","image/png":"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mjTZE2JLSko0bNgwJSYm6q677vJehO33v/89F2EDAMBgTTacSMcvX//QQw/ps88+U0xMjEaMGKEpU6aoZcuW4S4NAACcRJMOJwAAoPFpsuecAACAxolwAgAAjEI4AQAARiGcAAAAoxBOAACAUQgnAADAKIQTBO3w4cNKT09XcnKy/vWvf/msW758uS677DL16tVLV1xxhdatWxemKs3wxhtv6Morr1SvXr3Ur18/3XnnnTpy5JevKl+7dq2uuOIK9erVS5dddplWrFgRxmrD6/3339fIkSOVmpqqtLQ0TZo0Sbt3764yrjk+x7799ltlZ2drxIgR6tGjh4YPH17tuEB6U1paqhkzZqhv375KTU3VxIkTtW/fvvp+CA3KX7/Kysr05JNP6tprr9X555+vCy64QOPGjdO2bduqzEW/qlqzZo2Sk5OrHReqfhFOELSnnnpKbre7yvKVK1dq1qxZysjIUF5enlJSUjR+/Hh9/vnnDV+kARYtWqSHHnpImZmZWrJkiR588EHFx8d7e/fJJ59o/PjxSklJUV5enjIyMnT//fdr1apVYa684W3atEnjx4/XmWeeqYULF2rGjBn697//rdtvv90nzDXX59iOHTu0fv16nXHGGeratWu1YwLtzeTJk7Vx40bNnj1bjz76qIqLizVmzBi5XK4GeCQNw1+/fvjhB73yyisaOHCg5s+fr4ceekilpaW6/vrrtXPnTp+x9MvXkSNHlJOTo1NPPbXa9SHrlwUE4ZtvvrFSUlKsl156yerWrZu1ZcsW77qhQ4da9957r8/466+/3rrzzjsbusyw27lzp9WjRw/rgw8+OOmY22+/3br++ut9lt17771WRkZGfZdnnFmzZllDhgyxPB6Pd1lhYaHVrVs36+OPP/Yua67PMbfb7f3/adOmWcOGDasyJpDe/POf/7S6detmffjhh95lO3futJKTk62VK1fWQ+Xh4a9fhw8ftsrLy32WlZWVWX379rUefPBB7zL6VdX8+fOtm2++udpxoewXe04QlIcfflg33HCDEhMTfZbv3r1bu3btUkZGhs/yzMxMFRYW6tixYw1ZZti9/vrrio+P14UXXljt+mPHjmnTpk26/PLLfZZnZmZq586d+v777xuiTGO4XC7FxMTIZrN5l8XGxkqSrJ8vYt2cn2N2e81v1YH2pqCgQA6Hw+fLT5OSktS9e3cVFBSEvvAw8devVq1aKTo62mdZTEyMEhISfA5B0C9f3333nZYuXaqZM2dWuz6U/SKcIGCrVq3S9u3b9Yc//KHKuqKiIkmqElq6du2qysrKas8daMq++OILdevWTU899ZQGDBigs88+WzfccIO++OILScdf5JWVlUpKSvK534ldqif62VxcffXV2rlzp/72t7+ptLRUu3fv1l/+8hf16NFD5557riSeYzUJtDdFRUVKTEz0CYHS8V8gze0591tOp1M7duzweU3SL1+PPPKIRowYobPOOqva9aHsF+EEAamoqNDcuXM1ZcoUtW7dusr6kpISSZLD4fBZfuL2ifXNxf79+7Vhwwa9+eabeuCBB7Rw4ULZbDbdfvvtOnDgAP36jfPPP18LFizQY489pvPPP1+XXHKJDhw4oLy8PEVEREjiOVaTQHvjdDq9e6R+LS4urln3T5L++7//WzabTTfeeKN3Gf36xdq1a/XZZ59p0qRJJx0Tyn4RThCQRYsW6Xe/+52uueaacJfSKFiWpfLycj3++OO6/PLLdeGFF2rRokWyLEsvvvhiuMszzj//+U/dd999uu666/T888/r8ccfl8fj0dixY31OiAXqw4oVK/Tqq68qOztbHTt2DHc5xjl69KhycnI0YcIEtWvXrkG2STiBX3v27NGzzz6riRMnqrS0VE6nU+Xl5ZKk8vJyHT58WHFxcZKOf4zs15xOpyR51zcXDodDbdq08dn92aZNG/Xo0UPffPMN/fqNhx9+WP3791dWVpb69++vyy+/XM8884y2bt2qN998U5LoWQ0C7Y3D4VBZWVmV+5eUlDTb/q1fv17Z2dm65557dNVVV/mso1/HPf/887Lb7Ro2bJicTqecTqcqKyvl8XjkdDq95zSFsl+EE/j1/fffq7KyUmPHjlWfPn3Up08fjRs3TpI0evRo3Xbbbd7jtL89rlhUVKQWLVqoc+fODV53OJ155pknXXf06FElJCSoRYsW1fZLUpVzUZq6nTt3VjmO3bFjR7Vt21bfffedJPEcq0GgvUlKSlJxcbH3JOMTiouLm91zTpI+//xzTZo0SVdeeWW1hyvo13FFRUX69ttvNWDAAO/vgLfffls7d+5Unz59vNdnCmW/CCfwq3v37lq2bJnPf9OnT5ckzZkzRw888IA6d+6sLl26VLlGR35+vgYMGKCWLVuGo/Swueiii/TTTz/p66+/9i47dOiQvvrqK/Xs2VMtW7ZUv3799O677/rcLz8/X127dlV8fHxDlxxWp59+urZu3eqzbM+ePTp06JA6deokSTzHahBob9LT01VSUqLCwkLvmOLiYm3dulXp6ekNWnO4ffPNN7rrrrvUv39/zZkzp9ox9Ou4MWPGVPkdkJaWpk6dOmnZsmUaMmSIpND2KzKkjwBNksPhUL9+/apd17NnT/Xs2VOSNGHCBE2dOlUJCQnq16+f8vPztWXLlmZ5jsUll1yiXr16aeLEiZoyZYqioqL0zDPPqGXLlrrpppskSXfffbdGjx6t2bNnKyMjQ5s2bdLbb7+tefPmhbn6hnfDDTcoJydHDz/8sIYMGaKffvrJe57Trz8e21yfYxUVFVq/fr2k46GtrKzMG0T69u2rdu3aBdSbE1ffnTFjhqZNm6aoqCjNmzdPycnJGjp0aFgeW33w1y/LsnTHHXcoKipKt9xyi7788kvvfVu3bu3d80m/jvera9euVS7O9sYbb+jHH3/0+d0Qyn7ZrN/ufwECsGnTJo0ePVqvvfaaevXq5V2+fPly5eXl6YcfflBiYqLuvfdeXXTRRWGsNHwOHjyo3NxcrVu3TpWVlTr//PM1ffp0n0M+77//vubPn6/i4mKdfvrpGjt2rK699towVh0elmXp5Zdf1ksvvaTdu3crJiZGKSkpmjJlSpU3xeb4HPv+++918cUXV7tu2bJl3l8QgfSmtLRUubm5eu+99+RyuZSWlqaZM2eqQ4cO9f44Goq/fknHD0lXp2/fvnrhhRe8t+nXsmr/OM3KytKXX36pt99+22d5qPpFOAEAAEbhnBMAAGAUwgkAADAK4QQAABiFcAIAAIxCOAEAAEYhnAAAAKMQTgAAgFEIJwAAwCiEEwAAYBTCCYCAvP7660pOTta//vWvatePGjVKw4cPb+CqfvH3v/9dzz33XINu869//avWrFnToNsEmgPCCYAm4e233/Z+b0pDefrppwknQD0gnABo1MrLy0Myj8fj0dGjR0MyF4C6IZwAqFdvvvmmrr76avXu3Vt9+/bVlClT9H//938+Yz755BNNnDhRgwcP1tlnn60LL7xQOTk5OnLkiM+4rKwspaam6rvvvtOYMWOUmpqqqVOnatSoUfrggw+0Z88eJScnKzk5WUOGDKmxruTkZD344IN66623NGzYMPXq1UsffvihJGnJkiW64YYb1K9fP/Xu3VtXX3219yvkf33/8vJyvfHGG95tZmVledf/+OOPmj59ui644AKdffbZGjZsmF577bW6tBJoNiLDXQCAxqWsrEwHDx6ssryysrLKskWLFunxxx9XRkaGrr32Wh08eFAvvviibr75Zv3v//6vHA6HJGnVqlU6cuSIbrzxRrVp00ZbtmzRiy++qL179+qJJ57wmdPlcumOO+7Qeeedp2nTpumUU05R+/btVVpaqr1792r69OmSpJiYGL+P5R//+Ifeeecd3XzzzWrbtq06deok6fjXxA8ZMkS///3vVVlZqZUrV2rSpEl6+umnNXjwYEnSn//8Z82cOVO9e/fWddddJ0lKSEiQJP2///f/dN1118lms+nmm29Wu3btVFBQoPvvv19lZWW69dZbA2s20FxZABCAFStWWN26davxv2HDhnnHf//991b37t2tRYsW+cyzbds2q0ePHj7LKyoqqmzv6aeftpKTk609e/Z4l02bNs3q1q2b9eijj1YZP3bsWOuiiy4K+PF069bNOuuss6wdO3ZUWffbeo4dO2YNHz7cGj16tM/ylJQUa9q0aVXuP2PGDGvgwIHWwYMHfZZPmTLFOu+886p9vAB+wZ4TAEHJzs5WYmJileVz586Vx+Px3n7vvffk8XiUkZHhs6fl1FNP1RlnnKFNmzZp3LhxkqRTTjnFu768vFxHjhxRamqqLMvS1q1bdfrpp/ts68YbbwzJY+nTp4/OPPPMKst/XU9JSYncbrfOO+88rVy50u+clmVp9erVysjIkGVZPo89LS1NK1eu1FdffaXzzjsvJI8BaIoIJwCC0rt3b/Xq1avK8ri4OB06dMh7e9euXbIsS0OHDq12nsjIX95+fvjhBz3xxBNau3atSkpKfMaVlZVVuV/Hjh3r8hC84uPjq12+bt06LVq0SF9//bWOHTvmXW6z2fzOefDgQTmdTr3yyit65ZVXTjoGwMkRTgDUC4/HI5vNpry8PEVERFRZ36pVK0mS2+3WbbfdppKSEt15551KSkpSq1at9OOPPyorK8tnb4wktWzZUnZ7aM7l//UekhM++eQT3X333erTp48eeOABtW/fXi1atNCKFSv09ttv+53zRL1XXHGFrrrqqmrHJCcn161woIkjnACoFwkJCbIsS/Hx8dUeBjph+/bt2rVrl/70pz/pyiuv9C7fuHFjUNsLZK9GIN59911FRUVpyZIlatmypXf5ihUrArp/u3btFBMTI4/HowsuuCAkNQHNDR8lBlAvhg4dqoiICC1YsECWZfmssyzLewjoxF6QX4+xLCvoC6pFR0ertLS0jlVLERERstlscrvd3mXff/+93n///SpjW7VqJafTWeX+l112md59911t3769yn04pAP4x54TAPUiISFBkydP1mOPPaY9e/bokksuUUxMjL7//nutWbNG1113ne644w4lJSUpISFBf/rTn/Tjjz+qdevWevfdd6v80venZ8+eys/PV25urnr16qVWrVr5vdZJdS688EItXbpUd955p4YPH64DBw7of/7nf5SQkKBt27ZV2WZhYaGWLl2q0047TfHx8TrnnHP0xz/+UZs2bdJ1112nkSNH6swzz1RJSYm++uorFRYWavPmzUHXBTQnhBMA9Wbs2LHq0qWLnnvuOS1cuFCS1LFjRw0cONAbHFq0aKG//vWvevjhh/X0008rKipKl156qW6++WaNGDEi4G3ddNNN+vrrr/X666/rueeeU6dOnWoVTgYMGKBHHnlEeXl5ysnJUXx8vKZOnao9e/ZUCSdZWVnKzs7W/PnzdeTIEV111VU655xzdOqpp2r58uVauHCh3nvvPb300ktq06aNzjzzTE2dOjXomoDmxmb9dn8rAABAGHHOCQAAMArhBAAAGIVwAgAAjEI4AQAARiGcAAAAoxBOAACAUQgnAADAKIQTAABgFMIJAAAwCuEEAAAYhXACAACMQjgBAABG+f+MbC30tP66NAAAAABJRU5ErkJggg=="},"metadata":{}}],"execution_count":105},{"cell_type":"markdown","source":"Finally, another anomaly is that the dataset contains observations where diastolic blood pressure is above systolic blood pressure. This is impossible, since systolic pressure reflects the peak force exerted on artery walls during each heartbeat, whereas diastolic pressure reflects the residual or baseline force in the arteries when the heart is at rest.","metadata":{}},{"cell_type":"code","source":"color = (\n    train_df['Physical-Systolic_BP'] <= train_df['Physical-Diastolic_BP']\n)\nplt.figure(figsize=(6, 4))\nplt.scatter(\n    train_df['Physical-Diastolic_BP'],\n    train_df['Physical-Systolic_BP'],\n    cmap='coolwarm',\n    c=color,\n    s=6,\n)\nplt.xlabel('Diastolic blood bressure')\nplt.ylabel('Systolic blood pressure')\nplt.title('What blood pressure is realistic?')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:34.173821Z","iopub.execute_input":"2025-01-12T10:41:34.174266Z","iopub.status.idle":"2025-01-12T10:41:34.584578Z","shell.execute_reply.started":"2025-01-12T10:41:34.174217Z","shell.execute_reply":"2025-01-12T10:41:34.583375Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 600x400 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAiYAAAGSCAYAAADXfQq4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADOfUlEQVR4nOydd3wU1deHn9mWvum9kUJChwDSOwhSFEUBAbGCXeyC/hR71xcU7CIqKgpWQKT33nsLhIQkpLdNz5Z5/1iyZNlNSEKAEO7z+SjZmTt37p0tc+bcc75HkmVZRiAQCAQCgaARoLjaAxAIBAKBQCCoRBgmAoFAIBAIGg3CMBEIBAKBQNBoEIaJQCAQCASCRoMwTAQCgUAgEDQahGEiEAgEAoGg0SAME4FAIBAIBI0GYZgIBAKBQCBoNAjDRCAQCAQCQaNBGCaC65bY2FjeeOONq3b+adOmERcXV6u2sbGxzJo16zKPyJbt27cTGxvL9u3br/i5mzopKSnExsby559/Xu2h1Ilp06YxYMAAq20N+fm8Vq+LoOEQhongmmPp0qXExsaycuVKm3233HILsbGxbNu2zWZfv379uPPOOy/buE6ePMmsWbNISUm5bOcQCJoKixcv5vvvv2+w/k6cOMGLL77IoEGD6NChAyNHjmTFihUN1r/gyiEME8E1R6dOnQDYvXu31faioiLi4+NRqVTs2bPHal9aWhppaWl07Njxso3r5MmTzJ49m9TU1Mt2DkHTITg4mAMHDjBy5MirPZRL5sCBAzzyyCN1OmbJkiX8+OOPNtvre13efPNNTpw4wZ133skLL7yASqViypQpdh9SBI0b1dUegEBQV/z9/QkJCbExTPbu3Yssy9x00002+ypfVxo1gsaDyWRCr9fj4OBwtYdSa8rLy1Gr1SgU9X+2kyTpss65pKQEZ2fny9Z/VRpyHvW9Ls899xzt27e3vL7lllvo3r07S5YsoVu3bg02PsHlR3hMBNcknTp14ujRo5SVlVm27dmzh+bNm9O7d2/279+PyWSy2idJkl2PyapVqxgxYgRt2rRh+PDhbNiwwWp/amoqr732GkOGDKFdu3Z07dqVKVOmWC3Z/Pnnnzz55JMA3H333cTGxtY6NiM5OZkHHniADh060KtXL2bPnk1tin4fOXKESZMm0bFjR+Li4rjnnnvYt2+f3f6nTJlCly5daN++PWPGjGHdunU27dLT03n00Ufp0KED3bt355133qGiouKi4wCYNWsWsbGxnDp1iieffJKOHTvStWtX3nrrLcrLy63aVsb2LFq0iOHDh9O2bVs2btwIQEZGBi+++CI9evSwvB+///67zfnmzZvH8OHDad++PTfccAOjRo1i8eLFlv1FRUW8/fbbDBgwgDZt2tC9e3fuu+8+Dh8+bGkzYMAApk2bZtP3xIkTmThxouV1ZZzNv//+y4wZM+jduzft27enqKgIgP379/PAAw/QqVMn2rdvz1133WVjGNvDXixFVlYWL774In369KFNmzb06tWLRx555KLLg5XxSmfOnGHy5MnExcXx3HPPAWbD7/vvv7dc6x49ejB9+nQKCgqs+li1ahUPPvggvXr1ok2bNgwaNIjPPvsMo9F40blcGGNyses/ceJE1q1bR2pqquW7Uhm3Ul2MSeVnq1u3brRr144hQ4YwY8YMy/6qRgmARqNBoVCg1+svOn5B40J4TATXJJ06deKff/5h//79dO3aFTAbH3FxcXTs2JHCwkJOnDhBixYtLPsiIyPx9PS06mf37t2sWLGC8ePH4+Liwrx585gyZQpr1661tD148CB79+5l+PDhBAQEkJqayvz587n77rv5999/cXJy4oYbbmDixInMmzePhx9+mMjISACioqJqnIfRaGTSpEm0b9+e559/no0bNzJr1iyMRqPF0LFHfHw8EyZMwMXFhUmTJqFSqfjtt9+YOHEiP/30k+VHOjs7mzvvvJPS0lImTpyIp6cnf/31F4888giffvopN954IwBlZWXcc889pKWlMXHiRPz8/Pjnn3/q7AZ/6qmnCA4O5tlnn2Xfvn3MmzcPnU7HBx98YNVu27Zt/Pfff0yYMAFPT0+Cg4PJzs5mzJgxSJLEhAkT8PLyYsOGDfzvf/+jqKiIe++9F4AFCxbw1ltvMWTIEO6++27Ky8s5fvw4+/fv5+abbwbg1VdfZfny5dx1111ERUWRn5/P7t27OXXqFK1bt67TnCr5/PPPUavVPPDAA1RUVKBWq9m6dSuTJ0+mTZs2PP7440iSxJ9//sk999zDL7/8Qrt27ep0jieeeIKTJ09y1113ERwcTG5uLps3byYtLY2QkJAajzUYDBYDaerUqTg6OgIwffp0/vrrL0aNGsXEiRNJSUnh559/5siRI8yfPx+1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"},"metadata":{}}],"execution_count":106},{"cell_type":"markdown","source":"## Summary","metadata":{}},{"cell_type":"markdown","source":"The following are key insights of the data analysis:\n\n- Higher SII values are more rare, with most participants having no impairment and only a small portion having severe impairment - the problem is imbalanced.\n- Individual PCIAT scores may be skipped, causing potentially lower SII labels due to missing scores and raising concerns over truthfulness of the responses.\n- Arguably, several PCIAT questions are likely to be poor indicators of PIU or are simply highly subjective and may be inflated by overly critical parents.\n- Most participants are children, with only a small portion of young adults. Additionally, about two thirds of the participants are boys.\n- PCIAT scores are correlated with physical measures, including weight, height, and fitness, as well as influenced by demographics.\n- Redundant features are present in the dataset, such as repeated (but not identical) BMI and sleep disturbance scores.\n- Outliers and anomalies are present, particularly for weight, BIA features, heart rate, and blood pressure.","metadata":{}},{"cell_type":"markdown","source":"# Data Preprocessing","metadata":{}},{"cell_type":"markdown","source":"As was highlighted in the previous section, there are several steps which should be performed to prepare the data for machine learning, including removal of unnecessary features, dealing with missing values, and elimination of anomalies.","metadata":{}},{"cell_type":"code","source":"import os\nfrom concurrent.futures import ThreadPoolExecutor\n\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.decomposition import PCA\nfrom sklearn.impute import KNNImputer","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:34.586309Z","iopub.execute_input":"2025-01-12T10:41:34.586813Z","iopub.status.idle":"2025-01-12T10:41:34.593295Z","shell.execute_reply.started":"2025-01-12T10:41:34.586763Z","shell.execute_reply":"2025-01-12T10:41:34.592208Z"}},"outputs":[],"execution_count":107},{"cell_type":"markdown","source":"## Actigraphy Preparation","metadata":{}},{"cell_type":"markdown","source":"While the primary portion of the dataset is stored in CSV files, actigraphy data collected through wrist-worn sensors is available in separate Parquet files as time series. For every participant, the data is stored in a separate file under a directory named with their identifier. The following function is used to preprocess in parallel all Parquet files under the specified root.","metadata":{}},{"cell_type":"code","source":"def load_ts(root):\n    def process(dirname):\n        path = os.path.join(root, dirname, 'part-0.parquet')\n        data = pd.read_parquet(path)\n        return preprocess_ts(data, index=dirname.split('=')[1])\n    \n    dirnames = os.listdir(root)\n    with ThreadPoolExecutor() as executor:\n        results = list(executor.map(\n            lambda dirname: process(dirname), dirnames))\n\n    return pd.concat(results)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:34.594563Z","iopub.execute_input":"2025-01-12T10:41:34.594929Z","iopub.status.idle":"2025-01-12T10:41:34.605242Z","shell.execute_reply.started":"2025-01-12T10:41:34.594898Z","shell.execute_reply":"2025-01-12T10:41:34.603978Z"}},"outputs":[],"execution_count":108},{"cell_type":"markdown","source":"The actigraphy dataset (described in the _Dataset Description_ section) contains various features related to motion, time, and sensor state. For this analysis, we decided to focus on three features that are associated with the person's activity and movement: ENMO, $z$-angle, and light level. To simplify integration of the actigraphy data with CSV data, the features are aggregated by several statistics. Additionally, we calculate the statistics for differences between successive observations to capture changes in activity.","metadata":{}},{"cell_type":"code","source":"def preprocess_ts(df, index):\n    features = []\n    for column in ['enmo', 'anglez', 'light']:\n        data = df[column]\n        diff = data.diff()\n        \n        features.extend([\n            data.mean(), data.std(), data.min(), data.max(),\n            diff.mean(), diff.std(), diff.min(), diff.max(),\n        ])\n    \n    return pd.DataFrame([features], index=[index])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:34.606602Z","iopub.execute_input":"2025-01-12T10:41:34.606923Z","iopub.status.idle":"2025-01-12T10:41:34.615998Z","shell.execute_reply.started":"2025-01-12T10:41:34.606893Z","shell.execute_reply":"2025-01-12T10:41:34.614819Z"}},"outputs":[],"execution_count":109},{"cell_type":"markdown","source":"After applying the above functions, the actigraphy data for all participants are placed in a single data frame of summary statistics. Due to the separation of training and testing data in the competition, there are two such data frames:","metadata":{}},{"cell_type":"code","source":"train_ts_df = load_ts(f'{DATA_ROOT}/series_train.parquet')\ntest_ts_df = load_ts(f'{DATA_ROOT}/series_test.parquet')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:41:34.61721Z","iopub.execute_input":"2025-01-12T10:41:34.617613Z","iopub.status.idle":"2025-01-12T10:42:08.916071Z","shell.execute_reply.started":"2025-01-12T10:41:34.617578Z","shell.execute_reply":"2025-01-12T10:42:08.914887Z"}},"outputs":[],"execution_count":110},{"cell_type":"markdown","source":"However, this process created dozens of new features, not all of which are likely to be equally significant. To address this, dimensionality reduction using principal component analysis (PCA) is performed to reduce the amount of noise in the data. For PCA to be more effective, the data should be on the same scale, which is achieved through standardization.","metadata":{}},{"cell_type":"code","source":"scaler = StandardScaler()\n\nscaled_train_ts_df = pd.DataFrame(\n    data=scaler.fit_transform(train_ts_df),\n    columns=train_ts_df.columns)\n\nscaled_test_ts_df = pd.DataFrame(\n    data=scaler.transform(test_ts_df),\n    columns=test_ts_df.columns)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:08.91777Z","iopub.execute_input":"2025-01-12T10:42:08.918217Z","iopub.status.idle":"2025-01-12T10:42:08.931262Z","shell.execute_reply.started":"2025-01-12T10:42:08.918171Z","shell.execute_reply":"2025-01-12T10:42:08.930383Z"}},"outputs":[],"execution_count":111},{"cell_type":"markdown","source":"After fitting PCA to the dataset, the explained variance ratio of each principal component is plotted to identify the most significant features.","metadata":{}},{"cell_type":"code","source":"pca = PCA(random_state=42)\npca.fit(scaled_train_ts_df)\nsns.barplot(pca.explained_variance_ratio_)\nplt.title('Explained variance ratio (PCA)')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:08.932661Z","iopub.execute_input":"2025-01-12T10:42:08.933719Z","iopub.status.idle":"2025-01-12T10:42:09.178809Z","shell.execute_reply.started":"2025-01-12T10:42:08.933668Z","shell.execute_reply":"2025-01-12T10:42:09.177645Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAjMAAAG4CAYAAACwzWZEAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7NElEQVR4nO3df1xUZd7/8fcMBBTsDGKsd/4oQwMxNcTUiI3QchPTRy25yXZvgZhNheXiul+tdk2zLWPv2hVoC7ixsC3N7rZaCknbrdi0unfXzN22n4ClsksYMgOkDM6c7x99nW/jADJq4YHX8/Hg4XDNdZ35nGGGeXud6xwshmEYAgAAMClrXxcAAABwIggzAADA1AgzAADA1AgzAADA1AgzAADA1AgzAADA1AgzAADA1AgzAADA1AgzAADA1AgzwEmyfPlyTZ8+/bjGTp8+XcuXLz/JFfXOidT9TenL58MsioqKlJCQcNK3u3LlSs2fP/+kb/dEfPLJJxo7dqw++uijvi4FpyjCDPqV3//+90pISOj2a+fOnX1dItBrBw8eVFFRkd5+++1v5fH27Nmj//mf/5HD4fC17d271+89lJiYqPT0dOXl5en9998P2EZHR4cef/xx/fCHP9SkSZM0fvx4XXHFFbrnnntUX1/f5eMWFBQoISFBP/nJT7q8f/To0br00ktVWFh4UvYT/U9oXxcAfBNuv/12DR8+PKD97LPP7oNqjq26uloWi6Wvyzhl8Hx85eDBgyouLtaiRYs0depUv/tuueUW3XTTTSf18davX69hw4bpoosuCrhv9uzZSktLk9frVW1trTZs2KCamhpt2rRJiYmJkqTm5mbdeOONeu+99zRt2jTNnj1bZ5xxhurr61VVVaVNmzbpH//4h992DcPQSy+9pGHDhunVV19VW1uboqKiAh4/KytLN910kz777LNT9n2MvkOYQb+Ulpam8ePH93UZvRYWFtbXJfQ5wzDU0dGhiIiIfvt8HD58WF6v96TsX2hoqEJDT96v8M7OTlVWViorK6vL+8eOHaurrrrK931ycrJuueUWbdiwQffcc48k6Y477tD777+vwsJCXXHFFX7jf/KTn+jXv/51wHbffvtt/fvf/1ZFRYVuvPFGbd26VT/4wQ8C+l188cWy2+167rnntHjx4hPZVfRDHGbCgFRYWKgxY8bozTff9Gv/xS9+oXHjxumDDz6Q9NUv2oSEBFVVVemhhx5SamqqkpKSdPPNN+tf//rXMR+nvLxcWVlZmjp1qiZMmKDMzExVV1cH9Dt6jciRw2V/+9vfdP/99+uiiy5SUlKS8vLy1NzcHDD+9ddf13XXXaekpCRNnDhRN910kz7++OOAfq+88opmz56t8ePHa/bs2dq6desx90GSHA6HLrvssi7vmzdvnjIzM33fP/vss7rhhhuUkpKicePGadasWXrqqae63GeHw6E///nPyszM1IQJE7Rx48Yun4+WlhY98MADmjNnjiZOnKjk5GTdeOONvp/TEV//eT3yyCO+UJudna1PP/00oIZ3331XCxcu1OTJk5WUlKQ5c+aooqLCr09tba1uv/12TZkyRePHj1dmZqb++Mc/HvM5O3J4pry8XI8//rguv/xyjR8/XrW1tXK73Vq7dq0yMzM1adIkJSUl6brrrtNbb73lNz4lJUWSVFxc7DvMU1RUJKnrNTOHDx/Www8/rMsvv1zjxo3T9OnT9dBDD8ntdh+z3r/97W86cOCALr744mP2leSbvdm7d6+kr57L1157TXPnzg0IMtJXgX3ZsmUB7ZWVlRo9erQuuugipaSkqLKyssvHO+200zRlypRePfcYeAgz6Jfa2trU3Nzs93XgwAHf/bfccosSExN11113qa2tTZL05z//WZs2bdKtt96qMWPG+G3vkUce0WuvvaaFCxfq+uuv1/bt25WTk6NDhw71WMf69euVmJio22+/XUuWLFFISIgWL16s1157rVf7ce+99+qDDz7QokWL9KMf/Uivvvqq73/BRzz//PNyOBw644wztHTpUt1666365JNPdN111/k+aCTpjTfe0G233SaLxaKf/vSnuuyyy3THHXcETPt3JSMjQ3v37tWuXbv82vft26edO3fqyiuv9LVt2LBBw4YNk8Ph0PLly3XWWWdp1apVevLJJwO2W19fr5/+9KdKTU3VXXfd5TtccbQ9e/bolVdeUXp6upYvX64FCxboo48+0o9//GM1NjYG9C8rK9PWrVuVm5srh8Ohd999V0uXLvXrs23bNv3nf/6namtrdcMNN2jZsmWaOnWq38/m448/1rx581RbW6uFCxdq+fLlOuOMM5SXl9frIPj73/9ev/vd73Tttddq2bJlstvtamtr0zPPPKMpU6Zo6dKlWrRoke8QzZF1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I36zIyd60beXX35ZU6dO1X333efX7nK5juuD7cjz9tFHH3X7vB3pc9ppp/X6DJ/eevnllzVixAgVFxf7hY+jLwoXTDAZNmyYvF6vPv30U40aNcrXvn//frlcLg0bNqzH8XFxcaqsrAyYPeutadOmqaSkRH/4wx96FWYqKysVHx+vvLy8gPuefvppvfjiiwFhZu/evbJarQEzNgBrZjBgPfbYY3rnnXd0zz33aPHixZo4caJWrlzZ5anPzz//vN8ZFNXV1WpqalJaWlq32w8JCZHFYvE7JLJ3796TemrpJZdcoqioKJWUlPgdqjjiyL5897vfVWJiop577jm/dSvbtm3TJ5980uvHmzVrlj7//HM988wz+uCDD5SRkeF3/5GZoK/PgLS2tp5wgAsJCQmYVdm8eXOv1qx05fzzz9fw4cO1fv36gNmII48zePBgTZkyRU8//bQ+//zzgG109Trpra6ep3fffTfgCtWnn366JPU4Y3LEpZdeKkkBp5Y/9thjfvd3JykpSYZh9Orstq5MnDhRl1xyiZ555hm98sorAfe73W498MADkqR//etf+stf/qKZM2d2+ZWZmalPP/1U7777rt823nvvPY0ePfq4whb6N2Zm0C/V1NSorq4uoD05OVkjRoxQbW2t7zofR/4u0Zo1a3T11Vdr1apVAWsk7Ha7rrvuOmVmZuqLL75QRUWFzjnnHF177bXd1nDppZfqscce04033qjZs2friy++0FNPPaWzzz5bH3744UnZz6ioKK1cuVL/5//8H2VmZmrWrFmKiYlRQ0ODXn/9dSUnJ2vFihWSpCVLlsjhcOi6667TNddco5aWFv3ud7/Teeedpy+//LJXj3fppZcqMjJSDzzwgEJCQgKuJ5KamqrTTjtNN998s7KystTe3q5nnnlGgwcP7vZ0295IT0/Xww8/rDvuuEMTJ07URx99pMrKSt/sSbCsVqtWrlypW265RVdffbUyMzMVGxururo6ffLJJyovL5ck3X333bruuus0Z84cXXvttRoxYoT279+vnTt36t///rf+8Ic/HPf+bNmyRXl5eUpPT9fevXu1ceNGjR492u9nERERodGjR2vz5s0aOXKkoqOjdd5553W51mfMmDH6wQ9+oKeffloul0uTJ0/W3//+dz333HO6/PLLu7yq79dNmjRJ0dHRevPNN33XtwlWQUGB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"},"metadata":{}}],"execution_count":112},{"cell_type":"markdown","source":"Evidently, feature significance drops after 13 principal components.","metadata":{}},{"cell_type":"code","source":"pca_train_ts = pca.transform(scaled_train_ts_df)[:, :13]\npca_test_ts = pca.transform(scaled_test_ts_df)[:, :13]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.180562Z","iopub.execute_input":"2025-01-12T10:42:09.180914Z","iopub.status.idle":"2025-01-12T10:42:09.191341Z","shell.execute_reply.started":"2025-01-12T10:42:09.180882Z","shell.execute_reply":"2025-01-12T10:42:09.189917Z"}},"outputs":[],"execution_count":113},{"cell_type":"markdown","source":"Furthermore, these components account for 95% of variance in actigraphy data.","metadata":{}},{"cell_type":"code","source":"pca.explained_variance_ratio_[:13].sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.193014Z","iopub.execute_input":"2025-01-12T10:42:09.195203Z","iopub.status.idle":"2025-01-12T10:42:09.217399Z","shell.execute_reply.started":"2025-01-12T10:42:09.195123Z","shell.execute_reply":"2025-01-12T10:42:09.215951Z"}},"outputs":[{"execution_count":114,"output_type":"execute_result","data":{"text/plain":"0.9500266"},"metadata":{}}],"execution_count":114},{"cell_type":"markdown","source":"Since the time series data will be merged with the rest of the dataset, they are first converted into data frames.","metadata":{}},{"cell_type":"code","source":"pca_cols = [f'TS-PC{i+1}' for i in range(pca_test_ts.shape[1])]\n\npca_train_ts_df = pd.DataFrame(pca_train_ts, columns=pca_cols)\npca_train_ts_df.set_index(train_ts_df.index, inplace=True)\n\npca_test_ts_df = pd.DataFrame(pca_test_ts, columns=pca_cols)\npca_test_ts_df.set_index(test_ts_df.index, inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.219055Z","iopub.execute_input":"2025-01-12T10:42:09.219665Z","iopub.status.idle":"2025-01-12T10:42:09.242397Z","shell.execute_reply.started":"2025-01-12T10:42:09.2196Z","shell.execute_reply":"2025-01-12T10:42:09.238188Z"}},"outputs":[],"execution_count":115},{"cell_type":"markdown","source":"## Data Cleaning","metadata":{}},{"cell_type":"markdown","source":"Before appending the time series data, the main portion of the dataset should be cleaned as well. Firstly, we remove unneeded features: individual PCIAT scores (as they are part of the target features), seasons of participation (due to having no relation with PIU), as well as previously identified redundant features.","metadata":{}},{"cell_type":"markdown","source":"Subsequently, implausible values (or anomalies) in the data are replaced with missing entries to properly mark them as likely errors in measurement. Since the same preprocessing is done for both training and testing data, this step is encapsulated in the following auxiliary function.","metadata":{}},{"cell_type":"code","source":"def preprocess(df):\n    df = df.drop(columns=df.filter(regex=r'.*Season.*').columns)\n    df = df.drop(columns=df.filter(regex=r'PCIAT-PCIAT_\\d\\d').columns)\n    df = df.drop(columns=['Physical-BMI', 'SDS-SDS_Total_Raw'])\n\n    # Remove implausible systolic blood pressure.\n    df['Physical-Diastolic_BP'] = np.where(\n        df['Physical-Systolic_BP'] <= df['Physical-Diastolic_BP'],\n        np.nan, df['Physical-Diastolic_BP'])\n\n    # Remove implausible weight (measured in kg).\n    df['Physical-Weight'] = np.where(\n        df['Physical-Weight'] <= 10,\n        np.nan, df['Physical-Weight'])\n    \n    # Bone Mineral Content (measured in g).\n    df['BIA-BIA_BMC'] = np.where(\n        (df['BIA-BIA_BMC'] <= 0) | (df['BIA-BIA_BMC'] > 2500),\n        np.nan, df['BIA-BIA_BMC'])\n\n    # Basal Metabolic Rate (measured in kcal/day).\n    df['BIA-BIA_BMR'] = np.where(\n        df['BIA-BIA_BMR'] > 4000,\n        np.nan, df['BIA-BIA_BMR'])\n\n    # Daily Energy Expenditure (measured in kcal/day).\n    df['BIA-BIA_DEE'] = np.where(\n        df['BIA-BIA_DEE'] > 10_000,\n        np.nan, df['BIA-BIA_DEE'])\n\n    # Extracellular Water (measured in total body water %).\n    df['BIA-BIA_ECW'] = np.where(\n        df['BIA-BIA_ECW'] > 100,\n        np.nan, df['BIA-BIA_ECW'])\n\n    # Fat-Free Mass (measured in kg)\n    df['BIA-BIA_FFM'] = np.where(\n        (df['BIA-BIA_FFM'] <= 0) | (df['BIA-BIA_FFM'] > 300),\n        np.nan, df['BIA-BIA_FFM'])\n\n    # Fat Mass Index (measured in kg/m²)\n    df['BIA-BIA_FMI'] = np.where(\n        df['BIA-BIA_FMI'] < 0,\n        np.nan, df['BIA-BIA_FMI'])\n\n    # Body Fat Percentage (measured in %)\n    df['BIA-BIA_Fat'] = np.where(\n        (df['BIA-BIA_Fat'] < 5) | (df['BIA-BIA_Fat'] > 60),\n        np.nan, df['BIA-BIA_Fat'])\n\n    # Intracellular Water (measured in total body water %)\n    df['BIA-BIA_ICW'] = np.where(\n        df['BIA-BIA_ICW'] > 60,\n        np.nan, df['BIA-BIA_ICW'])\n\n    # Lean Dry Mass (measured in g)\n    df['BIA-BIA_LDM'] = np.where(\n        df['BIA-BIA_LDM'] > 10_000,\n        np.nan, df['BIA-BIA_LDM'])\n\n    # Lean Soft Tissue (measured in kg)\n    df['BIA-BIA_LST'] = np.where(\n        df['BIA-BIA_LST'] > 250,\n        np.nan, df['BIA-BIA_LST'])\n\n    # Skeletal Muscle Mass (measured in kg)\n    df['BIA-BIA_SMM'] = np.where(\n        df['BIA-BIA_SMM'] > 150,\n        np.nan, df['BIA-BIA_SMM'])\n\n    # Total Body Water (measured in kg)\n    df['BIA-BIA_TBW'] = np.where(\n        df['BIA-BIA_TBW'] > 150,\n        np.nan, df['BIA-BIA_TBW'])\n\n    return df","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.247158Z","iopub.execute_input":"2025-01-12T10:42:09.248747Z","iopub.status.idle":"2025-01-12T10:42:09.284492Z","shell.execute_reply.started":"2025-01-12T10:42:09.248668Z","shell.execute_reply":"2025-01-12T10:42:09.283002Z"}},"outputs":[],"execution_count":116},{"cell_type":"markdown","source":"Both the training and the testing datasets are then preprocessed and merged with the corresponding actigraphy data.","metadata":{}},{"cell_type":"code","source":"tidy_train_df = preprocess(train_df)\ntidy_train_df = pd.merge(tidy_train_df, pca_train_ts_df,\n    left_index=True, right_index=True, how='left').astype(np.float64)\n\ntidy_test_df = preprocess(test_df)\ntidy_test_df = pd.merge(tidy_test_df, pca_test_ts_df,\n    left_index=True, right_index=True, how='left').astype(np.float64)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.288892Z","iopub.execute_input":"2025-01-12T10:42:09.291357Z","iopub.status.idle":"2025-01-12T10:42:09.333945Z","shell.execute_reply.started":"2025-01-12T10:42:09.291274Z","shell.execute_reply":"2025-01-12T10:42:09.332814Z"}},"outputs":[],"execution_count":117},{"cell_type":"markdown","source":"The training data is then prepared in two ways. The first version contains all observations, including those which have the target value missing (indicated with a value of `-1`), and will be used for semi-supervised classification.","metadata":{}},{"cell_type":"code","source":"X_semi = tidy_train_df.drop(columns=['sii', 'PCIAT-PCIAT_Total'])\ny_semi = tidy_train_df['sii'].fillna(-1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.335311Z","iopub.execute_input":"2025-01-12T10:42:09.335686Z","iopub.status.idle":"2025-01-12T10:42:09.342711Z","shell.execute_reply.started":"2025-01-12T10:42:09.335652Z","shell.execute_reply":"2025-01-12T10:42:09.341583Z"}},"outputs":[],"execution_count":118},{"cell_type":"markdown","source":"The second version contains only a subset of observations with the target feature present and will be used for ordinary supervised learning.","metadata":{}},{"cell_type":"code","source":"tidy_train_df.dropna(subset='sii', inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.344038Z","iopub.execute_input":"2025-01-12T10:42:09.344371Z","iopub.status.idle":"2025-01-12T10:42:09.357416Z","shell.execute_reply.started":"2025-01-12T10:42:09.344327Z","shell.execute_reply":"2025-01-12T10:42:09.356434Z"}},"outputs":[],"execution_count":119},{"cell_type":"markdown","source":"As was explained previously, the problem can be solved either as a classification or as a regression task, depending on the choice of the target variable. To consider both approaches, two target vectors are extracted from the training data - one with PCIAT score (regression) and one with the derived SII label (classification).","metadata":{}},{"cell_type":"code","source":"X_test = tidy_test_df.copy()\nX_train = tidy_train_df.drop(columns=['PCIAT-PCIAT_Total', 'sii'])\ny_train_reg = tidy_train_df['PCIAT-PCIAT_Total']\ny_train_cls = tidy_train_df['sii']","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.35882Z","iopub.execute_input":"2025-01-12T10:42:09.359233Z","iopub.status.idle":"2025-01-12T10:42:09.371055Z","shell.execute_reply.started":"2025-01-12T10:42:09.359187Z","shell.execute_reply":"2025-01-12T10:42:09.369879Z"}},"outputs":[],"execution_count":120},{"cell_type":"markdown","source":"## Data Imputation","metadata":{}},{"cell_type":"markdown","source":"The dataset contains a large number of missing values, and while some algorithms (e.g., XGBoost) are capable of dealing with them natively, such an approach would end up attempting to infer information from the absence of data. While this makes sense in certain contexts, within this dataset the absence of data indicates inability to collect it or other issues with measurements.","metadata":{}},{"cell_type":"markdown","source":"To address this, the missing data is imputed. There is a variety of approaches that can be applied to this problem, ranging from imputation with the mean value to incremental predictions of missing data with simpler machine learning models. However, a simple strategy that worked reasonably well experimentally is imputation using $k$ nearest neighbors (KNN), with $k = 6$.","metadata":{}},{"cell_type":"code","source":"knn = KNNImputer(n_neighbors=6)\nX_train[X_train.columns] = knn.fit_transform(X_train)\nX_test[X_test.columns] = knn.transform(X_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:09.372551Z","iopub.execute_input":"2025-01-12T10:42:09.372905Z","iopub.status.idle":"2025-01-12T10:42:12.644088Z","shell.execute_reply.started":"2025-01-12T10:42:09.372873Z","shell.execute_reply":"2025-01-12T10:42:12.64247Z"}},"outputs":[],"execution_count":121},{"cell_type":"markdown","source":"Conversely, mean imputation is for the portion of the semi-supervised dataset which was not imputted (i.e., the subsample with missing SII) since the fraction of remaining missing values in each column is reasonably low (less than 40% for each feature).","metadata":{}},{"cell_type":"code","source":"X_semi.loc[X_train.index] = X_train\n\nfor c in X_semi.columns:\n    X_semi.fillna({c: X_semi[c].mean()}, inplace=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.646173Z","iopub.execute_input":"2025-01-12T10:42:12.646671Z","iopub.status.idle":"2025-01-12T10:42:12.754728Z","shell.execute_reply.started":"2025-01-12T10:42:12.64662Z","shell.execute_reply":"2025-01-12T10:42:12.753682Z"}},"outputs":[],"execution_count":122},{"cell_type":"markdown","source":"# Model Training","metadata":{}},{"cell_type":"markdown","source":"In the following subsections, several models are trained and evaluated using QWK and accuracy metrics. For each algorithm, three models are trained: a simple classifier, a semi-supervised classifier, and a regressor. The performance of each is evaluated using stratified cross-validation due to the small size of the dataset.","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import cross_val_score\nfrom sklearn.model_selection import StratifiedKFold\nfrom sklearn.semi_supervised import SelfTrainingClassifier","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.756668Z","iopub.execute_input":"2025-01-12T10:42:12.757133Z","iopub.status.idle":"2025-01-12T10:42:12.770119Z","shell.execute_reply.started":"2025-01-12T10:42:12.757087Z","shell.execute_reply":"2025-01-12T10:42:12.768673Z"}},"outputs":[],"execution_count":123},{"cell_type":"markdown","source":"For regression models, the predicted PCIAT scores must be converted into corresponding SII labels, which is achieved using the following function:","metadata":{}},{"cell_type":"code","source":"def convert(scores):\n    scores = np.array(scores) * 1.252\n    labels = np.zeros_like(scores, dtype=np.int64)\n    labels[(scores <= 30)] = 0\n    labels[(scores >= 31) & (scores <= 49)] = 1\n    labels[(scores >= 50) & (scores <= 79)] = 2\n    labels[(scores >= 80)] = 3\n    return labels","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.77215Z","iopub.execute_input":"2025-01-12T10:42:12.772538Z","iopub.status.idle":"2025-01-12T10:42:12.779824Z","shell.execute_reply.started":"2025-01-12T10:42:12.772464Z","shell.execute_reply":"2025-01-12T10:42:12.778521Z"}},"outputs":[],"execution_count":124},{"cell_type":"markdown","source":"To evaluate and compare the models' performances, a helper function is defined to calculate the QWK metric, with two scorer objects created for convenience: one for classification models, and one for regression models (with conversion of PCIAT scores into SII).","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import cohen_kappa_score, make_scorer\n\ndef quadratic_kappa(y_true, y_pred):\n    return cohen_kappa_score(y_true, y_pred, weights='quadratic')\n\nkappa_scorer_cls = make_scorer(quadratic_kappa)\nkappa_scorer_reg = make_scorer(\n    lambda y_true, y_pred: quadratic_kappa(\n        convert(y_true),\n        convert(y_pred)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.78124Z","iopub.execute_input":"2025-01-12T10:42:12.781618Z","iopub.status.idle":"2025-01-12T10:42:12.794815Z","shell.execute_reply.started":"2025-01-12T10:42:12.781584Z","shell.execute_reply":"2025-01-12T10:42:12.793657Z"}},"outputs":[],"execution_count":125},{"cell_type":"markdown","source":"For cross-validation, stratified $K$-fold is used due to the imbalance in target classes.","metadata":{}},{"cell_type":"code","source":"skf = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.796259Z","iopub.execute_input":"2025-01-12T10:42:12.79677Z","iopub.status.idle":"2025-01-12T10:42:12.806711Z","shell.execute_reply.started":"2025-01-12T10:42:12.796696Z","shell.execute_reply":"2025-01-12T10:42:12.805535Z"}},"outputs":[],"execution_count":126},{"cell_type":"markdown","source":"Finally, hyperparameter tuning is implemented using `optuna` - a popular optimization framework commonly used in Kaggle competitions. Unlike grid search and randomized search, `optuna` uses Bayesian optimization to include the results from previous evaluations when selecting new hyperparameters while simultaneously pruning options which are unlikely to yield improvements.","metadata":{}},{"cell_type":"code","source":"import optuna","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.808462Z","iopub.execute_input":"2025-01-12T10:42:12.808877Z","iopub.status.idle":"2025-01-12T10:42:12.969223Z","shell.execute_reply.started":"2025-01-12T10:42:12.808843Z","shell.execute_reply":"2025-01-12T10:42:12.968229Z"}},"outputs":[],"execution_count":127},{"cell_type":"markdown","source":"However, while it can yield better performing models, a significant disadvantage of this approach is that it is more time-consuming and computationally demanding. To mitigate this, all hyperparameters are only tuned once and then reused in all subsequent runs, as controlled by the following flag:","metadata":{}},{"cell_type":"code","source":"optimize_hyperparameters = False","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.970451Z","iopub.execute_input":"2025-01-12T10:42:12.970899Z","iopub.status.idle":"2025-01-12T10:42:12.975597Z","shell.execute_reply.started":"2025-01-12T10:42:12.970855Z","shell.execute_reply":"2025-01-12T10:42:12.974585Z"}},"outputs":[],"execution_count":128},{"cell_type":"markdown","source":"## XGBoost","metadata":{}},{"cell_type":"markdown","source":"We start by training XGBoost models for classification and regression.","metadata":{}},{"cell_type":"code","source":"from xgboost import XGBClassifier, XGBRegressor","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:12.977006Z","iopub.execute_input":"2025-01-12T10:42:12.977352Z","iopub.status.idle":"2025-01-12T10:42:13.175086Z","shell.execute_reply.started":"2025-01-12T10:42:12.977305Z","shell.execute_reply":"2025-01-12T10:42:13.173617Z"}},"outputs":[],"execution_count":129},{"cell_type":"markdown","source":"Starting with classification, the following objective function is used for hyperparameter tuning.","metadata":{}},{"cell_type":"code","source":"def xgb_cls_objective(trial):\n    params = {\n        'max_depth':\n            trial.suggest_int('max_depth', 2, 10),\n        'n_estimators':\n            trial.suggest_int('n_estimators', 50, 250),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.02, 0.08, log=True),\n        'subsample':\n            trial.suggest_float('subsample', 0.4, 0.9),\n        'colsample_bytree':\n            trial.suggest_float('colsample_bytree', 0.4, 0.9),\n        'reg_alpha':\n            trial.suggest_float('reg_alpha', 1e-5, 1, log=True),\n        'reg_lambda':\n            trial.suggest_float('reg_lambda', 1e-5, 5, log=True),\n        'random_state': 42,\n    }\n\n    model = XGBClassifier(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:13.176739Z","iopub.execute_input":"2025-01-12T10:42:13.177199Z","iopub.status.idle":"2025-01-12T10:42:13.187009Z","shell.execute_reply.started":"2025-01-12T10:42:13.177145Z","shell.execute_reply":"2025-01-12T10:42:13.185873Z"}},"outputs":[],"execution_count":130},{"cell_type":"markdown","source":"For hyperparameter tuning, we run a maximization study for up to 100 trials.","metadata":{}},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(xgb_cls_objective, n_trials=100)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:13.18867Z","iopub.execute_input":"2025-01-12T10:42:13.18914Z","iopub.status.idle":"2025-01-12T10:42:13.206913Z","shell.execute_reply.started":"2025-01-12T10:42:13.189092Z","shell.execute_reply":"2025-01-12T10:42:13.205739Z"}},"outputs":[],"execution_count":131},{"cell_type":"markdown","source":"After running the study, the following parameters achieved the highest QWK score.","metadata":{}},{"cell_type":"code","source":"xgb_cls_params = {\n    'max_depth': 2,\n    'n_estimators': 176,\n    'learning_rate': 0.07728060464186653,\n    'subsample': 0.870705129668058,\n    'colsample_bytree': 0.8840770709282104,\n    'reg_alpha': 1.860815753042802e-05,\n    'reg_lambda': 7.086360202184236e-05,\n    'random_state': 42,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:13.208404Z","iopub.execute_input":"2025-01-12T10:42:13.208938Z","iopub.status.idle":"2025-01-12T10:42:13.224412Z","shell.execute_reply.started":"2025-01-12T10:42:13.208882Z","shell.execute_reply":"2025-01-12T10:42:13.22322Z"}},"outputs":[],"execution_count":132},{"cell_type":"markdown","source":"We may now create a classifier with these parameters and score it by QWK using cross-validation.","metadata":{}},{"cell_type":"code","source":"xgb_clf = XGBClassifier(**xgb_cls_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    xgb_clf, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:13.2261Z","iopub.execute_input":"2025-01-12T10:42:13.226602Z","iopub.status.idle":"2025-01-12T10:42:21.362776Z","shell.execute_reply.started":"2025-01-12T10:42:13.22655Z","shell.execute_reply":"2025-01-12T10:42:21.360556Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.3601129675295831\n","output_type":"stream"}],"execution_count":133},{"cell_type":"markdown","source":"For comparison, we also create a self-training classifier for semi-supervised learning to try and make use of the observations where the target label is missing, using the previous classifier as a base.","metadata":{}},{"cell_type":"code","source":"xgb_semi_clf = SelfTrainingClassifier(\n    base_estimator=XGBClassifier(**xgb_cls_params))\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    xgb_semi_clf, X_semi, y_semi, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:42:21.36379Z","iopub.execute_input":"2025-01-12T10:42:21.364133Z","iopub.status.idle":"2025-01-12T10:43:11.572107Z","shell.execute_reply.started":"2025-01-12T10:42:21.364101Z","shell.execute_reply":"2025-01-12T10:43:11.570072Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.35253336079765846\n","output_type":"stream"}],"execution_count":134},{"cell_type":"markdown","source":"Evidently, the semi-supervised approach performs slightly worse. This could be due to the subsample with missing target feature values having more missing values in non-target features that had to be imputted.","metadata":{}},{"cell_type":"code","source":"def xgb_reg_objective(trial):\n    params = {\n        'max_depth':\n            trial.suggest_int('max_depth', 2, 10),\n        'n_estimators':\n            trial.suggest_int('n_estimators', 50, 250),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.02, 0.08, log=True),\n        'subsample':\n            trial.suggest_float('subsample', 0.4, 0.9),\n        'colsample_bytree':\n            trial.suggest_float('colsample_bytree', 0.4, 0.9),\n        'reg_alpha':\n            trial.suggest_float('reg_alpha', 1e-5, 1, log=True),\n        'reg_lambda':\n            trial.suggest_float('reg_lambda', 1e-5, 5, log=True),\n        'random_state': 42,\n    }\n\n    model = XGBRegressor(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg))","metadata":{"editable":true,"slideshow":{"slide_type":""},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:11.573705Z","iopub.execute_input":"2025-01-12T10:43:11.574034Z","iopub.status.idle":"2025-01-12T10:43:11.582952Z","shell.execute_reply.started":"2025-01-12T10:43:11.574002Z","shell.execute_reply":"2025-01-12T10:43:11.58216Z"}},"outputs":[],"execution_count":135},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(xgb_reg_objective, n_trials=100)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:11.58427Z","iopub.execute_input":"2025-01-12T10:43:11.584608Z","iopub.status.idle":"2025-01-12T10:43:11.598851Z","shell.execute_reply.started":"2025-01-12T10:43:11.584578Z","shell.execute_reply":"2025-01-12T10:43:11.597741Z"}},"outputs":[],"execution_count":136},{"cell_type":"code","source":"xgb_reg_params = {\n    'max_depth': 4,\n    'n_estimators': 242,\n    'learning_rate': 0.03429099450613478,\n    'subsample': 0.8723257215748115,\n    'colsample_bytree': 0.7673678927530475,\n    'reg_alpha': 0.0013876419197727426,\n    'reg_lambda': 0.21377114814021422,\n    'random_state': 42,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:11.600362Z","iopub.execute_input":"2025-01-12T10:43:11.60097Z","iopub.status.idle":"2025-01-12T10:43:11.61524Z","shell.execute_reply.started":"2025-01-12T10:43:11.600919Z","shell.execute_reply":"2025-01-12T10:43:11.614141Z"}},"outputs":[],"execution_count":137},{"cell_type":"code","source":"xgb_reg = XGBRegressor(**xgb_reg_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    xgb_reg, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:11.616591Z","iopub.execute_input":"2025-01-12T10:43:11.617054Z","iopub.status.idle":"2025-01-12T10:43:18.051585Z","shell.execute_reply.started":"2025-01-12T10:43:11.617019Z","shell.execute_reply":"2025-01-12T10:43:18.049507Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.4319198859500357\n","output_type":"stream"}],"execution_count":138},{"cell_type":"markdown","source":"## LightGBM","metadata":{}},{"cell_type":"code","source":"from lightgbm import LGBMClassifier, LGBMRegressor","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:18.052847Z","iopub.execute_input":"2025-01-12T10:43:18.053173Z","iopub.status.idle":"2025-01-12T10:43:18.970036Z","shell.execute_reply.started":"2025-01-12T10:43:18.05314Z","shell.execute_reply":"2025-01-12T10:43:18.969019Z"}},"outputs":[],"execution_count":139},{"cell_type":"code","source":"def lgb_cls_objective(trial):\n    params = {\n        'max_depth':\n            trial.suggest_int('max_depth', 2, 10),\n        'n_estimators':\n            trial.suggest_int('n_estimators', 50, 250),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.01, 0.08, log=True),\n        'subsample':\n            trial.suggest_float('subsample', 0.4, 0.9),\n        'colsample_bytree':\n            trial.suggest_float('colsample_bytree', 0.4, 0.9),\n        'min_child_weight':\n            trial.suggest_float('min_child_weight', 1e-5, 1, log=True),\n        'min_child_samples':\n            trial.suggest_int('min_child_samples', 3, 40),\n        'min_data_in_leaf':\n            trial.suggest_int('min_data_in_leaf', 20, 100),\n        'reg_alpha':\n            trial.suggest_float('reg_alpha', 1e-5, 1, log=True),\n        'reg_lambda':\n            trial.suggest_float('reg_lambda', 1e-5, 5, log=True),\n        'random_state': 42,\n        'verbosity': -1,\n    }\n\n    model = LGBMClassifier(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:18.971419Z","iopub.execute_input":"2025-01-12T10:43:18.97207Z","iopub.status.idle":"2025-01-12T10:43:18.980203Z","shell.execute_reply.started":"2025-01-12T10:43:18.972033Z","shell.execute_reply":"2025-01-12T10:43:18.978937Z"}},"outputs":[],"execution_count":140},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(lgb_cls_objective, n_trials=100)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:18.981686Z","iopub.execute_input":"2025-01-12T10:43:18.982061Z","iopub.status.idle":"2025-01-12T10:43:18.999016Z","shell.execute_reply.started":"2025-01-12T10:43:18.982025Z","shell.execute_reply":"2025-01-12T10:43:18.997895Z"}},"outputs":[],"execution_count":141},{"cell_type":"code","source":"lgb_cls_params = {\n    'max_depth': 4,\n    'n_estimators': 135,\n    'learning_rate': 0.05254914335617988,\n    'subsample': 0.42685760791943506,\n    'colsample_bytree': 0.8442538608519168,\n    'min_child_weight': 3.218842555584229e-05,\n    'min_child_samples': 35,\n    'min_data_in_leaf': 75,\n    'reg_alpha': 0.0018208214094857823,\n    'reg_lambda': 1.3204323774842717,\n    'random_state': 42,\n    'verbosity': -1,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:19.000591Z","iopub.execute_input":"2025-01-12T10:43:19.00107Z","iopub.status.idle":"2025-01-12T10:43:19.015946Z","shell.execute_reply.started":"2025-01-12T10:43:19.001022Z","shell.execute_reply":"2025-01-12T10:43:19.014792Z"}},"outputs":[],"execution_count":142},{"cell_type":"code","source":"lgb_clf = LGBMClassifier(**lgb_cls_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    lgb_clf, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:19.017506Z","iopub.execute_input":"2025-01-12T10:43:19.017879Z","iopub.status.idle":"2025-01-12T10:43:27.480811Z","shell.execute_reply.started":"2025-01-12T10:43:19.017847Z","shell.execute_reply":"2025-01-12T10:43:27.479701Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.3880091881759126\n","output_type":"stream"}],"execution_count":143},{"cell_type":"code","source":"lgb_semi_clf = SelfTrainingClassifier(\n    base_estimator=LGBMClassifier(**lgb_cls_params))\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    lgb_semi_clf, X_semi, y_semi, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:43:27.48229Z","iopub.execute_input":"2025-01-12T10:43:27.482857Z","iopub.status.idle":"2025-01-12T10:44:32.154775Z","shell.execute_reply.started":"2025-01-12T10:43:27.482821Z","shell.execute_reply":"2025-01-12T10:44:32.15345Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.37061314376568966\n","output_type":"stream"}],"execution_count":144},{"cell_type":"code","source":"def lgb_reg_objective(trial):\n    params = {\n        'max_depth':\n            trial.suggest_int('max_depth', 2, 10),\n        'n_estimators':\n            trial.suggest_int('n_estimators', 50, 250),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.01, 0.08, log=True),\n        'subsample':\n            trial.suggest_float('subsample', 0.4, 0.9),\n        'colsample_bytree':\n            trial.suggest_float('colsample_bytree', 0.4, 0.9),\n        'min_child_weight':\n            trial.suggest_float('min_child_weight', 1e-5, 1, log=True),\n        'min_child_samples':\n            trial.suggest_int('min_child_samples', 3, 40),\n        'min_data_in_leaf':\n            trial.suggest_int('min_data_in_leaf', 20, 100),\n        'reg_alpha':\n            trial.suggest_float('reg_alpha', 1e-5, 1, log=True),\n        'reg_lambda':\n            trial.suggest_float('reg_lambda', 1e-5, 5, log=True),\n        'random_state': 42,\n        'verbosity': -1,\n    }\n\n    model = LGBMRegressor(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:32.156758Z","iopub.execute_input":"2025-01-12T10:44:32.157759Z","iopub.status.idle":"2025-01-12T10:44:32.16571Z","shell.execute_reply.started":"2025-01-12T10:44:32.157707Z","shell.execute_reply":"2025-01-12T10:44:32.164457Z"}},"outputs":[],"execution_count":145},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(lgb_reg_objective, n_trials=200)","metadata":{"scrolled":true,"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:32.167337Z","iopub.execute_input":"2025-01-12T10:44:32.167843Z","iopub.status.idle":"2025-01-12T10:44:32.179588Z","shell.execute_reply.started":"2025-01-12T10:44:32.167793Z","shell.execute_reply":"2025-01-12T10:44:32.178279Z"}},"outputs":[],"execution_count":146},{"cell_type":"code","source":"lgb_reg_params = {\n    'max_depth': 3,\n    'n_estimators': 229,\n    'learning_rate': 0.06585546839353598,\n    'subsample': 0.5513778541696142,\n    'colsample_bytree': 0.6052820811049877,\n    'min_child_weight': 0.00032570031974654516,\n    'min_child_samples': 18,\n    'min_data_in_leaf': 70,\n    'reg_alpha': 1.581154622246121e-05,\n    'reg_lambda': 1.8160798051099172,\n    'random_state': 42,\n    'verbosity': -1,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:32.180799Z","iopub.execute_input":"2025-01-12T10:44:32.181172Z","iopub.status.idle":"2025-01-12T10:44:32.194738Z","shell.execute_reply.started":"2025-01-12T10:44:32.18114Z","shell.execute_reply":"2025-01-12T10:44:32.19297Z"}},"outputs":[],"execution_count":147},{"cell_type":"code","source":"lgb_reg = LGBMRegressor(**lgb_reg_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    lgb_reg, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:32.196259Z","iopub.execute_input":"2025-01-12T10:44:32.196737Z","iopub.status.idle":"2025-01-12T10:44:34.39506Z","shell.execute_reply.started":"2025-01-12T10:44:32.196691Z","shell.execute_reply":"2025-01-12T10:44:34.393951Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.44428854639844867\n","output_type":"stream"}],"execution_count":148},{"cell_type":"markdown","source":"## CatBoost","metadata":{}},{"cell_type":"code","source":"from catboost import CatBoostClassifier, CatBoostRegressor","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:34.396626Z","iopub.execute_input":"2025-01-12T10:44:34.397077Z","iopub.status.idle":"2025-01-12T10:44:34.615229Z","shell.execute_reply.started":"2025-01-12T10:44:34.397029Z","shell.execute_reply":"2025-01-12T10:44:34.614084Z"}},"outputs":[],"execution_count":149},{"cell_type":"code","source":"def cat_cls_objective(trial):\n    params = {\n        'depth':\n            trial.suggest_int('depth', 3, 5),\n        'iterations':\n            trial.suggest_int('iterations', 50, 400),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.01, 0.08, log=True),\n        'l2_leaf_reg':\n            trial.suggest_float('l2_leaf_reg', 1e-2, 1, log=True),\n        'random_strength':\n            trial.suggest_float('random_strength', 1e-4, 10.0),\n        'min_data_in_leaf':\n            trial.suggest_int('min_data_in_leaf', 20, 100),\n        'bagging_temperature':\n            trial.suggest_float('bagging_temperature', 1e-3, 2.0),\n        'random_state': 42,\n        'verbose': 0,\n    }\n\n    model = CatBoostClassifier(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:34.616793Z","iopub.execute_input":"2025-01-12T10:44:34.617684Z","iopub.status.idle":"2025-01-12T10:44:34.625463Z","shell.execute_reply.started":"2025-01-12T10:44:34.617632Z","shell.execute_reply":"2025-01-12T10:44:34.62413Z"}},"outputs":[],"execution_count":150},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(cat_cls_objective, n_trials=100)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:34.627038Z","iopub.execute_input":"2025-01-12T10:44:34.627817Z","iopub.status.idle":"2025-01-12T10:44:34.640726Z","shell.execute_reply.started":"2025-01-12T10:44:34.627769Z","shell.execute_reply":"2025-01-12T10:44:34.639385Z"}},"outputs":[],"execution_count":151},{"cell_type":"code","source":"cat_cls_params = {\n    'depth': 5,\n    'iterations': 259,\n    'learning_rate': 0.05657478838870604,\n    'l2_leaf_reg': 0.06043922464293353,\n    'random_strength': 0.6738336514788371,\n    'min_data_in_leaf': 86,\n    'bagging_temperature': 0.8493063473372283,\n    'random_state': 42,\n    'verbose': 0,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:34.642256Z","iopub.execute_input":"2025-01-12T10:44:34.642634Z","iopub.status.idle":"2025-01-12T10:44:34.65596Z","shell.execute_reply.started":"2025-01-12T10:44:34.642601Z","shell.execute_reply":"2025-01-12T10:44:34.654607Z"}},"outputs":[],"execution_count":152},{"cell_type":"code","source":"cat_clf = CatBoostClassifier(**cat_cls_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    cat_clf, X_train, y_train_cls, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:44:34.657557Z","iopub.execute_input":"2025-01-12T10:44:34.658041Z","iopub.status.idle":"2025-01-12T10:45:03.430704Z","shell.execute_reply.started":"2025-01-12T10:44:34.657991Z","shell.execute_reply":"2025-01-12T10:45:03.429545Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.3534863632270627\n","output_type":"stream"}],"execution_count":153},{"cell_type":"code","source":"cat_semi_clf = SelfTrainingClassifier(\n    base_estimator=CatBoostClassifier(**cat_cls_params))\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    cat_semi_clf, X_semi, y_semi, cv=skf, scoring=kappa_scorer_cls)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:45:03.43198Z","iopub.execute_input":"2025-01-12T10:45:03.432294Z","iopub.status.idle":"2025-01-12T10:49:18.41328Z","shell.execute_reply.started":"2025-01-12T10:45:03.432265Z","shell.execute_reply":"2025-01-12T10:49:18.412089Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.3499128913736195\n","output_type":"stream"}],"execution_count":154},{"cell_type":"code","source":"def cat_reg_objective(trial):\n    params = {\n        'depth':\n            trial.suggest_int('depth', 3, 5),\n        'iterations':\n            trial.suggest_int('iterations', 50, 400),\n        'learning_rate':\n            trial.suggest_float('learning_rate', 0.01, 0.08, log=True),\n        'l2_leaf_reg':\n            trial.suggest_float('l2_leaf_reg', 1e-2, 1, log=True),\n        'random_strength':\n            trial.suggest_float('random_strength', 1e-4, 10.0),\n        'min_data_in_leaf':\n            trial.suggest_int('min_data_in_leaf', 20, 100),\n        'bagging_temperature':\n            trial.suggest_float('bagging_temperature', 1e-3, 2.0),\n        'random_state': 42,\n        'verbose': 0,\n    }\n\n    model = CatBoostRegressor(**params)\n    return np.mean(cross_val_score(\n        model, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:18.4241Z","iopub.execute_input":"2025-01-12T10:49:18.424648Z","iopub.status.idle":"2025-01-12T10:49:18.432132Z","shell.execute_reply.started":"2025-01-12T10:49:18.424605Z","shell.execute_reply":"2025-01-12T10:49:18.430976Z"}},"outputs":[],"execution_count":155},{"cell_type":"code","source":"if optimize_hyperparameters:\n    study = optuna.create_study(direction='maximize')\n    study.optimize(cat_reg_objective, n_trials=100)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:18.433342Z","iopub.execute_input":"2025-01-12T10:49:18.433765Z","iopub.status.idle":"2025-01-12T10:49:18.447917Z","shell.execute_reply.started":"2025-01-12T10:49:18.433734Z","shell.execute_reply":"2025-01-12T10:49:18.446631Z"}},"outputs":[],"execution_count":156},{"cell_type":"code","source":"cat_reg_params = {\n    'depth': 5,\n    'iterations': 346,\n    'learning_rate': 0.06117496115351006,\n    'l2_leaf_reg': 0.18984413813305515,\n    'random_strength': 1.366168501210568,\n    'min_data_in_leaf': 49,\n    'bagging_temperature': 0.9679660228741935,\n    'random_state': 42,\n    'verbose': 0,\n}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:18.449423Z","iopub.execute_input":"2025-01-12T10:49:18.449865Z","iopub.status.idle":"2025-01-12T10:49:18.463708Z","shell.execute_reply.started":"2025-01-12T10:49:18.449829Z","shell.execute_reply":"2025-01-12T10:49:18.462451Z"}},"outputs":[],"execution_count":157},{"cell_type":"code","source":"cat_reg = CatBoostRegressor(**cat_reg_params)\n\nprint('Mean QWK:', np.mean(cross_val_score(\n    cat_reg, X_train, y_train_reg, cv=skf, scoring=kappa_scorer_reg)))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:18.465136Z","iopub.execute_input":"2025-01-12T10:49:18.465531Z","iopub.status.idle":"2025-01-12T10:49:32.973568Z","shell.execute_reply.started":"2025-01-12T10:49:18.46546Z","shell.execute_reply":"2025-01-12T10:49:32.972426Z"}},"outputs":[{"name":"stdout","text":"Mean QWK: 0.42891663744351705\n","output_type":"stream"}],"execution_count":158},{"cell_type":"markdown","source":"## Submission","metadata":{}},{"cell_type":"code","source":"model = xgb_reg.fit(X_train, y_train_reg)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:32.975061Z","iopub.execute_input":"2025-01-12T10:49:32.975407Z","iopub.status.idle":"2025-01-12T10:49:33.919961Z","shell.execute_reply.started":"2025-01-12T10:49:32.975374Z","shell.execute_reply":"2025-01-12T10:49:33.918962Z"}},"outputs":[],"execution_count":159},{"cell_type":"code","source":"result = pd.DataFrame({\n    'id': X_test.index,\n    'sii': model.predict(X_test),\n})\n\nresult.sii = convert(result.sii)\nresult.set_index('id', inplace=True)\nresult.to_csv('submission.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-12T10:49:33.921947Z","iopub.execute_input":"2025-01-12T10:49:33.922399Z","iopub.status.idle":"2025-01-12T10:49:33.94508Z","shell.execute_reply.started":"2025-01-12T10:49:33.922352Z","shell.execute_reply":"2025-01-12T10:49:33.943567Z"}},"outputs":[],"execution_count":160},{"cell_type":"markdown","source":"# Conclusions","metadata":{}}]}