Data Prep

Load Libraries

# if you haven't run this code before, you'll need to download the below packages first
# instructions on how to do this are included in the video
# but as a reminder, you use the packages tab to the right

library(psych) # for the describe() command
library(naniar) # for the gg_miss-upset() command
library(expss) # for the cross_cases() command
## Loading required package: maditr
## 
## To select rows from data: rows(mtcars, am==0)
## 
## Attaching package: 'expss'
## The following object is masked from 'package:naniar':
## 
##     is_na

Import Data

# for the lab, you'll import the CSV file you downloaded along with the current file we're working in (an RMD file)
# for the homework, you'll download the CSV file from your chosen README page (should be titled arc_data_final.csv or eammi2_data_final.csv)
df <- read.csv(file="eammi2_data_final-2.csv",header=T)

Viewing Data

# these are commands useful for viewing a dataframe
# you can also click the object in the environment tab to view it in a new window
names(df)
##  [1] "ResponseId"       "gender"           "race_rc"          "age"             
##  [5] "income"           "edu"              "sibling"          "party_rc"        
##  [9] "disability"       "marriage5"        "phys_sym"         "pipwd"           
## [13] "moa_independence" "moa_role"         "moa_safety"       "moa_maturity"    
## [17] "idea"             "swb"              "mindful"          "belong"          
## [21] "efficacy"         "support"          "socmeduse"        "usdream"         
## [25] "npi"              "exploit"          "stress"
head(df)
##          ResponseId gender race_rc                 age         income
## 1 R_BJN3bQqi1zUMid3      f   white 1 between 18 and 25          1 low
## 2 R_2TGbiBXmAtxywsD      m   white 1 between 18 and 25          1 low
## 3 R_12G7bIqN2wB2N65      m   white 1 between 18 and 25 rather not say
## 4 R_39pldNoon8CePfP      f   other 1 between 18 and 25 rather not say
## 5 R_1QiKb2LdJo1Bhvv      m   white 1 between 18 and 25       2 middle
## 6 R_pmwDTZyCyCycXwB      f   white 1 between 18 and 25 rather not say
##                            edu              sibling    party_rc  disability
## 1       2 Currently in college at least one sibling    democrat        <NA>
## 2 5 Completed Bachelors Degree at least one sibling independent        <NA>
## 3       2 Currently in college at least one sibling  apolitical psychiatric
## 4       2 Currently in college at least one sibling  apolitical        <NA>
## 5       2 Currently in college at least one sibling  apolitical        <NA>
## 6       2 Currently in college at least one sibling  apolitical        <NA>
##                                 marriage5                phys_sym    pipwd
## 1 are currently divorced from one another high number of symptoms       NA
## 2    are currently married to one another high number of symptoms       NA
## 3    are currently married to one another high number of symptoms 2.333333
## 4    are currently married to one another high number of symptoms       NA
## 5    are currently married to one another  low number of symptoms       NA
## 6    are currently married to one another high number of symptoms       NA
##   moa_independence moa_role moa_safety moa_maturity  idea      swb mindful
## 1         3.666667 3.000000       2.75     3.666667 3.750 4.333333     2.4
## 2         3.666667 2.666667       3.25     3.333333 3.875 4.166667     1.8
## 3         3.500000 2.500000       3.00     3.666667 3.750 1.833333     2.2
## 4         3.000000 2.000000       1.25     3.000000 3.750 5.166667     2.2
## 5         3.833333 2.666667       2.25     3.666667 3.500 3.666667     3.2
## 6         3.500000 3.333333       2.50     4.000000 3.250 4.000000     3.4
##   belong efficacy  support socmeduse
## 1    2.8      3.4 6.000000        47
## 2    4.2      3.4 6.750000        23
## 3    3.6      2.2 5.166667        34
## 4    4.0      2.8 5.583333        35
## 5    3.4      3.0 6.000000        37
## 6    4.2      2.4 4.500000        13
##                                                           usdream        npi
## 1               american dream is important and achievable for me 0.69230769
## 2               american dream is important and achievable for me 0.15384615
## 3 american dream is not important and maybe not achievable for me 0.07692308
## 4 american dream is not important and maybe not achievable for me 0.07692308
## 5                            not sure if american dream important 0.76923077
## 6 american dream is not important and maybe not achievable for me 0.23076923
##    exploit stress
## 1 2.000000    3.3
## 2 3.666667    3.3
## 3 4.333333    4.0
## 4 1.666667    3.2
## 5 4.000000    3.1
## 6 1.333333    3.5
str(df)
## 'data.frame':    3182 obs. of  27 variables:
##  $ ResponseId      : chr  "R_BJN3bQqi1zUMid3" "R_2TGbiBXmAtxywsD" "R_12G7bIqN2wB2N65" "R_39pldNoon8CePfP" ...
##  $ gender          : chr  "f" "m" "m" "f" ...
##  $ race_rc         : chr  "white" "white" "white" "other" ...
##  $ age             : chr  "1 between 18 and 25" "1 between 18 and 25" "1 between 18 and 25" "1 between 18 and 25" ...
##  $ income          : chr  "1 low" "1 low" "rather not say" "rather not say" ...
##  $ edu             : chr  "2 Currently in college" "5 Completed Bachelors Degree" "2 Currently in college" "2 Currently in college" ...
##  $ sibling         : chr  "at least one sibling" "at least one sibling" "at least one sibling" "at least one sibling" ...
##  $ party_rc        : chr  "democrat" "independent" "apolitical" "apolitical" ...
##  $ disability      : chr  NA NA "psychiatric" NA ...
##  $ marriage5       : chr  "are currently divorced from one another" "are currently married to one another" "are currently married to one another" "are currently married to one another" ...
##  $ phys_sym        : chr  "high number of symptoms" "high number of symptoms" "high number of symptoms" "high number of symptoms" ...
##  $ pipwd           : num  NA NA 2.33 NA NA ...
##  $ moa_independence: num  3.67 3.67 3.5 3 3.83 ...
##  $ moa_role        : num  3 2.67 2.5 2 2.67 ...
##  $ moa_safety      : num  2.75 3.25 3 1.25 2.25 2.5 4 3.25 2.75 3.5 ...
##  $ moa_maturity    : num  3.67 3.33 3.67 3 3.67 ...
##  $ idea            : num  3.75 3.88 3.75 3.75 3.5 ...
##  $ swb             : num  4.33 4.17 1.83 5.17 3.67 ...
##  $ mindful         : num  2.4 1.8 2.2 2.2 3.2 ...
##  $ belong          : num  2.8 4.2 3.6 4 3.4 4.2 3.9 3.6 2.9 2.5 ...
##  $ efficacy        : num  3.4 3.4 2.2 2.8 3 2.4 2.3 3 3 3.7 ...
##  $ support         : num  6 6.75 5.17 5.58 6 ...
##  $ socmeduse       : int  47 23 34 35 37 13 37 43 37 29 ...
##  $ usdream         : chr  "american dream is important and achievable for me" "american dream is important and achievable for me" "american dream is not important and maybe not achievable for me" "american dream is not important and maybe not achievable for me" ...
##  $ npi             : num  0.6923 0.1538 0.0769 0.0769 0.7692 ...
##  $ exploit         : num  2 3.67 4.33 1.67 4 ...
##  $ stress          : num  3.3 3.3 4 3.2 3.1 3.5 3.3 2.4 2.9 2.7 ...

Subsetting Data

# for the HW: use the codebook you created in the codebook activity to get the names of your variables (first column)
# enter this list of names in the select=c() argument to subset those columns from the dataframe
# variables for the lab: id, variable2, variable3, variable5, variable8, variable10, variable11
d <- subset(df, select=c(gender, marriage5, support, belong, moa_role, moa_maturity ))
#put in choose variables for HW, I will list my variables here- very important!! 
# subsetting something and putting it in d, df is the data frame you are taking from and select tells it where the variables will be 
#creates a new data frame for u called d which is now on the right side window 

Recoding Variables

# categorical variables need to be recoded as factors
# the content of the variable will stay the same, but R will treat the variable differently at times
d$gender <- as.factor(d$gender)
d$marriage5 <- as.factor(d$marriage5)

#grab d make it a factor and put it back in the variable 2, 
str(d)
## 'data.frame':    3182 obs. of  6 variables:
##  $ gender      : Factor w/ 3 levels "f","m","nb": 1 2 2 1 2 1 1 1 1 1 ...
##  $ marriage5   : Factor w/ 4 levels "are currently divorced from one another",..: 1 2 2 2 2 2 2 2 2 3 ...
##  $ support     : num  6 6.75 5.17 5.58 6 ...
##  $ belong      : num  2.8 4.2 3.6 4 3.4 4.2 3.9 3.6 2.9 2.5 ...
##  $ moa_role    : num  3 2.67 2.5 2 2.67 ...
##  $ moa_maturity: num  3.67 3.33 3.67 3 3.67 ...
#checking if they are both factors, will say Factor 

Missing Data

We looked at the missing data in our data set and found that about 4% of participants in a our sample skipped at least one item. We dropped these participants from our analysis, which is not advisable and runs the risk of dropping vulnerable groups or skewing results. However, we will proceed for the sake of this class using the reduced data set. After removed the cases/participants with missing data, our total sample size is 3075. I do not see any potentially significant patterns in the missing data.

# use the gg_miss_upset() command for a visualization of your missing data
#creates missingness plot 
gg_miss_upset(d[-1], nsets = 6)

# use the na.omit() command to create a new dataframe in which any participants with missing data are dropped from the dataframe 
#dropping participants from the dataset and putting them in a new dataframe (d2)
d2 <- na.omit(d)
3075/3182
## [1] 0.9663734

Exporting Data

# last step is to export the data after you've dropped NAs
# for the HW, the file you're exporting here is what you'll use for all future HW assignments (labs will use the files I provide you)
# make sure you give it a name that is memorable!
# and make sure you save it to your Data folder!
#look at specified data sett, give it a new shorter name 
write.csv(d2, file="data/eammi2_finalREAL.csv", row.names = F)

# since we've created a cleaned dataframe in d2, we'll use that for the rest of the lab/HW

Basic Statistics

Univariate Plots: Histograms & Tables

table(d2$gender)
## 
##    f    m   nb 
## 2252  770   53
table(d2$marriage5)
## 
##             are currently divorced from one another 
##                                                 712 
##                are currently married to one another 
##                                                2084 
##       never married each other and are not together 
##                                                 235 
## never married each other but are currently together 
##                                                  44
#put in your first two catagorical variables

hist(d2$support)

hist(d2$belong)

hist(d2$moa_role)

hist(d2$moa_maturity)

#list in your continuous variables 
#stuff will come up in plots 

Univariate Normality

we analysized the skew and kurtosis of our continuous variables and all were within the accpeted range (-2/+2). we analyzed the skew and kurtosis of our variables (gender,marriage5, support,belong, mua_role, moa_maturity) and all were within the accepted range and they all meet the criteria for univariate normality. If any of the variables (ender,marriage5, support,belong, mua_role, moa_maturity) were outside of this we would have used them anyways, but outside of this class this is bad practice.

describe(d2)
##              vars    n mean   sd median trimmed  mad min max range  skew
## gender*         1 3075 1.28 0.49   1.00    1.21 0.00 1.0   3   2.0  1.39
## marriage5*      2 3075 1.87 0.59   2.00    1.84 0.00 1.0   4   3.0  0.45
## support         3 3075 5.54 1.13   5.75    5.66 0.99 0.0   7   7.0 -1.11
## belong          4 3075 3.23 0.61   3.30    3.25 0.59 1.3   5   3.7 -0.27
## moa_role        5 3075 2.97 0.72   3.00    3.00 0.74 1.0   4   3.0 -0.33
## moa_maturity    6 3075 3.59 0.43   3.67    3.65 0.49 1.0   4   3.0 -1.20
##              kurtosis   se
## gender*          0.87 0.01
## marriage5*       1.51 0.01
## support          1.48 0.02
## belong          -0.13 0.01
## moa_role        -0.85 0.01
## moa_maturity     1.89 0.01
#will create an output and will give skew and kurtosis to see if between 2 and -2 to chedck 

Bivariate Plots

Crosstabs

#cross_cases(d2, CATEGORICAL, CATEGORICAL)
cross_cases(d2, gender, marriage5)
 marriage5 
 are currently divorced from one another   are currently married to one another   never married each other and are not together   never married each other but are currently together 
 gender 
   f  529 1518 173 32
   m  170 532 56 12
   nb  13 34 6
   #Total cases  712 2084 235 44
#just need to write variable name 

Scatterplots

#plot(d2$CONTINUOUS, d2$CONTINUOUS,
#     main="Scatterplot of X and Y",
#     xlab = "X",
 #    ylab = "Y")
#xlab is just title for x axis and same for ylab
#only need to make two so just pick two interestant vairbales that may be corrolates 
#makes a beautiful graph 
#can do any combination of continuous variables 
plot(d2$support, d2$moa_maturity,
     main="Scatterplot of support and mua_maturity",
     xlab = "support",
     ylab = "moa_maturity")

plot(d2$belong, d2$moa_role,
     main="Scatterplot of belong and moa_role",
     xlab = "belong",
     ylab = "moa_role")

Boxplots

little tricky,need to specify variables in right locations, can show differences between groups, need to make two box plots for hw

#boxplot(data=d2, CONTINUOUS~CATEGORICAL,
#        main="Boxplot of X and Y",       xlab = "x (Categorical)",
#        ylab = "Y (Continuous)")
#means we want to look in catorgical aross continous 
#categorical is x axis 

boxplot(data=d2, gender~support,
        main="Boxplot of gender and support",
        xlab = "X (gender)",
        ylab = "Y (support)")

boxplot(data=d2, marriage5~moa_maturity,
        main="Boxplot of marriage5 and moa_maturity",
        xlab = "x (marriage5)",
        ylab = "Y (moa_maturity)")