Is there a significant relationship between the cyber-aggression and the need to belong of the respondents?

This project aims to explore the cyber-aggression and the need to belong of FPS (first-person shooter) gamers. This data was collected among the college students of Polytechnic University of the Philippines in the year 2023. This was part of my undergraduate thesis (along with my other colleagues). This is a replication of the data analysis using R.


I. Loading the Packages and Importing the Data

library(tidyverse) #used in data manipulation
library(readr) #used in importing data
library(dplyr) #used data manipulation
library(likert) #used for likert visualization
library(psych) #used for reverse coding
data <- read_csv("catq_ntbs.csv")


II. Overview of the Data

Respondents

The data is collected from 363 college students of the Polytechnic University of the Philippines who play first-person shooter games.

Questionaires


Need to Belong Scale Developed by Leary (2013); A 10-item measurement with a 5-point scale that aims to measure individual differences in their desire to be accepted and to belong.
Cyber-Aggression Typology Questionnaire (CAT-Q) Developed by Kevin Runions (2016); Measures aggression in an online context. This questionnaire has (4) independent subscales of cyber aggression: impulsive-aversive, controlled-aversive, impulsive-appetitive, and controlled appetitive. This have a 4-point scale.

Dataset Columns

colnames(data)
##  [1] "Gaming Community Membership" "Sex"                        
##  [3] "Year level"                  "Hours Spent in FPS per Week"
##  [5] "CA1"                         "CA2"                        
##  [7] "CA3"                         "CA4"                        
##  [9] "CA5"                         "CA6"                        
## [11] "CA7"                         "CA8"                        
## [13] "CA9"                         "CA10"                       
## [15] "CA11"                        "CA12"                       
## [17] "CA13"                        "CA14"                       
## [19] "CA15"                        "CA16"                       
## [21] "CA17"                        "CA18"                       
## [23] "CA19"                        "CA20"                       
## [25] "CA21"                        "CA22"                       
## [27] "CA23"                        "CA24"                       
## [29] "CA25"                        "CA26"                       
## [31] "CA27"                        "CA28"                       
## [33] "CA29"                        "NTB1"                       
## [35] "NTB2"                        "NTB3"                       
## [37] "NTB4"                        "NTB5"                       
## [39] "NTB6"                        "NTB7"                       
## [41] "NTB8"                        "NTB9"                       
## [43] "NTB10"

Here, the columns may be observed. Columns 1-4 are the demographic data of the respondents, while the remaining columns are their answers to the questionnaires.

Columns with prefix “CA” corresponds to questions under Cyber-aggression Typology Questionnaire.

Columns with prefix “NTB” corresponds to questions under Need to Belong Questionnaire.

Preview of the Dataset

head(data)

Here, the first 6 rows may be observed. All rows have a character type. The values of all questionnaires are coded as their verbal interpretation. On the next sections, I will be recoding these with their numerical weights.


III. Preparing the Datasets

The Need to Belong Dataset

Assigning the Numerical Weight for Need to Belong

The Need to Belong Scale has 5-point scale with the interpretations as Strongly Disagree, Moderately Disagree, Neither Agree nor Disagree, Moderately Agree, and Strongly Agree.

ntb <- data %>%
  select (starts_with("NTB"))

ntb_numerical <- ntb %>%
  mutate(across(everything(),
    function(ntb_value)
      {case_when(
        ntb_value == "Strongly Disagree" ~ 1,
        ntb_value == "Moderately Disagree" ~ 2,
        ntb_value == "Neither Agree or Disagree" ~ 3,
        ntb_value == "Moderately Agree" ~ 4,
        ntb_value == "Strongly Agree" ~ 5
          )}))

Reverse Coding the Questions for NTB

Questions 1, 3 and 7 are reverse coded. Meaning, these items are scored in the opposite of what is being measure. Using the reverse.code() in the psych() package, I will process the columns for reverse coding.

ntb_reverse_coded <- reverse.code(
  keys = c(-1,1,-1,1,1,1,-1,1,1,1),
  item = ntb_numerical,
  mini = 1,
  max = 5)

Adding factor to the dataset

likert_ntb <- data.frame(ntb_reverse_coded)
likert_ntb[] <- lapply(likert_ntb, function(n) {
  factor(n, levels = 1:5, labels =c(
    "Strongly Disagree", 
    "Moderately Disagree", 
    "Neither Agree nor Disagree", 
    "Moderately Agree", 
    "Strongly Agree"
  ))
})

Renaming the column names for NTB

colnames(likert_ntb) <- c(
  "If other people don’t seem to accept me‚ I don’t let it bother me. (R)", #1
  "I try hard not to do things that will make other people avoid or reject me.", #2
  "I seldom worry about whether other people care about me. (R)", #3
  "I need to feel that there are people I can turn to in times of need.", #4
  "I want other people to accept me.", #5
  "I do not like being alone.", #6
  "Being apart from my friends for long periods of time does not bother me. (R)", #7
  "I have a strong 'need to belong.'", #8
  "It bothers me a great deal when I am not included in other people’s plans.", #9
  "My feelings are easily hurt when I feel that others do not accept me." #10
)


I will be doing the same steps to all the subsets of CATQ Questionnaire.

Subsetting the CATQ Columns

catq <- data %>%
  select(starts_with("CA"))

Assigning Numerical Values to CATQ

The Cyber-aggression Typology Questionnaire has a 4-point scale with the interpretations as Very Unlike Me, Somewhat Unlike Me, Somewhat Like Me, andVery Like Me.

catq_numerical <- catq %>%
  mutate(across(everything(),
  function(catq_value)
  {case_when(        
    catq_value == "Very Unlike Me" ~ 1,
    catq_value == "Somewhat Unlike Me" ~ 2,
    catq_value == "Somewhat Like Me" ~ 3,
    catq_value == "Very Like Me" ~ 4
  )}))

CATQ Subscales

I will be adding factor, renaming columns, and converting the dataframes into likert type across the 4 subscales of CATQ.

Impulsive Aversive Aggression (Rage)

#getting the subset
imp_ave_col <- c("CA1","CA5","CA8","CA10", "CA12", "CA15", "CA16", "CA18", "CA20", "CA22", "CA25", "CA27")
imp_ave <- catq_numerical[imp_ave_col]

#adding factor
imp_ave_likert <- data.frame(imp_ave)
imp_ave_likert[] <- lapply(imp_ave_likert, function(c){
  factor(c, levels = 1:4, labels = c(
    "Very Unlike Me",
    "Somewhat Unlike Me",
    "Somewhat Like Me",
    "Very Like Me"
  ))
})

#renaming the columns
colnames(imp_ave_likert) <- c(
  "If someone tries to hurt me, I will use an ICT device to immediately get back at them", #CA1
  "If I get teased or threatened, I get angry easily and strike back online right away", #CA5
  "I use ICT to get back at someone as soon as they post a hurtful message about me", #CA8
  "If someone makes me angry online I quickly post mean texts and messages online", #CA10
  "If someone makes fun of me on the internet, I get frustrated and respond angrily online right away", #CA12
  "I overreact before I have a chance to think about the consequences when someone says something mean online", #CA15
  "If I see a message online that gets me angry, I react too quickly and then regret the way I respond", #CA16
  "If someone tries to cyberbully me, I quickly lash back with something online", #CA18
  "If someone says something online to hurt me, I post something back right away to get back at them", #CA20
  "If somebody criticizes me online or in a text, I often react aggressively without thinking of the consequences", #CA22
  "I hastily respond to something written online and regret it later", #CA25
  "I respond very quickly to a message or post that is disrespectful to me" #CA27
)

#converting the data to likert
imp_ave_likert <- likert(imp_ave_likert)

Controlled Aversive Aggression (Revenge)

#getting the subset
cont_ave_col <- c("CA2", "CA6", "CA11", "CA21", "CA23", "CA26")
cont_ave <- catq_numerical[cont_ave_col]

#adding factor
cont_ave_likert <- data.frame(cont_ave)
cont_ave_likert[] <- lapply(cont_ave_likert, function(c){
  factor(c, levels = 1:4, labels = c(
    "Very Unlike Me",
    "Somewhat Unlike Me",
    "Somewhat Like Me",
    "Very Like Me"
  ))
})

#renaming the columns
colnames(cont_ave_likert) <- c(
  "If someone does something to hurt me, I would get back at them in my own time by using my ICT device(s)", #CA2
  "If someone tries to hurt me, I will use my ICT device(s) to get back at them in my own time", #CA6
  "I get back at people who make fun of me on the internet because their posts hurt more the more I think about them", #CA11
  "I like using my ICT device(s) to plan my revenge when I feel angry at someone", #CA21
  "If I need to get revenge on someone, I would rather strike back using my ICT device(s) where I can plan out how to do it", #CA23
  "If I see a mean message about me on my ICT, it bothers me more and more when I think about it, and I try to get even" #CA26
)

#converting the data tol ikert
cont_ave_likert <- likert(cont_ave_likert)

Controlled Appetitive Aggression (Reward)

#getting the subset
cont_app_col <- c("CA3", "CA7", "CA13", "CA17", "CA24", 'CA28')
cont_app <- catq_numerical[cont_app_col]

#adding factor
cont_app_likert <- data.frame(cont_app)
cont_app_likert[] <- lapply(cont_app_likert,function(c){
  factor(c, levels = 1:4, labels = c(
    "Very Unlike Me",
    "Somewhat Unlike Me",
    "Somewhat Like Me",
    "Very Like Me"
  ))
})


#renaming the columns
colnames(cont_app_likert) <- c(
  "If I don’t like someone, I use the internet to turn others against them", #CA3
  "Sometimes I’ll team up with my friends to bring someone down online", #CA7
  "Sometimes I can be mean to people online to get what I want", #CA13
  "When I don’t like a person, I use the internet to make them feel like they do not belong in my group", #CA17
  "I pretend to be someone else online to ruin somebody else’s friendships", #CA24
  "I have at times used the internet to make someone look bad" #CA28
)

#converting dataframe to likert
cont_app_likert <- likert (cont_app_likert)

Impulsive Appetitive Aggression (Recreation)

#getting the subset
imp_app_col <- c("CA4", "CA9", "CA14", "CA19", "CA29")
imp_app <- catq_numerical[imp_app_col]

#adding factor
imp_app_likert <- data.frame(imp_app)
imp_app_likert[] <- lapply(imp_app_likert, function(c){
  factor(c, levels = 1:4, labels = c(
    "Very Unlike Me",
    "Somewhat Unlike Me",
    "Somewhat Like Me",
    "Very Like Me"
  ))
})

#renaming
colnames(imp_app_likert) <- c(
  "I get carried away having fun online and others think I’m being a cyberbully or a troll", #CA4
  "I make fun of people I don’t know on the internet without thinking about whether they will see it or not", #CA9
  "If I’m having fun and joking online, I don’t care if someone’s feelings get hurt", #CA14
  "I repeatedly annoy people online because I think it’s funny", #CA19
  "Joking online is so much fun that I don’t worry about whether someone might be bothered by what I say" #CA29
)


#converting to likert
imp_app_likert <- likert(imp_app_likert)


IV. Likert Plots

The FPS Gamers’ Need to Belong

likert_ntb <- likert(likert_ntb)
plot(likert_ntb)

The plot above shows the reported need to belong of the FPS gamer respondents. It can be observed that the respondents have self-reported a low need to belong.

The FPS Gamers’ Impulsive Aversive Aggression

plot(imp_ave_likert)

The FPS Gamers’ Controlled Aversive Aggression

plot(cont_ave_likert)

The FPS Gamers’ Controlled Appetitive Aggression

plot(cont_app_likert)

The FPS Gamers’ Impulsive Appetitive Aggression

plot(imp_app_likert)

All the subscales of the cyber-aggression typology questionnaire shows similar plot, with respondents self-reporting low cyber-aggression.

V. Distribution Plots

total_ntb <- rowSums(ntb_numerical)

ntb_dist <- hist(total_ntb, breaks = 6,
                 main = "The Distribution of Respondents' Need to Belong Scores",
                 xlab = "Need to Belong Scores",
                 ylab = "Respondents")

total_catq <- rowSums(catq_numerical)

catq_dist <- hist(total_ntb, breaks = 6,
                 main = "The Distribution of Respondents' CATQ Scores",
                 xlab = "Cyber-aggression Scores",
                 ylab = "Respondents")


VI. Normalizing and Aggregating the Scores

Normalizing the datasets

Since the two datasets have different likert labels, I am normalizing the values as follows:

# Aggregate Scores
aggr_ntb <- apply(ntb_numerical, 1, mean)
aggr_imp_ave <- apply(imp_ave, 1, mean)
aggr_cont_ave <- apply(cont_ave, 1, mean)
aggr_cont_app <- apply(cont_app, 1, mean)
aggr_imp_app <- apply(imp_app, 1, mean)


VII. Correlation Testing

Correlation

ntb_imp_ave <- cor.test(aggr_ntb, aggr_imp_ave, method="spearman")
ntb_cont_ave <- cor.test(aggr_ntb, aggr_cont_ave, method = "spearman")
ntb_cont_app <- cor.test(aggr_ntb, aggr_cont_app, method = "spearman")
ntb_imp_app <- cor.test(aggr_ntb, aggr_imp_app, method = "spearman")

Correlation between Need to Belong and Impulsive Aggressive Behavior (Rage)

print(ntb_imp_ave)
## 
##  Spearman's rank correlation rho
## 
## data:  aggr_ntb and aggr_imp_ave
## S = 6346531, p-value = 0.0002705
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.1905885

Interpretation: There is a statistically significant (2.12 × 10−6) weak positive correlation (0.25) between the need to belong and impulsive aggressive behavior of the respondents.

Correlation between Need to Belong and Controlled Aversive Behavior (Revenge)

print(ntb_cont_ave)
## 
##  Spearman's rank correlation rho
## 
## data:  aggr_ntb and aggr_cont_ave
## S = 6423918, p-value = 0.0005602
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.1807189

Interpretation: There is a statistically significant (p = 7.728-06) weak positive correlation (r = 0.23) between the need to belong and controlled aversive behavior of the respondents.

Correlation between Need to Belong and Controlled Appetitive Behavior (Reward)

print(ntb_cont_app)
## 
##  Spearman's rank correlation rho
## 
## data:  aggr_ntb and aggr_cont_app
## S = 6516982, p-value = 0.001281
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.1688498

Interpretation: There is a statistically significant (p = 0.0001153) weak positive correlation (r = 0.20) between the need to belong and controlled appetitive behavior of the respondents.

Correlation between Need to Belong and Impulsive Appetitive Behavior (Recreation)

print(ntb_imp_app)
## 
##  Spearman's rank correlation rho
## 
## data:  aggr_ntb and aggr_imp_app
## S = 7016680, p-value = 0.04595
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.1051203

Interpretation: There is no significant correlation between the need to belong and impulsive appetitive behavior of the respondents.

VIII. Conclusion

The respondents’ need to belong shows a modest correlation with three subscales of cyber-aggression, with the exception of impulsive appetitive behavior (Recreation), which is not significantly related. This suggests that individuals with a higher need to belong may exhibit slightly higher levels of cyber-aggression in the three correlated subscales: Impulsive Aggressive (Rage), Controlled Aversive (Revenge), and Controlled Appetitive (Reward).