fixes and improvements

This commit is contained in:
Alex Blank
2025-09-09 13:44:45 +00:00
parent bf2e79cc4c
commit e71f1cd2e3
10 changed files with 354 additions and 234 deletions
+102 -75
View File
@@ -6,9 +6,9 @@
Despite promising results in earlier studies, ovulation prediction remains constrained by small datasets,
assumptions of cycle regularity, and opaque modeling approaches.
To address these limitations, we develop a data-driven framework based on a large,
To address these limitations, I develop a data-driven framework based on a large,
heterogeneous dataset of real-world menstrual cycles.
Our approach emphasizes model transparency, adaptability to irregular patterns, and the predictive utility of
My approach emphasizes model transparency, adaptability to irregular patterns, and the predictive utility of
high-resolution core body temperature measurements.
The overall goal is to train a model to predict the fertility-probability and information about the ovulation for
a given day, only relying on past information prior to that day.
@@ -53,11 +53,14 @@ The algorithm operates in two stages:
This retrospective labeling provides a practical and scalable proxy for ground truth, enabling training and evaluation across a large, real-world dataset,
particularly given that temperature is a well-established retrospective marker of ovulation.
In internal evaluations, the estimated ovulation day fell within a \(\pm\)2-day window of the expert reference in approximately 86\% of labeled cycles.
These labels serve as the supervisory signal for model training and evaluation.
We acknowledge the limitations of this method: ambiguous or noisy temperature patterns, due to illness, dropout,
or sensor error, may result in noisy labels, which can affect downstream model performance.
However, label quality is continuously reviewed and may be refined iteratively as model performance improves.
It is important to note that the labeling algorithm infers ovulation retrospectively from the full temperature curve.
While this approach is practical for large-scale annotation,
it means that the labels represent an approximation rather than a clinical gold standard (e.g., ultrasound or daily LH testing).
Consequently, the trained models learn to reproduce these retrospective estimates, which may deviate from the true
physiological ovulation day in some cycles.
This limitation is addressed further in the Discussion.
The next section details how these labels are incorporated into feature representations and model training.
@@ -169,7 +172,7 @@ They represent real-time physiological signals from which the model must infer o
These derived features summarize local trends or extrema in the temperature signal, reducing the burden on the model to learn such patterns from raw data.
Special care was taken, so that the sliding window can only look backwards, so that no data leakage can happen.
We extend each windowed feature at the beginning with the starting value, so that the window can be calculated for the first real value already.
I extend each windowed feature at the beginning with the starting value, so that the window can be calculated for the first real value already.
The 1-day window length reflects the expected circadian cycle and strikes a balance between temporal sensitivity and signal stability.
Figure~\ref{fig:methodology_observable_features} illustrates the behavior of all observable features within a single cycle.
@@ -183,7 +186,7 @@ For this study, the following exogenous variables are used:
\begin{itemize}
\item \textbf{Fertility / Pregnancy Probability} — The estimated probability of conception from unprotected intercourse on the current day.
\item \textbf{Ovulation-Over Indicator} — A binary variable indicating whether ovulation has already occurred in the current cycle.
\item \textbf{OV-over Indicator} — A binary variable indicating whether ovulation has already occurred in the current cycle.
\end{itemize}
\begin{figure}[htbp]
@@ -191,7 +194,7 @@ For this study, the following exogenous variables are used:
\includegraphics[width=0.9\textwidth]{resources/figures/methodology/methodology_target_features}
\caption{
Target features plotted for a single cycle.
The ovulation-over indicator switches on the day of ovulation;
The OV-over indicator switches on the day of ovulation;
the fertility probability follows a curve based on known day-specific fecundability~\cite{dunson_day-specific_1999}.
}
\label{fig:methodology_target_features}
@@ -202,17 +205,17 @@ The combination of these two targets is intended to provide the user with both p
A fertility probability near zero could mean that ovulation is either in the past or still ahead—information the model alone cannot disambiguate.
Figure~\ref{fig:methodology_target_features} shows an example cycle where the target feature values during the course of a cycle can be seen.
The \textit{ovulation-over indicator}, by contrast, explicitly marks the post-ovulatory phase, but does not describe conception risk.
The \textit{OV-over indicator}, by contrast, explicitly marks the post-ovulatory phase, but does not describe conception risk.
Together, the two outputs offer complementary information and improve interpretability for real-time user-facing applications.
As discussed in Section~\ref{sec:discussion}, all predictions are subject to further interpretation before presentation in the product interface.
The model outputs represent data-driven estimates and do not constitute medical advice or diagnostic statements.
Although the models were trained to predict both targets, and fertility-probability as well as the ovulation-over indicator
Although the models were trained to predict both targets, and fertility-probability as well as the OV-over indicator
are relevant for actual application of the models, the primary focus of this thesis lies on the fertility-probability target,
which is more central to the research objectives.
The ovulation-over indicator is included due to its practical relevance for potential real-world applications,
but it is not analyzed in depth, as it lies outsize the core scope of scientific investigation.
The OV-over indicator is included due to its practical relevance for potential real-world applications,
but it is not analyzed in depth, as it lies outside the core scope of scientific investigation.
\begin{table}[htbp]
\centering
@@ -257,11 +260,12 @@ but it is not analyzed in depth, as it lies outsize the core scope of scientific
All features were normalized based on their empirical distributions.
A \textit{standard scaler} was applied to approximately normal features without outliers,
a \textit{robust scaler} was used for distributions with outliers, and a \textit{MinMax scaler} was used for all others.
Different Scalers were used for the train, validation and test sets to avoid data leakage.
All scalers were fit on the training set only and applied to the validation and test sets to avoid data leakage.
For the final data matrix, all features are stacked per timestep.
The static features are repeated for each timestep.
We are aware of possible inefficiencies here.
I am aware of possible inefficiencies here.
A side channel for static features might improve predictive efficiency and potential quality, but
this was left out to keep the interfaces the same for compatibility purposes between all tested models
@@ -332,11 +336,11 @@ for the prediction as no information is present.
Figure~\ref{fig:methodology_padding_example} shows an example of such padding during early-cycle input preparation.
This input strategy supports efficient, temporally-aware learning and allows us to evaluate how predictive accuracy evolves over time within each cycle.
This input strategy supports efficient, temporally-aware learning and allows me to evaluate how predictive accuracy evolves over time within each cycle.
\subsection{Model Architecture and Selection}\label{subsec:model_architecture_and_selection}
The primary objective of this study is to find models that accurately predict the features introduced in~\ref{fig:methodology_target_features},
The primary objective of this study is to find models that accurately predict the features introduced in Figure~\ref{fig:methodology_target_features},
based on the historical data and context variables.
This task presents several modelling challenges: capturing temporal dependencies across varying cycle lengths, handling irregular menstrual patterns
and adapting to user-specific variability.
@@ -348,8 +352,8 @@ Ultimately, the models used in this study were selected based on their ability t
\item Generalize across users while incorporating personalized cycle context
\end{itemize}
In this section we will introduce the base architectures \textbf{Long-Short-Term-Memory Models} and \textbf{Transformer Models}.
Additionally, we'll show, how the convolutional hybrids extend their functionality.
In this section I will introduce the base architectures \textbf{Long-Short-Term-Memory Models} and \textbf{Transformer Models}.
Additionally, I will show, how the convolutional hybrids extend their functionality.
\subsubsection{LSTM-Architecture}\label{subsubsec:lstm_architecture}
\begin{figure}[htbp]
@@ -365,7 +369,7 @@ Recurrent neural networks, particularly LSTMs, were tested for their ability to
Their sequential memory structure allows them to retain information across cycle days, but they may struggle with high-resolution input and longer sequences.
LSTMs, in particular, have a long history of strong performance in sequence prediction tasks.
For this study, a stack of LSTM layers was followed by a linear projection layer, mapping the hidden state at the final time
step to the two target variables: fertility probability and ovulation-over indicator.
step to the two target variables: fertility probability and OV-over indicator.
Figure~\ref{fig:methodology_lstm_architecture} shows the overall architecture pipeline used for the LSTM-based model.
The stacked inputs and outputs denote the batch processing of the model.
@@ -376,7 +380,7 @@ Model-specific architectural parameters are:
\item \textbf{Number of Layers} — Depth of the LSTM stack.
\end{itemize}
The specific values and tuning ranges for these parameters are discussed in Section~\ref{subsubsec:hyperparameter_tuning}.
A fixed dropout rate of \(p = 0.5\) has been selected for each LSTM-layer expect the last,
A fixed dropout rate of \(p = 0.5\) has been selected for each LSTM-layer except the last,
as was shown to be an effective value~\cite{pham_dropout_2014}
\subsubsection{Transformer Architecture}\label{subsubsec:transformer_architecture}
@@ -405,8 +409,8 @@ A future direction could investigate the impact of omitting it in such naturally
Since the task does not require sequence-to-sequence modeling, only the encoder part of the Transformer is used.
Its output—one vector per input token—is aggregated via 1D adaptive average pooling, resulting in a single vector representation per sequence.
This vector is then passed through a linear projection layer to produce the two target outputs:
fertility probability and ovulation-over indicator.
Note, that in contrast to the original use case of machine-translation, no special tokens are necessary here, as we do not perform sequence-to-sequence prediction.
fertility probability and OV-over indicator.
Note, that in contrast to the original use case of machine-translation, no special tokens are necessary here, as no sequence-to-sequence prediction is performed here.
Figure~\ref{fig:methodology_transformer_architecture} shows the overall architecture.
The stacked inputs and outputs indicate batch processing.
@@ -472,7 +476,7 @@ The training process is organized into distinct \textit{runs}, each representing
Within a run, variable parameters, such as input sequence length, hidden layer size, dropout rate,
or specific feature subsets, are swept across predefined value ranges.
We define 3 runs for each base architecture and 2 for each convolutional architecture.
I define 3 runs for each base architecture and 2 for each convolutional architecture.
\begin{itemize}
\item \textbf{Input-Sequence-Length Run:} explores different input sequence lengths
\item \textbf{Input Resolution Run:} explores different input resolutions (only for base architectures)
@@ -596,8 +600,8 @@ based on the MSE of the fertility-probability target during the fertile days.
These model configurations will then be used for further evaluations.
\vspace{0.5em}
We acknowledge that interactions between input and model parameters may influence final model performance,
and our two-stage tuning procedure may miss globally optimal combinations.
I acknowledge that interactions between input and model parameters may influence final model performance,
and my two-stage tuning procedure may miss globally optimal combinations.
\subsubsection{Training Details}\label{subsubsec:training_details}
@@ -616,7 +620,7 @@ Each model was trained for up to 30 epochs, with early stopping based on validat
\subsection{Evaluation}\label{subsec:evaluation}
To meaningfully compare model performance, we define a set of metrics according to the research objectives,
To meaningfully compare model performance, I define a set of metrics according to the research objectives,
that capture both overall accuracy and behavior at key points in the prediction sequence as well as cover the use cases introduced in~\ref{subsubsec:practical_use_cases}.
This includes metrics for different temporal segments, such as before and after the ovulation,
enabling a more detailed understanding of model strengths and limitations.
@@ -638,7 +642,7 @@ In many cases, it remains unclear whether proposed models genuinely outperform s
\subsubsection{Evaluation Metrics}\label{subsubsec:evaluation_metrics}
The base metric used for all categories is the mean squared error (MAE),
The base metric used for all categories is the mean squared error (MSE),
which describes the average squared deviation of the prediction from the target value,
and is defined as:
\begin{align}
@@ -653,7 +657,7 @@ This is particularly relevant for model comparison, where disproportionate error
Moreover, since the fertility probability target was trained using an MSE-based loss function,
this metric directly reflects the optimization objective.
To complement this, we also report the mean squared error (MAE):
To complement this, I also report the mean squared error (MAE):
\begin{align}
\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} \left| y_i - \hat{y}_i \right|
\end{align}
@@ -662,18 +666,18 @@ where \(y_i\) is the observed value and \(\hat{y}_i\) the predicted value.
MAE was selected for its intuitive interpretability.
In particular, the fertility probability target lends itself well to an absolute error interpretation,
making MAE a natural choice for evaluating prediction accuracy.
However, we will only be using the MAE as a secondary metric, as we will base our further interpretation of
the model performances on the use-case evaluations, that provide inherent real-world interpretability.
However, I will only be using the MAE as a secondary metric, as I will base my further interpretation of
the model performances on the use case evaluations, that provide inherent real-world interpretability.
We considered including the coefficient of determination (\(R^2\)) as an evaluation metric.
However, we found that the target windows frequently exhibited very low variance,
I considered including the coefficient of determination (\(R^2\)) as an evaluation metric.
However, I found that the target windows frequently exhibited very low variance,
a condition under which \(R^2\) becomes unstable and potentially misleading.
As a result, we decided to exclude it from our evaluation.
As a result, I decided to exclude it from my evaluation.
To enable a more nuanced comparison of model performance,
we complement the overall error metrics with targeted evaluations at biologically relevant subregions of the prediction sequence.
I complement the overall error metrics with targeted evaluations at biologically relevant subregions of the prediction sequence.
This decomposition allows us to identify localized strengths and weaknesses in different models,
This decomposition allows me to identify localized strengths and weaknesses in different models,
for example, a model may accurately capture the onset of fertility but underperform closer to ovulation.
It also facilitates a clearer comparison of false-positive tendencies,
@@ -681,13 +685,13 @@ i.e., days that are not fertile but are misclassified as such by the model.
These insights are important for understanding practical limitations
and choosing appropriate models depending on the intended clinical or user-facing application.
In addition, we stratify each metric by the number of past cycles available as context,
In addition, I stratify each metric by the number of past cycles available as context,
to assess how model performance varies with different amounts of historical information.
This aspect is especially relevant for users with irregular cycles,
where models may learn user-specific patterns to different degrees,
potentially leading to divergent prediction behavior.
Tables~\ref{tab:fertility_mae_metrics} and~\ref{tab:ov_over_mae_metrics} summarize the metrics used for evaluating the fertility probability and ovulation-over targets, respectively.
Tables~\ref{tab:fertility_mae_metrics} and~\ref{tab:ov_over_mae_metrics} summarize the metrics used for evaluating the fertility probability and OV-over targets, respectively.
\begin{table}[htbp]
\centering
@@ -735,43 +739,46 @@ Tables~\ref{tab:fertility_mae_metrics} and~\ref{tab:ov_over_mae_metrics} summari
Post-OV & MAE after the ovulation. \\
\bottomrule
\end{tabular}
\caption{Evaluation metrics of the ovulation-over target based on mean squared error (MSE) and mean absolute error (MAE) at various intervals across the predicted fertility window.}
\caption{Evaluation metrics of the OV-over target based on mean squared error (MSE) and mean absolute error (MAE) at various intervals across the predicted fertility window.}
\label{tab:ov_over_mae_metrics}
\end{table}
\subsubsection{Best Model Configuration Selection}\label{subsubsec:methodology_best_model_config_selection}
Based on the results from the input window length, input resolution,
and model parameter space exploration, we selected a single best configuration for each model architecture to carry forward.
and model parameter space exploration, I've selected a single best configuration for each model architecture to carry forward.
This step was necessary to keep the computational effort manageable,
as exhaustively testing all possible configurations for every subsequent metric would have been prohibitively expensive.
Selection was based primarily on the \textbf{Fertility-Overall MSE} metric,
as it most directly reflects the main objective of this study: predicting fertility,
and we want to penalize larger errors more, as they are much more problematic for our use-case scenarios.
and I want to penalize larger errors more, as they are much more problematic for my use case scenarios.
In cases where the difference between configurations was small (less than \(\pm\) 5\% metric value),
we preferred the option that aligned with the general tendency of the model architecture.
For example, if an architecture consistently performed better with more input data or longer sequences,
but the Fertility-Overall MSE was only marginally better for a shorter window, we selected the longer window.
I prefer the option that aligned with the general tendency of the model architecture.
For example, if an architecture consistently performs better with more input data or longer sequences,
but the Fertility-Overall MSE is only marginally better for a shorter window, I'll selected the longer window.
This selection process was applied to all tested parameters—input window length, input resolution, and model complexity.
The resulting configurations were then used in the irregular cycles study and the use case evaluation.
\paragraph{Uncertainty estimation.}
We report point estimates on a held-out test set.
Because per-user (or per-cycle/day) predictions were not retained, we cannot compute confidence intervals or paired significance tests.
I'll report point estimates on a held-out test set.
Because per-user (or per-cycle/day) predictions were not retained, I cannot compute confidence intervals or paired significance tests.
All model comparisons are therefore descriptive rather than inferential.
\paragraph{Calibration.} While MSE (Brier score) is reported, model calibration (e.g., reliability
curves) was not assessed and is left for future work alongside prospective validation.
\subsubsection{Regular and Irregular Cycles}\label{subsubsec:methodology_regular_and_irregular_cycles}
A perfectly regular menstrual pattern does not require a sophisticated algorithm to predict ovulation—
the next ovulation day is likely to be identical or very close to the previous one.
To evaluate how different algorithms handle varying degrees of cycle variability,
we compare model performance on two distinct user groups: one with highly regular cycles and another with highly irregular cycles.
I compare model performance on two distinct user groups: one with highly regular cycles and another with highly irregular cycles.
These groups are defined by the standard deviation of the ovulation day across cycles.
Specifically, we select the 100 users with the lowest standard deviation (regular group)
Specifically, I have selected select the 100 users with the lowest standard deviation (regular group)
and the 100 users with the highest standard deviation (irregular group).
This comparison allows us to assess not only overall performance,
This comparison allows me to assess not only overall performance,
but also whether ovulation can be meaningfully predicted in the presence of strong temporal irregularity.
For a user to be included in the analysis, they must have at least five completed cycles.
@@ -779,12 +786,12 @@ Additionally, ovulation must occur no later than cycle day 150, as later values
biologically atypical cases that fall outside the scope of this study.
\subsubsection{Use Case Evaluation}\label{subsubsec:use_case_evaluation}
We further evaluate the two distinct use cases introduced in Section~\ref{subsubsec:practical_use_cases}.
I further evaluate the two distinct use cases introduced in Section~\ref{subsubsec:practical_use_cases}.
For this purpose, two specialized evaluation algorithms were developed,
enabling comparability between models and providing interpretable performance metrics for each scenario.
\paragraph{Contraception Use-Case:}
For evaluating contraceptive effectiveness, we developed an algorithm inspired by the classical \emph{Pearl Index},
\paragraph{Contraception Use Case:}
For evaluating contraceptive effectiveness, I have developed an algorithm inspired by the classical \emph{Pearl Index},
initially proposed by~\citeauthor{pearl_factors_1933} in~\citeyear{pearl_factors_1933}~\cite{pearl_factors_1933}.
\begin{figure}[htbp]
@@ -797,14 +804,14 @@ initially proposed by~\citeauthor{pearl_factors_1933} in~\citeyear{pearl_factors
\end{figure}
Figure~\ref{fig:methodology_use_case_contraception_decision_diagram} illustrates the decision logic of the evaluation algorithm.
The fertility threshold can be adjusted, as will be explored in Section~\ref{subsec:use_case_evaluation_results}.
The fertility threshold can be adjusted, as will be explored in Section~\ref{subsec:rq4_use_case_evaluations}.
A day-specific probability of intercourse is computed for each user based on age distributions reported by~\cite{twenge_declines_2017}.
We assume, that the users don't have any health-related or non-health-related issues affecting fertility.
I assume that the users do not have any health-related or non-health-related issues affecting fertility.
If a user's age is unknown, it is randomly drawn from the overall dataset distribution.
Only users with at least one continuous year of data are included.
To get a representative result, we use 100 randomly selected user years.
To get a representative result, I will use 100 randomly selected user years.
Each day of data for a full year we count the following states by the algorithm:
Each day of data for a full year I've counted the following states by the algorithm:
\begin{itemize}
\item \emph{Sex}: Intercourse occurred.
\item \emph{Pregnancy}: fertility prediction allowed intercourse during a potentially fertile period, and it led to a pregnancy.
@@ -817,13 +824,13 @@ This categorization captures both the contraceptive accuracy (avoiding pregnancy
An algorithm achieving perfect contraceptive accuracy by always recommending abstinence would score highly but
significantly limit user acceptability and utility.
To add a control group, we compute the potential pregnancies and number of sexual intercourse without using the models predictions,
To add a control group, I will compute the potential pregnancies and number of sexual intercourse without using the models predictions,
i.e., the group does not use any contraception.
In this case, sexual intercourse can happen unrestricted on every day.
\paragraph{Pregnancy Use-Case:}
\paragraph{Pregnancy Use Case:}
For the pregnancy use-case, we developed a complementary algorithm to evaluate model performance for users attempting to conceive.
For the pregnancy use case, I have developed a complementary algorithm to evaluate model performance for users attempting to conceive.
\begin{figure}[htbp]
\centering
@@ -835,16 +842,16 @@ For the pregnancy use-case, we developed a complementary algorithm to evaluate m
\end{figure}
Figure~\ref{fig:methodology_use_case_pregnancy_decision_diagram} illustrates the decision logic of this algorithm.
The fertility threshold is adjustable and is explored further in Section~\ref{subsec:use_case_evaluation_results}.
The fertility threshold is adjustable and is explored further in Section~\ref{subsec:rq4_use_case_evaluations}.
Since sexual intercourse frequency differs slightly for couples trying to conceive~\cite{gaskins_predictors_2018},
we assume an average frequency of six times per month.
I assume an average frequency of six times per month.
We assume no health-related fertility impairments for comparative simplicity,
though we acknowledge that real-world fertility is influenced by numerous complex factors.
I assume no health-related fertility impairments for comparative simplicity,
though I acknowledge that real-world fertility is influenced by numerous complex factors.
Similar to the contraception scenario, only users with at least one continuous year of data are considered.
For representative results, we use 100 randomly selected user years.
For representative results, I will use 100 randomly selected user years.
For each day in a full year we count occurrences of the following states:
For each day in a full year I will count occurrences of the following states:
\begin{itemize}
\item \emph{Sex}: Intercourse occurred
\item \emph{Pregnancy}: Correct fertile prediction, intercourse occurred, resulting in pregnancy.
@@ -855,19 +862,39 @@ For each day in a full year we count occurrences of the following states:
This classification measures both fertility prediction accuracy and the impact of incorrect deferrals.
A model overly predicting fertility would increase potential pregnancy rates but negatively affect usability and trust due to misdirected efforts.
For the pregnancy case, we also compute a control group.
For the pregnancy case, I will also compute a control group.
Here, every day is considered potentially fertile and thus allows for intercourse.
\subsection{Ethical Considerations}\label{subsec:ethical_considerations}
This study was conducted using pseudonymized data collected in accordance with the terms of service and privacy policy of the data provider, VivoSensMedical GmbH (Leipzig, Germany).
All users whose data were included had consented to the use of their recordings for analytical purposes at the time of data collection.
The use of machine learning for fertility prediction raises important ethical
considerations due to the sensitive nature of reproductive health data and
the potential consequences of incorrect predictions.
While this thesis focuses on technical feasibility, the clinical and societal context must
also be addressed. \\
The study protocol was reviewed and approved by the provider's internal legal and scientific advisory team,
which is responsible for ensuring ethical and regulatory compliance.
\noindent\textbf{User safety and risk of harm.} Fertility prediction errors have
asymmetric consequences: a false negative in contraception use may lead to
unintended pregnancy, while a false positive in conception support may cause frustration but less direct harm.
Any system derived from this research must therefore prioritize safety, adopt conservative thresholds for contraceptive
contexts, and clearly communicate uncertainty to users.
Importantly, predictions presented here are research results only and do not constitute medical advice. \\
All data used in this study were pseudonymized prior to access.
No personal identifiers or sensitive metadata were included.
Additional safeguards were implemented to ensure data confidentiality and integrity,
including restricted access and use solely for the purposes of model development and evaluation.
No compensation was provided to participants, as the data were originally collected as part of routine usage under the agreed terms.
\noindent\textbf{Data privacy and autonomy.} The dataset contains highly sensitive, personal health information.
All data were pseudonymized, processed under strict privacy safeguards, and used exclusively for research and product
improvement by the device manufacturer.
Even so, the possibility of re-identification in health datasets cannot be fully excluded.
Future deployments must adhere to the highest standards of data protection and give
users transparent control over how their information is used. \\
\noindent\textbf{Equity and generalizability.} The dataset reflects users of a single
device and may not represent the diversity of menstrual patterns across
populations, ages, and health conditions.
Models trained here may therefore perform differently across groups.
Explicit fairness evaluations and diverse validation cohorts are essential before any clinical or consumer application. \\
\noindent\textbf{Commercial and clinical responsibility.} The data partner in this
work is a medical device company, which underscores the need to guard against commercial bias.
Results should be independently validated, and any translation into clinical or consumer use must be preceded by prospective,
peer-reviewed trials.
Without such validation, deploying fertility prediction tools risks undermining trust and causing harm. \\