Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- setwd("C:/Users/debom/Documents/_Stevens/S2020/BT 466/R")
- # Library imports
- library(car)
- library(data.table)
- library(stringr)
- library(multilevel)
- library(mediation)
- # Read input data
- data <- read.csv("CSM Posts.csv", stringsAsFactors=FALSE, header=TRUE)
- # Utiliity functions
- replace_all <- function(df, pattern, replacement) {
- char <- vapply(df, function(x) is.factor(x) || is.character(x), logical(1))
- df[char] <- lapply(df[char], str_replace_all, pattern, replacement)
- df
- }
- # Data cleaning / preparation
- data <- replace_all(data, ",", ".")
- username <- data$Username
- wc <- data$WC
- data <- data[,12:ncol(data)]
- data <- as.data.frame(sapply(data, as.numeric))
- data <- cbind(username, data)
- data <- cbind(wc, data)
- # Adding custom data points for use in regression analysis
- # Number of posts made (by user)
- num_posts <- as.numeric(ave(username, username, FUN = length))
- data <- cbind(num_posts, data)
- cleaned <- data.frame(
- affiliation=scale(data$affiliation),
- username=data$username,
- num_posts=scale(data$num_posts),
- family=scale(data$family),
- friend=scale(data$friend),
- wc=scale(data$wc),
- social=scale(data$social),
- drives=scale(data$drives),
- achieve=scale(data$achieve),
- power=scale(data$power),
- percept=scale(data$percept),
- reward=scale(data$reward),
- home=scale(data$home)
- )
- # Moderator
- social_drives <- cleaned$social * cleaned$drives
- moderator <-lm(affiliation ~ social + drives + social_drives, data=cleaned)
- summary(moderator)
- # Indirect effect is 0.184
- # Social is moderated by drives, low p-value -> significant
- # Mediator
- # Sobel arguments: (pred, med, out)
- mediator <- sobel(data$family, data$social, data$affiliation)
- mediator
- p_value_2_sided <- 2*pnorm(-abs(mediator$z.value))
- p_value_2_sided
- # Indirect Effect: 0.219
- # 2-Sided P-Value: 0 (significant?)
- # Family is mediated by social
- # Achievement is mediated by reward
- # Multiple Regression
- model <- lm(affiliation ~ . - username, data=cleaned)
- options(scipen=999)
- summary(model)
- # R^2: 58.92%
- # Moderated-Mediation
- # This doesn't work at all
- # Moderator: drives
- low.drives <- mean(data$drives)-sd(data$drives)
- high.drives <- mean(data$drives)+sd(data$drives)
- # Mediator: social
- Mod.Med.Model.1 <- lm(affiliation ~ drives * family, data=data)
- Mod.Med.Model.2 <- lm(affiliation ~ drives * family + social, data=data)
- Mod.Med.LowDrives <- mediate(Mod.Med.Model.1, Mod.Med.Model.2, covariates=list(drives=low.drives), boot = TRUE, boot.ci.type = "bca", sims = 10, treat="affiliation", mediator="social")
- summary(Mod.Med.LowDrives)
- Mod.Med.HighDrives <- mediate(Mod.Med.Model.1, Mod.Med.Model.2, covariates=list(drives=high.drives), boot = TRUE, boot.ci.type = "bca", sims = 10, treat="affiliation", mediator="social")
- summary(Mod.Med.HighDrives)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement