Characterization of Cannabis users and products and the experience of negative mental emotions following Cannabis use

Appendices

See below Appendices 1, 2. 3, 4, 5 and 6.

Appendix 1

R script for statistical analyses

#DAG

Library(dagitty).

#data for creating the DAG plot.

g1 <—dagitty( "dag ")

#creating the plot.

plot(graphLayout(g1)).

#Sets for adjustment based on the DAG.

print( adjustmentSets( g1, "age", "negative_mental_feeling",effect = "direct")).

#.

print( adjustmentSets( g1, "reason_provided", "negative_mental_feeling",effect = "direct")).

#.

print( adjustmentSets( g1, "product_type", "negative_mental_feeling",effect = "direct")).

#.

print( adjustmentSets( g1, "dominance", "negative_mental_feeling",effect = "direct")).

#.

#Primary analysis, random effects logistic regression.

Primary_analysis29Nov22_test2$age_cat = as.factor(Primary_analysis29Nov22_test2$age_cat).

Primary_analysis29Nov22_test2$dominance = as.factor(Primary_analysis29Nov22_test2$dominance).

Primary_analysis29Nov22_test2$gender_simple = as.factor(Primary_analysis29Nov22_test2$gender_simple).

Primary_analysis29Nov22_test2$experience = as.factor(Primary_analysis29Nov22_test2$experience).

Primary_analysis29Nov22_test2$product_type = as.factor(Primary_analysis29Nov22_test2$product_type).

Primary_analysis29Nov22_test2$dominance = as.factor(Primary_analysis29Nov22_test2$dominance).

#Example of regression for age. Similar regressions were calculated to other variables.

m_outcome3 <—glmmTMB(outcome_1_exist ~ age_cat + gender_simple + experience + product_type + dominance + Pain_group + Mental_group + (1 | user), data = Primary_analysis29Nov22_test2, family = binomial).

summary(m_outcome3).

A3 <- confint(m_outcome3)

A3

exp(A3).

Anottry < -tidyr::tibble(exp(A3)).

write.csv(Anottry,file = "OR_all29Nov22.csv").

#Age:

p = ggplot(data = NewAge,

aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Age") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.25, 0.5,1,2,4),position = "left",limits = c(0.12,8.5)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

#Gender–- graph:

new_gender$Index <—factor(new_gender$Index, levels = c("males","females","other genders")).

p = ggplot(data = new_gender, aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Gender") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.33, 1,3),position = "left",limits = c(0.25,4)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

#Experience -graph:

New_experience$Index < -factor(New_experience$Index, levels = c("Experts","lot of experience","little experience","beginner")).

p = ggplot(data = New_experience,

aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Experience in Cannabis use") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.6, 0.8, 1.25, 1.8),position = "left",limits = c(0.4,2.5)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

#Reason provided–- graph.

New_indications$Index <—factor(New_indications$Index, levels = c("Other reasons","Pain","Mental")).

p = ggplot(data = New_indications,

aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Reason provided") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.8, 1.25),position = "left",limits = c(0.6,1.8)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

# composition–- graph:

p = ggplot(data = New_Composition,

aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Product composition") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.6, 0.8, 1.25, 1.8),position = "left",limits = c(0.4,2.5)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

# products.

new_products$Index <—factor(new_products$Index, levels = c("flowers","concentrates","tinctures","edible products","pills")).

p = ggplot(data = new_products,

aes(x = Index,y = Estimate, ymin = LCI, ymax = UCI)) + geom_pointrange(aes(col = Index), show.legend = FALSE, fatten = 14) + xlab("Type of product") + ylab(("Odds ratios (95% Confidence Interval)")).

p + coord_flip() + 

scale_y_log10(breaks = c(0.6, 0.8, 1.25, 1.8),position = "left",limits = c(0.4,2.5)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed",

color = "black", size = 0.5).

p + coord_flip() + 

scale_y_log10(breaks = c(0.6, 0.8, 1.25, 1.8),position = "left",limits = c(0.5,2)) + 

guides(col = guide_legend(reverse = TRUE)) + theme(plot.title = element_text(size = 12,face = "bold"),

axis.text.y = element_text(size = 10, face = "bold", vjust = 0.3),

axis.ticks.y = element_blank(),

axis.text.x = element_text(face = "bold"),

axis.title = element_text(size = 14,face = "bold"),

strip.text.y = element_text(hjust = 0,vjust = 1,angle = 180,face = "bold")) + geom_hline(yintercept = 1, linetype = "dashed", color = "black", size = 0.5).

glm(symptom_difference ~  ~ age_cat + 

gender_simple + gender_simple_other + experience_little + 

experience_beginner + experience_lot + 

product_type_concentrate + product_type_edible + product_type_pill + 

product_type_tincture + dominance_T + dominance_C + Pain_group + 

Mental_group + (1 | user), data = all_groupsNov)).

##interaction age-gender – only Females vs males since not enough power for anayalsis with nonbinary.

maleFemale <—subset(Primary_analysis29Nov22_test2, gender_simple ! = 2).

m_outcome3MF <—glmmTMB(outcome_1_exist ~ age_cat + gender_simple + experience + product_type + dominance + Pain_group + Mental_group + (1 | user) + gender_simple*age_cat, data = maleFemale, family = binomial).

summary(m_outcome3MF).

Appendix 2

List of cannabis-related events and reasons provided in the app for cannabis use.

The list of cannabis-related events includes all experiences and emotions listed in the app, and comprises of the case group and control group as follows: List of negative mental emotions included in the study (“case” group): anxious, confused, distracted, irritable, paranoid, scattered, restless.

List of emotions included in the study (“control” group): Active, Chill, Clear, Clumsy, Comfy, Couchlocked, Coughing, Creative, Dizzy, Dreamy, Dry Mouth, Energetic, Focused, Foggy, Forgetful, Frisky, Grateful, Great, Happy, Headache, High, Hungry, Light, Nausea, Optimistic, Peaceful, Productive, Rapid Pulse, Red Eyes, Reflective, Relaxed, Silly, Sleepy, Talkative, Thinky, Thirsty, Tingly, Tuned, Unmotivated, Visuals.

Appendix 3

Directed acyclic graph (DAG) describing the relationship between studied variables and potential confounders in the study.

Appendix 4

The list of the reasons provided in the app for cannabis use comprise of mental reasons, pain reasons and other reasons.

Mental reasons: Mental reasons provided for cannabis use include the following: Anxiety, Depression, Stress, Wellness,Fatigue,Agitation / Irritability, Insomnia, Hard to Focus Thoughts,Mood Swings, Restlessness, Hyperactivity, Aggression, Disassociation, Impulse,Oppositional Behaviors,Self Injurious Behaviors,Self Stimulatory Repetitive Behaviors,Language Difficulty.

Types of pain include in the reason provided for cannabis use include the following: Pain—Back, Pain—Headache, Pain—Joint, Pain—Muscle, Pain – Gastrointestinal, Pain – Nerve, Pain – Arm or Leg, Pain – Migraine, Pain – Abdominal, Pain – Cramping, Pain – Menstrual, Pain—Other.

Others: Constipation, Convulsions, Dizziness, Excessive Appetite, Eye Pressure, Hot Flashes, Inflammation, Joint Stiffness, Loss of Appetite, Low Libido, Muscle Spasms, Nausea, Numbness / Tingling, Other, Tinnitus, Tremors, Withdrawal—Alcohol, Withdrawal—Benzo, Withdrawal—Nicotine, Withdrawal—Opiate, Withdrawal—Other.

Appendix 5

Explanation about the differences between the differences between the primary and secondary flow charts The secondary analysis required ranking of the symptom relief which was not available for all sessions as some participants did not report the severity before and after the use of cannabis. This led to a smaller initial pool of sessions: 75,557 sessions in the primary analysis compared to 65,553 sessions in the secondary analysis with full data (about 13% difference). However, the terms for duplicates exclusion were more restrictive in the secondary analysis as we also added the covariate of reported symptom releaf to the analysis, leading to the requirement for identical values in the following variables for exclusion: user’s ID, date of use, reason for use, and reported symptom relief. In the primary analysis, the requirement for identical values included only the first three abovementioned variables, i.e. user’s ID, date of use, and reason for use, leading to more duplicates exclusion.

Appendix 6

No interactions were found between age and gender for reporting negative mental emotions.

Categories for interaction

p-value

Age 30–40 years*gender

0.75297

Age 40–50 years*gender

0.68572

Age 50–60 years*gender

0.59642

Age 60–70 years*gender

0.4345

Age 70–90 years*gender

0.87712

Comments (0)

No login
gif
Back To Top