[The Spielberger State-Trait Anger Expression Inventory (STAXI),measures trait anger as having a proneness to experiencing anger either as a general tendency (Anger temperament), or with provocation (Anger Reactions) (Spielberger, 1988, Spielberger & Sydeman, 1994). The Trait Anger Scale in the STAXI test assesses how often angry feelings are experienced over time.It should be noted that a person’s Trait Anger Score is a measure of their disposition for frequent, intense, long-lasting anger as a relatively enduring and stable personality attribute. A person having a score of 10 - 14 has a low trait anger score; a person with a score of 15 to 21, a moderate trait anger score and a person with a score of 22 to 40, a high trait anger score.]
Item response data regarding verbal agression from 316( 243 females and 73 males) persons and 24 items. Participants were instructed to imagine four frustrating scenarios in which either another or oneself is to blame. For each scenario, they responded “yes”, “perhaps”, or “no” regarding whether they would react by cursing, scolding, and shouting. They also responded whether they would want to engage in those three behaviors, resulting in a total six items per scenario. An example item is, “A bus fails to stop for me. I would want to curse.” (Aggression: Verbal aggression data In edstan: Stan Models for Item Response Theory. (n.d.).)
This data set has 7579 observations across 9 variables.
urlfile<-"https://raw.githubusercontent.com/juanellemarks/R-Bridge-Final-Project/master/Verbal%20Agression.csv"
vAgressiondataset<-read.csv(urlfile)
summary(vAgressiondataset)
## X Anger Gender item resp
## } : 1 Min. :11 : 1 S1DoCurse : 316 : 1
## 1 : 1 1st Qu.:17 F:5832 S1DoScold : 316 no :3973
## 10 : 1 Median :19 M:1752 S1DoShout : 316 perhaps:2081
## 100 : 1 Mean :20 S1WantCurse: 316 yes :1530
## 1000 : 1 3rd Qu.:23 S1WantScold: 316
## 1001 : 1 Max. :39 S1WantShout: 316
## (Other):7579 NA's :1 (Other) :5689
## id btype situ mode r2
## Min. : 1.00 : 1 : 1 : 1 : 1
## 1st Qu.: 79.75 curse:2528 other:3792 do :3792 N:3973
## Median :158.50 scold:2528 self :3792 want:3792 Y:3611
## Mean :158.50 shout:2528
## 3rd Qu.:237.25
## Max. :316.00
## NA's :1
#summary(vAgressiondataset$Anger)
The average trait anger score of all participants in this test was 20.
require(data.table)
## Loading required package: data.table
newtable<-data.table(vAgressiondataset)
head(newtable, n= 6)
## X Anger Gender item resp id btype situ mode r2
## 1: 1 20 M S1WantCurse no 1 curse other want N
## 2: 2 11 M S1WantCurse no 2 curse other want N
## 3: 3 17 F S1WantCurse perhaps 3 curse other want Y
## 4: 4 21 F S1WantCurse perhaps 4 curse other want Y
## 5: 5 17 F S1WantCurse perhaps 5 curse other want Y
## 6: 6 21 F S1WantCurse yes 6 curse other want Y
Some columns that provided no useful information for me was removed from the data table.
newVagressiondataset = newtable[, !c("X", "btype", "mode", "situ", "r2"), with=FALSE]
#summary(newVagressiondataset)
head(newVagressiondataset, n=5)
## Anger Gender item resp id
## 1: 20 M S1WantCurse no 1
## 2: 11 M S1WantCurse no 2
## 3: 17 F S1WantCurse perhaps 3
## 4: 21 F S1WantCurse perhaps 4
## 5: 17 F S1WantCurse perhaps 5
Columns were renamed to enable easier readability.
names(newVagressiondataset)<-c("TA_Score","Sex", "Scenario", "Personresp", "Personid")
setkey(newVagressiondataset, Personid)
head(newVagressiondataset, n=8)
## TA_Score Sex Scenario Personresp Personid
## 1: NA NA
## 2: 20 M S1WantCurse no 1
## 3: 20 M S1WantScold no 1
## 4: 20 M S1WantShout no 1
## 5: 20 M S2WantCurse no 1
## 6: 20 M S2WantScold no 1
## 7: 20 M S2WantShout no 1
## 8: 20 M S3WantCurse no 1
These summaries were created to enable a better understanding of the the overall dataset. In order to answer my first question, i first sought to gain a summary of the data according to gender.
#create table to show all info about males
Malegroup= newVagressiondataset[Sex == "M"]
summary(Malegroup)
## TA_Score Sex Scenario Personresp Personid
## Min. :11.00 : 0 S1DoCurse : 73 : 0 Min. : 1.0
## 1st Qu.:16.00 F: 0 S1DoScold : 73 no :852 1st Qu.:124.0
## Median :19.00 M:1752 S1DoShout : 73 perhaps:501 Median :190.0
## Mean :19.84 S1WantCurse: 73 yes :399 Mean :176.6
## 3rd Qu.:22.00 S1WantScold: 73 3rd Qu.:228.0
## Max. :36.00 S1WantShout: 73 Max. :312.0
## (Other) :1314
boxplot(Malegroup$TA_Score, ylab="Score", main = "Trait Anger Scores in Male Participants")
#create table to show all info about females
Femalegroup= newVagressiondataset[Sex == "F"]
summary(Femalegroup)
## TA_Score Sex Scenario Personresp Personid
## Min. :11.00 : 0 S1DoCurse : 243 : 0 Min. : 3
## 1st Qu.:17.00 F:5832 S1DoScold : 243 no :3121 1st Qu.: 71
## Median :19.00 M: 0 S1DoShout : 243 perhaps:1580 Median :143
## Mean :20.05 S1WantCurse: 243 yes :1131 Mean :153
## 3rd Qu.:23.00 S1WantScold: 243 3rd Qu.:240
## Max. :39.00 S1WantShout: 243 Max. :316
## (Other) :4374
boxplot(Femalegroup$TA_Score, ylab="Score", main = "Trait Anger Scores in Female Participants")
The box plots show that both male and female participants had a median trait anger score of 19.The maximum TA score was from the female dataset. However, this score was an outlier. There was little variation between the Q2 and Q3 values of the male and female dataset. This could indicate that gender might not be a determining factor of a person’s TA score results. It also indicates that TA Scores might not necessarily be gender biased. However, it is possible that the massive difference between the number of males and females who participated in the test, affected this result.
Wantcurse= newVagressiondataset[Scenario == "S1WantCurse"]
summary(Wantcurse)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1WantCurse:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no : 91 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 95 Median :158.50
## Mean :20 S1DoScold : 0 yes :130 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantScold: 0 Max. :316.00
## (Other) : 0
#head(Wantcurse, n=3)
Wantshout<-newVagressiondataset[Scenario == "S1WantShout"]
summary(Wantshout)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1WantShout:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :154 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 99 Median :158.50
## Mean :20 S1DoScold : 0 yes : 63 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantshout, n=10)
Wantscold =newVagressiondataset[Scenario == "S1WantScold"]
summary(Wantscold)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1WantScold:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :126 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 86 Median :158.50
## Mean :20 S1DoScold : 0 yes :104 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Docurse =newVagressiondataset[Scenario == "S1DoCurse"]
summary(Docurse)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1DoCurse :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no : 91 1st Qu.: 79.75
## Median :19 M: 73 S1DoScold : 0 perhaps:108 Median :158.50
## Mean :20 S1DoShout : 0 yes :117 Mean :158.50
## 3rd Qu.:23 S1WantCurse: 0 3rd Qu.:237.25
## Max. :39 S1WantScold: 0 Max. :316.00
## (Other) : 0
Doshout =newVagressiondataset[Scenario == "S1DoShout"]
summary(Doshout)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1DoShout :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :208 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 68 Median :158.50
## Mean :20 S1DoScold : 0 yes : 40 Mean :158.50
## 3rd Qu.:23 S1WantCurse: 0 3rd Qu.:237.25
## Max. :39 S1WantScold: 0 Max. :316.00
## (Other) : 0
Doscold =newVagressiondataset[Scenario == "S1DoScold"]
summary(Doscold)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1DoScold :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :136 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 97 Median :158.50
## Mean :20 S1DoShout : 0 yes : 83 Mean :158.50
## 3rd Qu.:23 S1WantCurse: 0 3rd Qu.:237.25
## Max. :39 S1WantScold: 0 Max. :316.00
## (Other) : 0
Wantcurse2= newVagressiondataset[Scenario == "S2WantCurse"]
summary(Wantcurse2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S2WantCurse:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no : 67 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps:112 Median :158.50
## Mean :20 S1DoScold : 0 yes :137 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantcurse, n=3)
Wantshout2<-newVagressiondataset[Scenario == "S2WantShout"]
summary(Wantshout2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S2WantShout:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :158 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 84 Median :158.50
## Mean :20 S1DoScold : 0 yes : 74 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantshout, n=10)
Wantscold2 =newVagressiondataset[Scenario == "S2WantScold"]
summary(Wantscold2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S2WantScold:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :118 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 93 Median :158.50
## Mean :20 S1DoScold : 0 yes :105 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Docurse2 =newVagressiondataset[Scenario == "S2DoCurse"]
summary(Docurse2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S2DoCurse :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :109 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 97 Median :158.50
## Mean :20 S1DoScold : 0 yes :110 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Doshout2 =newVagressiondataset[Scenario == "S1DoShout"]
summary(Doshout2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S1DoShout :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :208 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 68 Median :158.50
## Mean :20 S1DoScold : 0 yes : 40 Mean :158.50
## 3rd Qu.:23 S1WantCurse: 0 3rd Qu.:237.25
## Max. :39 S1WantScold: 0 Max. :316.00
## (Other) : 0
Doscold2 =newVagressiondataset[Scenario == "S2DoScold"]
summary(Doscold2)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S2DoScold :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :162 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 92 Median :158.50
## Mean :20 S1DoScold : 0 yes : 62 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Wantcurse3= newVagressiondataset[Scenario == "S3WantCurse"]
summary(Wantcurse3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3WantCurse:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :128 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps:120 Median :158.50
## Mean :20 S1DoScold : 0 yes : 68 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantcurse3, n=3)
Wantshout3<-newVagressiondataset[Scenario == "S3WantShout"]
summary(Wantshout3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3WantShout:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :240 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 63 Median :158.50
## Mean :20 S1DoScold : 0 yes : 13 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantshout, n=10)
Wantscold3 =newVagressiondataset[Scenario == "S3WantScold"]
summary(Wantscold3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3WantScold:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :198 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 90 Median :158.50
## Mean :20 S1DoScold : 0 yes : 28 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Docurse3 =newVagressiondataset[Scenario == "S3DoCurse"]
summary(Docurse3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3DoCurse :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :171 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps:108 Median :158.50
## Mean :20 S1DoScold : 0 yes : 37 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Doshout3 =newVagressiondataset[Scenario == "S3DoShout"]
summary(Doshout3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3DoShout :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :287 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 25 Median :158.50
## Mean :20 S1DoScold : 0 yes : 4 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Doscold3 =newVagressiondataset[Scenario == "S3DoScold"]
summary(Doscold3)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S3DoScold :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :239 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 61 Median :158.50
## Mean :20 S1DoScold : 0 yes : 16 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Wantcurse4= newVagressiondataset[Scenario == "S4wantCurse"]
summary(Wantcurse4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4wantCurse:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no : 98 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps:127 Median :158.50
## Mean :20 S1DoScold : 0 yes : 91 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Wantshout4<-newVagressiondataset[Scenario == "S4WantShout"]
summary(Wantshout4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4WantShout:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :217 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 64 Median :158.50
## Mean :20 S1DoScold : 0 yes : 35 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
#head(Wantshout, n=10)
Wantscold4 =newVagressiondataset[Scenario == "S4WantScold"]
summary(Wantscold4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4WantScold:316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :179 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 88 Median :158.50
## Mean :20 S1DoScold : 0 yes : 49 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Docurse4 =newVagressiondataset[Scenario == "S4DoCurse"]
summary(Docurse4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4DoCurse :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :118 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps:117 Median :158.50
## Mean :20 S1DoScold : 0 yes : 81 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Doshout4 =newVagressiondataset[Scenario == "S4DoShout"]
summary(Doshout4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4DoShout :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :259 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 43 Median :158.50
## Mean :20 S1DoScold : 0 yes : 14 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Doscold4 =newVagressiondataset[Scenario == "S4DoScold"]
summary(Doscold4)
## TA_Score Sex Scenario Personresp Personid
## Min. :11 : 0 S4DoScold :316 : 0 Min. : 1.00
## 1st Qu.:17 F:243 : 0 no :181 1st Qu.: 79.75
## Median :19 M: 73 S1DoCurse : 0 perhaps: 91 Median :158.50
## Mean :20 S1DoScold : 0 yes : 44 Mean :158.50
## 3rd Qu.:23 S1DoShout : 0 3rd Qu.:237.25
## Max. :39 S1WantCurse: 0 Max. :316.00
## (Other) : 0
Vectors were created from the results of the responses summary above. A data table was then created using these vectors.
#Create vector
Trait<-c("WantCurse", "WantShout", "WantScold","DoCurse", "DoShout", "DoScold")
S1Yes<-c(130, 63,104,117,63, 104)
S1No<-c(91,154,126,91,154,126)
S1Perhaps<-c(95,99,86,108,99,86)
S2Yes<-c(137, 74,105,110,40, 62)
S2No<-c(67,158,118,109,208,162)
S2Perhaps<-c(112,84,93,97,68,92)
S3Yes<-c(68, 13,28,37,4,16)
S3No<-c(128,240,198,171,287,239)
S3Perhaps<-c(120,63,90,108,25,61)
S4Yes<-c(91, 35,49,81,14, 44)
S4No<-c(98,217,179,118,289,181)
S4Perhaps<-c(127,64,88,117,43,91)
#Create data table
dataCompare<- data.frame(Trait,S1Yes,S2Yes,S3Yes,S4Yes,S1No,S2No,S3No,S4No,S1Perhaps,S2Perhaps, S3Perhaps, S4Perhaps )
require(data.table)
compareTable<-data.table(dataCompare)
#summary(compareTable)
#head(compareTable, n=20)
Two pairs of responses from scenario one were randomly selected to test the correlation
library(ggplot2)
ggplot(compareTable, aes(x=S1Yes, y=S1No)) + geom_point()
ggplot(compareTable, aes(x=S1Perhaps, y=S1No)) + geom_point()
Both scatter plots indicated a weak non-linear form. In fact the second plot indicated no association. This could suggest that there might be no correlation between a person wanting to express anger and actually expressing anger in situation similar to the one described in scenario one of the test.
library(ggplot2)
ggplot(data=compareTable) + geom_histogram(bins=20, aes(x=S1Yes)) #+facet_wrap(~S1No)
library(ggplot2)
ggplot(data=compareTable) + geom_histogram(bins=20, aes(x=S1No))
One’s gender might not be the ideal factor for determining their TA Score. Also, there might likely not be a direct correlation between one wanting to express anger in a given situation and actually expressing such anger.