. To make a long story short, I'd like to
take you out on a date sometime. When are you free?
In case of them agreeing to go on a date, a time and place were agreed
upon, and I came to the date to check whether they had showed up.
The people who were approached were chosen by their attractiveness to
the author.
In the week following the last approach, I masturbated once every day
with the aid of pornography.
Afterwards, I repeated the procedure of approaching 100 men and 100 women
with the same words from \_ to \_.
Data that was logged included date and time of day (in
[ISO8601](https://en.wikipedia.org/wiki/ISO_8601)), whether the approach
was after abstinence from masturbation or after the oneweek period
of masturbation (1 for the part after abstinence, and 0 for the part
after masturbation), perceived gender of the person approached ("m",
"f" or "o"), and how far the interaction went:
* 1 (ignored): the person walked past and did not react
* 2 (stopped): the person stopped, but didn't answer any question (started laughing or walking away)
* 3 (name): person gave name, but then started walking away
* 4 (rejection): person answered that they were in a relationship/had no interest
* 5 (flake): person gave contact information, but did not reply
* 6 (date): person showed up to the date
Results were logged in a [CSV](https://en.wikipedia.org/wiki/Commaseparated_values).
Results Analysis

The raw data is available [here](./data/masturbation_attractiveness.csv).
### Visualizing the Results
Cold approach is a conversion funnel: there are a number of different
stages an approachee goes through, and each one can fail. This way, one
can visualize how far the interaction went by making a bar graph of the
people dropping out at a certain stage (ignoring the approach, stopping
but not giving a name, giving a name but not agreeing to come on a date,
agreeing to come on a date but flaking, and showing up to a date).
Showing up to the date was considered a condition of success, but one
could imagine further steps like having sex, getting into a relationship
with the person, getting married with the person and having children with
the person, though these were deemed excessive and out of the scope of
a simple selfexperiment.
The bargraph below shows how many people were lost at which stage
of the funnel, ignoring gender. The white bars show the numbers
during a period of abstinence from masturbation, after 90 days
of abstinence, the black bars show the numbers after a period of
weekly masturbation.
Code:
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 200 10])
text(20;400;"white: during abstinence, before masturbation, black: after masturbation")
fillrgb(0;0;0)
{bar(2*x;during.stag@x;12)}'!6
fillrgb(1;1;1)
{bar(1+2*x;after.stag@x;12)}'!6
draw()
![Gender nonspecific loss in different stages of the funnel](./img/masturbation_and_attractiveness/dur_after_bar.png "Gender nonspecific loss in different stages of the funnel.")
*Gender nonspecific loss in different stages of cold approach*
Very similar diagrams can be made for male and female data points:
Male:
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 100 10])
text(10;400;"light blue: during abstinence, before masturbation, dark blue: after masturbation")
fillrgb(0.4;0.4;1)
{bar(2*x;duringm.stag@x;12)}'!6
fillrgb(0;0;0.6)
{bar(1+2*x;afterm.stag@x;12)}'!6
draw()
![Male loss in different stages of the funnel](./img/masturbation_and_attractiveness/dur_after_m_bar.png "Male loss in different stages of the funnel.")
*Male loss in different stages of cold approach*
Female:
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 100 10])
text(20;400;"light red: during abstinence, before masturbation, dark red: after masturbation")
fillrgb(1;0.4;0.4)
{bar(2*x;duringf.stag@x;12)}'!6
fillrgb(0.6;0;0)
{bar(1+2*x;afterf.stag@x;12)}'!6
draw()
![Female loss in different stages of the funnel](./img/masturbation_and_attractiveness/dur_after_f_bar.png "Female loss in different stages of the funnel.")
*Female loss in different stages of cold approach*
Another possible method could be to visualize cumulative survival
rates for the different stages by percentage by showing a [KaplanMeier
plot](https://en.wikipedia.org/wiki/Kaplan%E2%80%93Meier_estimator). The
overall graph for this would look like this:
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 1 0.1])
text(27;200;"light gray: during abstinence, before masturbation, black: after masturbation")
setwidth(4)
setrgb(0;0;0)
plot({during.cumperc@(_x)1})
setrgb(0.8;0.8;0.8)
plot({after.cumperc@(_x)1})
draw()
![Survival percentages for different stages, overall](./img/masturbation_and_attractiveness/survival.png "Survival percentages for different stages, overall")
*Survival percentages for different stages, overall*
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 1 0.1])
text(10;200;"light blue: during abstinence, before masturbation, dark blue: after masturbation")
setwidth(4)
setrgb(0.4;0.4;1)
plot({duringm.cumperc@(_x)1})
setrgb(0;0;0.6)
plot({afterm.cumperc@(_x)1})
draw()
![Survival percentages for different stages, men](./img/masturbation_and_attractiveness/survival_m.png "Survival percentages for different stages, men")
*Survival percentages for different stages, men*
.l("nplot")
.l("./load.kg")
cgrid(["ignored" "stopped" "name" "rejection" "flake" "date"];[0 1 0.1])
text(27;200;"light red: during abstinence, before masturbation, dark red: after masturbation")
setwidth(4)
setrgb(1;0.4;0.4)
plot({duringf.cumperc@(_x)1})
setrgb(0.6;0;0)
plot({afterf.cumperc@(_x)1})
draw()
![Survival percentages for different stages, women](./img/masturbation_and_attractiveness/survival_f.png "Survival percentages for different stages, women")
*Survival percentages for different stages, women*
### Descriptive Results
Before testing the hypotheses, one can compare the results using very
simple descriptive methods. For this purpose, I used the mean and the
standard deviation to compare the different parts of the dataset.
Here the table for the different mean values and their variances in
parentheses (the botttom right cell contains the overall mean value):

during 
after 

f 
μ_duringf (var) 
μ_afterf (var) 
μ_f (var) 
m 
μ_duringm (var) 
μ_afterm (var) 
μ_m (var) 

μ_during (var) 
μ_after (var) 
μ (var) 
As one can see, \_.
The code for calculating these can be found
[here](./code/masturbation_and_attractiveness/load.kg).
### Testing the Hypothesis
The NoFap community claims that abstinence from masturbation increases
male physical attractiveness for women. This means that cold approach
should be more successful after a long period of abstinence from
masturbation than after a period of sustained masturbation. This
assumption generates three hypotheses:
1. H₀: `$\mu_{during} \le \mu_{after}$`
2. H₁: `$\mu_{during} = \mu_{after}$`
3. H₂: `$\mu_{during} \ge \mu_{after}$`
The result implied by the views of the NoFap community would be that
H₀ would definitely be rejected, and that it would be very likely
that H₁ would also be rejected.
Note that these hypothesis are not exclusive, and can all be accepted at
the same time. It is merely the case that if a hypothesis gets rejected,
the probability that it got rejected although it is true is lower than
a given percentage (usually and also in this case 5%).
I used a twosample Student's ttest to test the
hypotheses, under the assumption that the distribution
of results from cold approach was roughly [normally
distributed](https://en.wikipedia.org/wiki/Normal_distribution)
and that the [variance](https://en.wikipedia.org/wiki/Variance)
of the two sample sets was also roughly equal. As one can see from the
figures, this assumption of normal distribution \_.
To calculate Student's ttest, let
`$\{X_{1}, \cdots, X_{m}\}=X_{i}\sim{\cal{N}}(\mu_{X}, \sigma_{X})$`
be the first sample, and
`$\{Y_{1}, \cdots, Y_{n}\}=Y_{i}\sim{\cal{N}}(\mu_{Y}, \sigma_{Y})$`
the second sample.
Let then `$T$` be
$$T:=\sqrt{\frac{n+m2}{\frac{1}{m}+\frac{1}{n}}}*\frac{\overline{X}\overline{Y}}{\sqrt{(m1)*S_{X}^{2}+(n1)*S_{Y}^{2}}}$$
where `$\overline{X}$` and `$\overline{Y}$` are the sample mean of the
two sample sets, and `$S_{X}^{2}$` and `$S_{Y}^{2}$` are the sample
variances of the two sample sets.
Different hypotheses are then tested by comparing `$T$` to the [quantile
function](https://en.wikipedia.org/wiki/Quantile_function) of [Student's
tdistribution](https://en.wikipedia.org/wiki/Student%27s_tdistribution).
In this case, our sample sizes are bigger than 30, and so the quantile
function of Student's tdistribution can be approximated using the
quantile function of the normal distribution.
The twosided Student's ttest can thus be implemented (the
full code for different hypothesis testing can be found
[here](./code/masturbation_and_attractiveness/hypo.kg):
.l("nstat")
.l("math")
tstt::{t::sqr(((#y)+(#x)2)%(%#x)+%#y)*(mu(x)mu(y))%sqr((((#x)1)*svar(x))+((#y)1)*svar(y));
:[t>qf(1z);.p("μ_X≤μ_Y rejected (p≤",($z),")");.p("μ_X≤μ_Y accepted (p≤",($z),")")];
:[(#t)>qf(1z%2);.p("μ_X=μ_Y rejected (p≤",($z),")");.p("μ_X=μ_Y accepted (p≤",($z),")")];
:[t