• increase from 1 month to 2 months

  • ‘A “reason for stopping modafinil” if applicable question could yield some interesting insight.’ <– don’t I have that on the stopped-page?

  • ‘“If you experienced tolerance, how many weeks did it take to develop?” should be days’ <– is ‘1 week’ common enough to switch to days?

  • ‘Might be worth adding emotional instability or moodiness as an option under side-effects.’ <– and aggressiveness, impatience, and irritability

  • clarify dosage and frequency for each -afinil

  • remove free-response entry on Gender because of abuse like ‘meat popsicle’

  • add a positivity constraint on this one to next survey: “How.much.does.your.usual.order.cost.”

  • add a <120 constraint on At.what.age.did.you.first.use.any..afinil. and Current.age; reduce lower bound to ~10 due to someone claiming they started at 14

  • add a <600 constraint on Body.weight; loosen lower constraint to allow >60kg

  • add a <24h constraint on Sleep.duration..on.an.average.night..how.many.hours.do.you.sleep.

  • add a <1,000 constraint on If.you.experienced.tolerance..how.many.weeks.did.it.take.to.develop. (modafinil has not been approved in the USA longer than that)

  • add a >=0 constraint on How.many.times.have.your.orders.not.arrived.for.any.reason.

  • How.did.you.hear.of.and.become.interested.in.modafinil.: add Gwern.net, Dave Asprey/Bulletproof, unquote Limitless, drugsforum, bluelight, SlateStarCodex, Tim Ferriss, Doctor, LessWrong, Hacker News, Joe Rogan, IRC, Quora, NeoGAF, boldanddetermined.com

  • remove commas from side-effects entry “Swelling of your face, lips, tongue, or throat”

  • add clarifying help text to attention test question

  • Country: add Netherlands, Singapore, Ireland, Thailand, India, Norway, Spain, Belgium, Hungary, Sweden, Malaysia, Mexico, Switzerland, Denmark, New Zealand, Philippines, Vietnam, China, Columbia, Czech Republic, Italy, Romania, South Korea, Argentina, Austria, Brazil, Croatia, Estonia, Hong Kong, Slovakia, South Africa

demographics: students vs professionals? what kind of -afinil gets higher ratings? does the original modafinil SNP replicate? if we take the nootropic grid’s scores, the placebo SNP data, and estimate a ‘placebo factor’, does this predict either tolerance or higher modafinil ratings? does tolerance fit with close together use of modafinil to skip sleep? half-lives etc what fraction of respondents report legal entanglements? rw <- function(x,a,b) { for(i in 1:length(a)) { x <- replace(x, x==a[i], b[i]); }; return(x) }

moda <- read.csv("https://gwern.net/doc/modafinil/survey/2015-10-27-modafinilsurvey.csv")
## duplicates found reading the feedback:
modaC <- moda[-c(110, 293, 396, 459, 776, 1018, 1510, 2429, 3883),]
## delete rows exactly duplicated aside from the first Timestamp column:
modaC <- modaC[!duplicated(modaC[,-1]),]
## clean the data using the trap questions and nonsense values like negative numbers of non-deliveries:
modaC <- modaC[moda$Test.Question.To.See.If.You.re.Paying.Attention!="No",]
modaC <- modaC[!grepl("beta-t-afinil", as.character(modaC$Which.of.these.have.you.ever.used.)),]
modaC <- modaC[modaC$Current.age.<120,]
modaC <- modaC[modaC$How.many.times.have.your.orders.not.arrived.for.any.reason.>=0,]
## total deleted:
nrow(moda) - nrow(modaC)
# [1] 124
modaC[modaC$Country=="The Netherlands" & !is.na(modaC$Country),]$Country <- "Netherlands"
## recode:
modaC[modaC==""] <- NA; modaC[modaC==" "] <- NA; modaC[modaC=="Not Available"] <- NA; modaC[modaC=="N/A"] <- NA

## useful summary variable:
modaC$Helpful.issues.N <- sapply(modaC$Have.you.found.it.helpful.for.any.of.the.following.issues., function(r) { if(!is.na(r)) { count <- 1; return(count + length(gregexpr(",", r)[[1]])); } else { return(0); }})
library(FSA)
Summarize(modaC$Gender)
#                              freq  perc
# 17                              0  0.00
# agender                         1  0.03
# Androgyne                       1  0.03
# Female                        345 11.19
# genderqueer                     1  0.03
# Homongulous                     0  0.00
# lol                             0  0.00
# Male                         2729 88.55
# Meat popsicle                   1  0.03
# Neutrois                        0  0.00
# Non-Binary                      1  0.03
# nonconforming                   1  0.03
# self-identified male penguin    1  0.03
# Transgender MTF                 1  0.03
# Total                        3082 99.98

## parsing the side-effects data to get an idea of problems
library(qdapTools)
sideeffects <- mtabulate(lapply(strsplit(sub("Swelling of your face, lips, tongue, or throat", "Swelling face/lips/tongue/throat", as.character(modaC$Have.you.experienced.any.significant.side.effects.)), ","), function(s) { tolower(sub(" $", "", sub("^ ", "", s))); }))
## convert everything to booleans
for (i in 1:ncol(sideeffects)) { sideeffects[,i] <- as.logical(sideeffects[,i]); }
## keep only side-effects with >2 entries, which filters out most of the custom ones
keep <- c()
for (i in 1:ncol(sideeffects)) { if (sum(sideeffects[,i], na.rm=TRUE) > 2) { keep <- c(keep, i); } }
sideeffectsSubset <- sideeffects[,keep]

longeffects <- stack(sideeffectsSubset)
agside <- aggregate(values ~ ind, sum, data=longeffects)
mp <- barplot(agside$values); text(mp,par("usr")[3],labels=agside$ind,srt=20,offset=1,adj=1,xpd=TRUE)
agside[order(agside$values, decreasing=TRUE),]
#                                         ind values
# 8                                 headaches   1062
# 17                             smelly urine   1053
# 10       insomnia/difficulty falling asleep    973
# 2  anxiety/hyperventilation/fast heart rate    637
# 21                              weight loss    342
# 16                           rash or itches    157
# 1                            abdominal pain    156
# 7              fever or cold or sore throat     99
# 18                        sores or blisters     52
# 19         swelling face/lips/tongue/throat     36
# 15                                     none     17
# 6                                 dry mouth     15
# 13                                   nausea     12
# 5                                  diarrhea     10
# 12                         loss of appetite      8
# 11                             irritability      5
# 3                               dehydration      4
# 9                       high blood pressure      4
# 4                                depression      3
# 14                                       no      3
# 20                                   thirst      3


# Placebo effect factor analysis:
#
# "How.effective.do.you.find.modafinil."  1-5
# "Would.you.say.that.Modafinil.has.changed.your.life." yes/no logical
# "You.use.modafinil.every.N.days."
# "How.many.months.have.you.been.using.modafinil."
# "What.dosage.do.you.usually.use.per.24.hours."
# "Some.users.report..tolerance..or.effects..wearing.off...how.much.have.you.experienced.this." 1-5
# "How.much.do.you.depend.on.modafinil.for.normal.alertness...functioning."
# Helpful.issues.N
# "Would.you.be.able.to.quit.cold.turkey.tomorrow." yes/no
# "How.many.times.have.you.purchased.modafinil."
# "How.much.does.your.usual.order.cost."
# "How.much.do.you.spend.annually.on..afinils."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Aniracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Adderall."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Bacopa."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Caffeine."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Coluracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Creatine."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Gingko."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Ginseng."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Melatonin."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...MCT.Oil."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Nicotine..gum..patch..lozenge..vaping.."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Noopept."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Oxiracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Phenylpiracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Piracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Pramiracetam."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Sulbutiamine."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Theanine."
# "How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Vitamin.D."
#
# "SNP.status.of.COMT.RS4680" factor: Levels:  "Met/Met (AA)" "Val/Met (AG)" "Val/Val (GG)"
# "SNP.status.of.COMT.RS4570625" factor: levels: "GG" "GT" "TT"
# "SNP.status.of.COMT.RS4633" factor: levels: "CC" "CT" "TT"

## Rs4680 GG>AG>AA
modaC$SNP.status.of.COMT.RS4680 <- factor(modaC$SNP.status.of.COMT.RS4680, c("Met/Met (AA)", "Val/Met (AG)", "Val/Val (GG)"), ordered=TRUE)
## Rs4570625 GG>GT>TT
modaC$SNP.status.of.COMT.RS4570625 <- factor(modaC$SNP.status.of.COMT.RS4570625, c("TT", "GT", "GG"), ordered=TRUE)
## Rs4633 CC<CT<TT
modaC$SNP.status.of.COMT.RS4633 <- factor(modaC$SNP.status.of.COMT.RS4633, c("CC", "CT", "TT"), ordered=TRUE)


library(psych)
library(GPArotation)
mfa <- subset(modaC, select=c(How.effective.do.you.find.modafinil., Helpful.issues.N, How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Aniracetam., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Adderall., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Bacopa., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Caffeine., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Gingko., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Ginseng., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Melatonin., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Nicotine..gum..patch..lozenge..vaping.., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Noopept., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Oxiracetam., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Phenylpiracetam., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Piracetam., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Pramiracetam., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Theanine., How.would.you.rate.the.effectiveness.of.other.nootropics.you.have.tried...Vitamin.D., SNP.status.of.COMT.RS4680, SNP.status.of.COMT.RS4570625, SNP.status.of.COMT.RS4633))
mfa$Would.you.say.that.Modafinil.has.changed.your.life. <- unlist(sapply(mfa$Would.you.say.that.Modafinil.has.changed.your.life., function(r) { if(!is.na(r)) { if(r=="Yes") { 1; } else { 0; } } else { NA; } } ))
for (colN in 3:17) { mfa[,colN] <- as.integer(substring(as.character(mfa[,colN]), 1, 1)); }
colnames(mfa) <- c("modafinil", "modafinil.issues", "Aniracetam", "Adderall", "Bacopa", "Caffeine", "Gingko", "Ginseng", "Melatonin", "Nicotine", "Noopept", "Oxiracetam", "Phenylpiracetam", "Piracetam", "Pramiracetam", "Theanine", "Vitamin.D", "RS4680", "RS4570625", "RS4633")
mfaI <- mi(mfa)



fa.parallel(mfa)
factorization <- fa(mfa, nfactors=9, missing=TRUE); factorization

modaC$MR1 <- factorization$scores

no loading of the g-factor on the modafinil responses...!

nfactors(mfa[,13:31])
factorization <- fa(mfa[,13:31], nfactors=1, missing=TRUE); factorization

summary(lm(I(How.effective.do.you.find.modafinil. + as.integer(Would.you.say.that.Modafinil.has.changed.your.life.) + Helpful.issues.N) ~ SNP.status.of.COMT.RS4680, data=modaC))
# Residuals:
#        Min         1Q     Median         3Q        Max
# -3.7159091 -1.6142857  0.2840909  1.3272727  5.3857143
#
# Coefficients:
#                                Estimate  Std. Error  t value Pr(>|t|)
# (Intercept)                  7.66764069  0.13420146 57.13530  < 2e-16
# SNP.status.of.COMT.RS4680.L -0.04132442  0.24501722 -0.16866  0.86623
# SNP.status.of.COMT.RS4680.Q -0.05911647  0.21915006 -0.26975  0.78761
#
# Residual standard error: 1.923034 on 210 degrees of freedom
#   (3622 observations deleted due to missingness)
# Multiple R-squared:  0.0005183721,    Adjusted R-squared:  -0.009000501
# F-statistic: 0.0544573 on 2 and 210 DF,  p-value: 0.9470123
summary(lm(I(How.effective.do.you.find.modafinil. + as.integer(Would.you.say.that.Modafinil.has.changed.your.life.) + Helpful.issues.N) ~ SNP.status.of.COMT.RS4680 + SNP.status.of.COMT.RS4570625 + SNP.status.of.COMT.RS4633, data=modaC))
# Residuals:
#        Min         1Q     Median         3Q        Max
# -3.9535936 -1.6172844  0.0464064  1.3827156  5.0464064
#
# Coefficients:
#                                   Estimate  Std. Error  t value Pr(>|t|)
# (Intercept)                     7.72268872  0.19132819 40.36357  < 2e-16
# SNP.status.of.COMT.RS4680.L    -0.12775491  0.42121973 -0.30330  0.76199
# SNP.status.of.COMT.RS4680.Q     0.45040660  0.48705793  0.92475  0.35625
# SNP.status.of.COMT.RS4570625.L -0.02293345  0.37926735 -0.06047  0.95185
# SNP.status.of.COMT.RS4570625.Q  0.28783591  0.28352042  1.01522  0.31126
# SNP.status.of.COMT.RS4633.L    -0.21861748  0.42769291 -0.51116  0.60982
# SNP.status.of.COMT.RS4633.Q    -0.60914914  0.48573612 -1.25407  0.21132
#
# Residual standard error: 1.909355 on 194 degrees of freedom
#   (3634 observations deleted due to missingness)
# Multiple R-squared:  0.01763532,  Adjusted R-squared:  -0.01274709
# F-statistic: 0.5804452 on 6 and 194 DF,  p-value: 0.745673


# tried to verify g-factor against https://slatestarcodex.com/2014/02/16/nootropics-survey-results-and-analysis/ but the missingness is so massive that the results are garbage

library(mi)
mfaI <- mi(mfa)
mfaI1 <- complete(mfaI, 1)

summary(pool(modafinil ~ as.integer(RS4680) + as.integer(RS4570625) + as.integer(RS4633), data=mfaI))

for (colN in 1:17) { mfaI1[,colN] <- as.integer(mfaI1[,colN]); }

---------------------------------------------------------------------------------------------------------------------------------------------------------

moda <- read.csv("https://gwern.net/doc/modafinil/2015-10-07-gwern-modafinilsurvey-raw-preliminary.csv")
## clean trap or invalid responses:
modaC <- moda[moda$Test.Question.To.See.If.You.re.Paying.Attention!="No",]
modaC <- modaC[!grepl("beta-t-afinil", as.character(modaC$Which.of.these.have.you.ever.used.)),]
modaC <- modaC[modaC$Current.age.<120,]
modaC <- modaC[modaC$How.many.times.have.your.orders.not.arrived.for.any.reason.>0,]
nrow(modaC)
# [1] 2957
summary(modaC$Highest.or.current.educational.level)
#                                              Associate's degree                      Bachelor's
#                               7                             277                            1159
#                     High school                         Masters                             PhD
#                             451                             340                             105
# Professional degree (MD/JD/etc.)                            NA's
#                             114                             504
summary(modaC$Work.Status)
#                                                                                                        For-profit work (private sector)
#                                                                                                                                     792
#                                                                                                                                 Student
#                                                                                                                                     772
#                                                                                                                           Self-employed
#                                                                                                                                     393
#                                                                                                                                Academic
#                                                                                                                                     103
#                                                                                                                         Government work
#                                                                                                                                      77
#                                                                                                                         Non-profit work
#                                                                                                                                      51
#                                                                                                                              Unemployed
#                                                                                                                                      49
#
#                                                                                                                                      28
#                                                                                                                   Independently wealthy
#                                                                                                                                      18
#                                                                                                                               Homemaker
#                                                                                                                                      16
#                                                                                                                                Military
#                                                                                                                                      13
#                                                                                                                                 retired
#                                                                                                                                       4
#                                                                                                                                Disabled
#                                                                                                                                       3
#                                                                                                                                Engineer
#                                                                                                                                       3
#                                                                                                                               full time
#                                                                                                                                       2
#                                                                                                                                  retail
#                                                                                                                                       2
#                                                                                                                                   Sales
#                                                                                                                                       2
#                                                                                                                      Software Developer
#                                                                                                                                       2
#                                                                                                                            Truck driver
#                                                                                                                                       2
#                                                                                                                             Accounting
#                                                                                                                                       1
#                                                                                                                                  Amazon
#                                                                                                                                       1
#                                                                                                                          Apprenticeship
#                                                                                                                                       1
#                                                                                                                                  artist
#                                                                                                                                       1
#                                                                                                                               Bartender
#                                                                                                                                       1
#                                                                                                         Both student and private sector
#                                                                                                                                       1
#                                                                                                                          Business owner
#                                                                                                                                       1
#                                                                                                                       Casual Retail Job
#                                                                                                                                       1
#                                                                                                   CEMS, continuous emissions monitoring
#                                                                                                                                       1
#                                                                                                                                    chef
#                                                                                                                                       1
#                                                                                                                                    Chef
#                                                                                                                                       1
#                                                                                                                          Chemical plant
#                                                                                                                                       1
#                                                                                                                          Communications
#                                                                                                                                       1
#                                                                                                                     Computer Programmer
#                                                                                                                                       1
#                                                                                                                       contracted artist
#                                                                                                                                       1
#                                                                                                                                    cook
#                                                                                                                                       1
#                                                                                                                                    Cook
#                                                                                                                                       1
#                                                                                                                                 Curator
#                                                                                                                                       1
#                                                                                                                                Designer
#                                                                                                                                       1
#                                                                                                                                Director
#                                                                                                                                       1
#                                                                                                                              Disability
#                                                                                                                                       1
#                                                                                                                                disabled
#                                                                                                                                       1
#                                                                                                                     disabled  SLE Lupus
#                                                                                                                                       1
#                                                                                                         Disabled waiting on SSI Hearing
#                                                                                                                                       1
#                                                                                                                             Dissability
#                                                                                                                                       1
#                                                                                                                      Doctoral Candidate
#                                                                                                                                       1
#                                                                                                                               Education
#                                                                                                                                       1
#                                                                                                                             Electrician
#                                                                                                                                       1
#                                                                                                                                Employed
#                                                                                                                                       1
#                                                                                                                Employed: Crane Operator
#                                                                                                                                       1
#                                                                                                                                engineer
#                                                                                                                                       1
#                                                                                                                            Enterpreneur
#                                                                                                                                       1
#                                                                                                                                    FIFO
#                                                                                                                                       1
#                                                                                                             For-profit work and student
#                                                                                                                                       1
#                                                                                                       Free Lance Engineering Contractor
#                                                                                                                                       1
#                                                                                                                      full time employed
#                                                                                                                                       1
#                                                                                                  Full Time Employee / Part Time Student
#                                                                                                                                       1
#                                                                                                                    full time employment
#                                                                                                                                       1
#                                                                                                                      full-time fireman
#                                                                                                                                       1
#                                                                                                           Full-time sales and education
#                                                                                                                                       1
#                                                                                                       Full time student + full time job
#                                                                                                                                       1
#                                                                                          Full-time Student + Part-time Fast Food Worker
#                                                                                                                                       1
#                                                                                           Full time work and full time student workload
#                                                                                                                                       1
#                                                                                                                                Gap Year
#                                                                                                                                       1
#                                                                                                                   Greenhouse management
#                                                                                                                                       1
#                                                                                                                  health and social care
#                                                                                                                                       1
#                                                                                                                                hospital
#                                                                                                                                       1
#                                                                                                                    Information Security
#                                                                                                                                       1
#                                                                                                                               Insurance
#                                                                                                                                       1
# Internship - becoming full time employment 1 week from now after leaving my previous employer of 9 years due to bad working conditions.
#                                                                                                                                       1
#                                                                                                                              IT Manager
#                                                                                                                                       1
#                                                                                                                         IT Professional
#                                                                                                                                       1
#                                                               I work full time in for profit work aswell as doing post grad In medicine
#                                                                                                                                       1
#                                                            I work two jobs. One where I am self-employed and one where I'm an employee.
#                                                                                                                                       1
#                                                                                                                                 Laborer
#                                                                                                                                       1
#                                                                                                                                  lawyer
#                                                                                                                                       1
#                                                                                                                               Line-Cook
#                                                                                                                                       1
#                                                                                                                   Locally owned company
#                                                                                                                                       1
#                                                                                                                           longshoreman
#                                                                                                                                       1
#                                                                                                                                 Manager
#                                                                                                                                       1
#                                                                                        Marketing/Sales/Management of a fitness facility
#                                                                                                                                       1
#                                                                                                                                Medical
#                                                                                                                                       1
#                                                                                                                        Network Engineer
#                                                                                                                                       1
#                                                                                                                                   Nurse
#                                                                                                                                       1
#                                                                                              owner/operator General contracting company
#                                                                                                                                       1
#                                                                                                                               Paramedic
#                                                                                                                                       1
#                                            Part time 3 days per week in public sector, sometimes freelance work on other 2 working days
#                                                                                                                                       1
#                                                                                                                         pharmaceuticals
#                                                                                                                                       1
#                                                                                                                                   pilot
#                                                                                                                                       1
#                                                                                                                       Prefer not to say
#                                                                                                                                       1
#                                                                                                                            professional
#                                                                                                                                       1
#                                                                                                                            Professional
#                                                                                                                                       1
#                                                                                                                  Professional/executive
#                                                                                                                                       1
#                                                                                                                     professional worker
#                                                                                                                                       1
#                                                                                                                              programmer
#                                                                                                                                       1
#                                                                                                 Recently graduated, awaiting employment
#                                                                                                                                       1
#                                                                                                                            Receptionist
#                                                                                                                                       1
#                                                                                                                             Researcher
#                                                                                                                                       1
#                                                                                                                        Resident doctor
#                                                                                                                                       1
#                                                                                                                                 (Other)
#                                                                                                                                      42
#                                                                                                                                    NA's
#                                                                                                                                     504
summary(modaC$Annual.income)
#       Min.    1st Qu.     Median       Mean    3rd Qu.       Max.       NA's
#       0.00   20000.00   45000.00   65187.35   80000.00 6000000.00        817
summary(modaC$Current.age.)
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA's
# 16.00000 23.00000 27.00000 29.58174 33.00000 81.00000      504
hist(modaC$Current.age., xlab="Age", main="2015 modafinil survey")

sort(table(toupper(sub("^ ", "", sub(" $", "", as.character(modaC$Country))))), decreasing=TRUE)
#             UNITED STATES                 AUSTRALIA            UNITED KINGDOM
#                      1730                       572                       350
#                    CANADA                    FRANCE                   GERMANY
#                        72                        38                        31
#               NETHERLANDS                 SINGAPORE                    POLAND
#                        25                        23                        11
#                   IRELAND                  THAILAND                     INDIA
#                        10                        10                         9
#                    NORWAY                     SPAIN                   BELGIUM
#                         9                         9                         8
#                   HUNGARY                    SWEDEN                  MALAYSIA
#                         8                         8                         7
#                    MEXICO               SWITZERLAND                   DENMARK
#                         7                         7                         6
#               NEW ZEALAND               PHILIPPINES                   VIETNAM
#                         6                         6                         6
#                     CHINA                  COLOMBIA            CZECH REPUBLIC
#                         5                         4                         4
#                   FINLAND                     ITALY                   ROMANIA
#                         4                         4                         4
#               SOUTH KOREA                 ARGENTINA                   AUSTRIA
#                         4                         3                         3
#                    BRAZIL                   CROATIA                   ESTONIA
#                         3                         3                         3
#                 HONG KONG                    ISRAEL                  SLOVAKIA
#                         3                         3                         3
#              SOUTH AFRICA        DOMINICAN REPUBLIC                 INDONESIA
#                         3                         2                         2
#                     JAPAN                    JORDAN                 LITHUANIA
#                         2                         2                         2
#                  PORTUGAL                    SERBIA                        SG
#                         2                         2                         2
#                   UKRAINE                    AFRICA                  BULGARIA
#                         2                         1                         1
#                     CHILE                    CYPRUS                   ECUADOR
#                         1                         1                         1
#               EL SALVADOR                        EU     EUROPE/RATHER NOT SAY
#                         1                         1                         1
#                   GRENADA                   ICELAND                   JAMAICA
#                         1                         1                         1
#                     KOREA                    KOSOVO                    LATVIA
#                         1                         1                         1
#                     MALTA               MIDDLE EAST                   MOLDOVA
#                         1                         1                         1
#                MOZAMBIQUE                        MY NOT ANSWERING FOR PRIVACY
#                         1                         1                         1
#                  PAKISTAN          PAPUA NEW GUINEA                    RUSSIA
#                         1                         1                         1
#                    RWANDA                SANDINAVIA               SCANDINAVIA
#                         1                         1                         1
#                     SWISS           THE NETHERLANDS       TRINIDAD AND TOBAGO
#                         1                         1                         1
#                    TURKEY                  VIET NAM
#                         1                         1

Summarize(modaC$Highest.or.current.educational.level)
#                                 freq   perc
# Associate's degree               338  10.94
# Bachelor's                      1497  48.46
# High school                      563  18.23
# Masters                          422  13.66
# PhD                              129   4.18
# Professional degree (MD/JD/etc.)  140   4.53
# Total                           3089 100.00
ibw <- aggregate(Annual.income ~ Work.Status, mean, data=modaC)
ibw[ibw$Work.Status=="Student",]
#    Work.Status Annual.income
# 134     Student   18767.01647
ibw[ibw$Work.Status=="For-profit work (private sector)",]
#                         Work.Status Annual.income
# 44 For-profit work (private sector)   83969.00852
ibw[ibw$Work.Status=="Self-employed",]
#       Work.Status Annual.income
# 124 Self-employed   91616.59615
ibw[ibw$Work.Status=="Academic",]
#   Work.Status Annual.income
# 1    Academic   54995.84821
ibw[ibw$Work.Status=="Government work",]
#        Work.Status Annual.income
# 59 Government work   67813.33793
ibw[ibw$Work.Status=="Non-profit work",]
#        Work.Status Annual.income
# 91 Non-profit work   77422.90909
ibw[ibw$Work.Status=="Unemployed",]
#     Work.Status Annual.income
# 152  Unemployed   19212.76596

summary(modaC$Race.ethnicity)
#                                      Asian (East Asian) Asian (Indian subcontinent)
#                          14                         217                          78
#                       Black                    Hispanic              Middle Eastern
#                          35                          98                          26
#                       Other        White (non-Hispanic)                        NA's
#                          92                        1893                         504
## note that this is highly biased by sampling from recent modafinil users (and hence recent modafinil sellers given turnover), and by the heavy promotion of this survey on ModafinilCat's mailing list:
library(qdapTools)
clearnetSellers <- mtabulate(lapply(strsplit(as.character(modaC$If.clearnet..which.of.the.following.have.you.ever.used.), ","), function(s) { tolower(sub(" $", "", sub("^ ", "", s))); }))
## convert everything to booleans
for (i in 1:ncol(clearnetSellers)) { clearnetSellers[,i] <- as.logical(clearnetSellers[,i]); }
## keep only side-effects with >=2 entries, which filters out most of the custom ones
keep <- c()
for (i in 1:ncol(clearnetSellers)) { if (sum(clearnetSellers[,i], na.rm=TRUE) >= 2) { keep <- c(keep, i); } }
clearnetSellersSubset <- clearnetSellers[,keep]
longclear <- stack(clearnetSellersSubset)
agclear <- aggregate(values ~ ind, sum, data=longclear)
agclear[order(agclear$values, decreasing=TRUE),]
#                            ind values
# 23                modafinilcat   1692
# 29                       modup    226
# 41                 powder city    108
# 17              medsforbitcoin    102
# 31         mymodafinil.com/net     95
# 7                   ceretropic     79
# 46                       rxrex     77
# 38                 onemedstore     71
# 49          sunmodalert.ru/com     56
# 53           united pharmacies     50
# 11                   edandmore     45
# 33         new star nootropics     45
# 37                     nubrain     29
# 26             modafinil store     27
# 52          thepharmacyexpress     26
# 25 modafinilnow/armodafinilnow     25
# 2                    airsealed     17
# 39              pharmacy geoff     17
# 18                medstore.biz     14
# 45                 rechem labs     14
# 47                   rxshop.md     14
# 1                4nrx pharmacy     12
# 9                  desiredmeds     12
# 4         biogenesis antiaging     11
# 15        good health pharmacy     11
# 43                         qhi     11
# 3                    aurapharm      7
# 22                     modafin      7
# 44                  quality-rx      6
# 5                   bmpharmacy      5
# 6                btcnootropics      5
# 8      cheapestonlinedrugstore      4
# 12               eurodrugstore      4
# 28                   modafresh      4
# 50            super drug saver      4
# 20                modadropship      3
# 21                  modafiendz      3
# 27                  modafizone      3
# 40                   pharmland      3
# 54             worldpharmacare      3
# 10              don't remember      2
# 13           expresspharmacyrx      2
# 14             getsmartnow.net      2
# 16                    liftmode      2
# 19                   modadeals      2
# 24               modafinillabs      2
# 30                 mymodafinil      2
# 32                     newmind      2
# 34            nootropics depot      2
# 35            nootropicsmexico      2
# 36           nootropics mexico      2
# 42            provigilshop.com      2
# 48            somatropinonline      2
# 51                  tabsmarket      2

## 240 may sound improbable, but the 240 orders guy says he uses 1000mg daily, and spends $2,800/annually at $240/order over the past 24 years (age 40-64),
## having bought from 'DesiredMeds, EdAndMore, ModUp, ModafinilCat, myModafinil.com/net'. so maybe he really has bought that many times. He leaves an interesting comment:
## > I would prefer to use the ordinary capsule type amphetamines that were available in the 1960's and 1970's that were available in the U.S.A.
summary(modaC$How.many.times.have.you.purchased.modafinil.)
#       Min.    1st Qu.     Median       Mean    3rd Qu.       Max.       NA's
#   1.000000   1.000000   2.000000   4.377049   4.000000 240.000000        517
## not sure I believe 20-nondeliveries guy though:
summary(modaC$How.many.times.have.your.orders.not.arrived.for.any.reason.)
#       Min.    1st Qu.     Median       Mean    3rd Qu.       Max.       NA's
#  0.0000000  0.0000000  0.0000000  0.1280065  0.0000000 20.0000000        504
with(modaC[!is.na(modaC$How.many.times.have.your.orders.not.arrived.for.any.reason.) & !is.na(modaC$How.many.times.have.you.purchased.modafinil.),], sum(How.many.times.have.your.orders.not.arrived.for.any.reason.) / sum(How.many.times.have.you.purchased.modafinil.))
# [1] 0.02640449438
summary(modaC$Do.you.use.any.drugs.recreationally..excluding.modafinil..alcohol...tobacco..)
#        No  Yes NA's
#   26 1263 1164  504
Summarize(modaC$Do.you.have.a.medical.prescription.for.modafinil.)
#       freq  perc
# No    2714  88.2
# Yes    363  11.8
# Total 3077 100.0
Summarize(modaC$Which.type.of..afinil.do.you.use.the.most.)
#             freq   perc
# adrafinil    114   3.69
# armodafinil  579  18.72
# modafinil   2400  77.59
# Total       3093 100.00
Summarize(modaC$Which.of.these.have.you.ever.used.)
#                                                              freq  perc
# adrafinil                                                      63  2.03
# adrafinil, hydrafinil                                           4  0.13
# adrafinil, hydrafinil, beta-t-afinil                            0  0.00
# armodafinil                                                   106  3.42
# armodafinil, adrafinil                                         17  0.55
# armodafinil, adrafinil, hydrafinil                              1  0.03
# armodafinil, adrafinil, hydrafinil, beta-t-afinil               0  0.00
# beta-t-afinil                                                   0  0.00
# hydrafinil                                                      2  0.06
# modafinil                                                    1573 50.74
# modafinil, adrafinil                                          197  6.35
# modafinil, adrafinil, hydrafinil                               12  0.39
# modafinil, armodafinil                                        853 27.52
# modafinil, armodafinil, adrafinil                             230  7.42
# modafinil, armodafinil, adrafinil, hydrafinil                  24  0.77
# modafinil, armodafinil, adrafinil, hydrafinil, beta-t-afinil    0  0.00
# modafinil, armodafinil, beta-t-afinil                           0  0.00
# modafinil, armodafinil, hydrafinil                             11  0.35
# modafinil, beta-t-afinil                                        0  0.00
# modafinil, hydrafinil                                           7  0.23
# Total                                                        3100 99.99
27.52  + 7.42 + 0.77 + 0.35
# [1] 36.06
36.06/0.78
# [1] 46.23076923
Summarize(modaC$In.general..do.you.find.brand.name..afinils.more.effective.than.generics.)
#                freq   perc
# NA/don't know  2015  65.21
# No              197   6.38
# The same/equal  643  20.81
# Yes             235   7.61
# Total          3090 100.01
100-65
# [1] 35
20.81/(100-65.21)
# [1] 0.5981603909
Summarize(as.factor(modaC$If.you.experienced.tolerance..how.many.weeks.did.it.take.to.develop.))
#       freq   perc
# 0      120   6.99
# 0.1      1   0.06
# 0.5      6   0.35
# 0.6      1   0.06
# 0.7      1   0.06
# 1      367  21.39
# 1.5      3   0.17
# 2      367  21.39
# 3      255  14.86
# 4      219  12.76
# 5       35   2.04
# 6       59   3.44
# 7       10   0.58
# 8       81   4.72
# 9        3   0.17
# 10      21   1.22
# 11       1   0.06
# 12      55   3.21
# ...
Summarize(as.factor(modaC$How.much.do.you.depend.on.modafinil.for.normal.alertness...functioning.))
#       freq   perc
# 1      898  29.15
# 2      860  27.91
# 3      847  27.49
# 4      372  12.07
# 5      104   3.38
# Total 3081 100.00
Summarize(as.factor(modaC$Would.you.be.able.to.quit.cold.turkey.tomorrow.))
#       freq   perc
# No     186   6.01
# Yes   2909  93.99
# Total 3095 100.00