options(repos = c(CRAN = "https://cloud.r-project.org"))
#Packages to install  
install.packages("pastecs") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'pastecs' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("lm.beta")  
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'lm.beta' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("QuantPsyc") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'QuantPsyc' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("interactions") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'interactions' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("jtools") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'jtools' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("multilevel") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'multilevel' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
install.packages("boot") 
## Installing package into 'C:/Users/chris/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'boot' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\chris\AppData\Local\Temp\RtmpABBH6c\downloaded_packages
library(pastecs) 
## Warning: package 'pastecs' was built under R version 4.5.2
library(lm.beta) 
## Warning: package 'lm.beta' was built under R version 4.5.2
library(QuantPsyc) 
## Warning: package 'QuantPsyc' was built under R version 4.5.2
## Loading required package: boot
## Warning: package 'boot' was built under R version 4.5.2
## Loading required package: dplyr
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:pastecs':
## 
##     first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Loading required package: purrr
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## Attaching package: 'QuantPsyc'
## The following object is masked from 'package:lm.beta':
## 
##     lm.beta
## The following object is masked from 'package:base':
## 
##     norm
library(interactions) 
## Warning: package 'interactions' was built under R version 4.5.2
library(jtools) 
## Warning: package 'jtools' was built under R version 4.5.2
library(multilevel) 
## Warning: package 'multilevel' was built under R version 4.5.2
## Loading required package: nlme
## 
## Attaching package: 'nlme'
## The following object is masked from 'package:dplyr':
## 
##     collapse
library(boot) 
#Import Data 
# Read the CSV into an object called Data
Data <- read.csv("C:\\Users\\chris\\Documents\\Human Resources Data final.csv")
attach(Data) 
names(Data) 
##  [1] "satisfaction_level"    "last_evaluation"       "number_project"       
##  [4] "average_monthly_hours" "time_spend_company"    "Work_accident"        
##  [7] "left"                  "promotion_last_5years" "department"           
## [10] "salary"
#Remove scientific notation 
options(scipen = 999) 
#Moderation with Covariates 
#Variables: 
#IV: average monthly hours 
#Covariate: last evaluation 
#DV: satisfaction level 
#Moderator: salary 
#Center IVs and Moderator 
Data$salary.center <- meanCenter(salary) 
Data$last.eval.center <- meanCenter(last_evaluation) 
Data$avg.center <- meanCenter(average_monthly_hours) 
attach(Data) 
## The following objects are masked from Data (pos = 3):
## 
##     average_monthly_hours, department, last_evaluation, left,
##     number_project, promotion_last_5years, salary, satisfaction_level,
##     time_spend_company, Work_accident
#assumptions test 
#DataFrame with Moderation Variables 
DataFrame <- Data[, c("satisfaction_level", "last_evaluation", "average_monthly_hours", "salary")] 
#Descriptive Statistics (mean and SD) and Correlation  
stat.desc(DataFrame) 
##              satisfaction_level last_evaluation average_monthly_hours
## nbr.val         14999.000000000 14999.000000000         14999.0000000
## nbr.null            0.000000000     0.000000000             0.0000000
## nbr.na              0.000000000     0.000000000             0.0000000
## min                 0.090000000     0.360000000            96.0000000
## max                 1.000000000     1.000000000           310.0000000
## range               0.910000000     0.640000000           214.0000000
## sum              9191.890000000 10740.810000000       3015554.0000000
## median              0.640000000     0.720000000           200.0000000
## mean                0.612833522     0.716101740           201.0503367
## SE.mean             0.002030128     0.001397637             0.4077973
## CI.mean.0.95        0.003979300     0.002739538             0.7993325
## var                 0.061817201     0.029298864          2494.3131748
## std.dev             0.248630651     0.171169111            49.9430994
## coef.var            0.405706676     0.239029039             0.2484109
##                      salary
## nbr.val      14999.00000000
## nbr.null         0.00000000
## nbr.na           0.00000000
## min              1.00000000
## max              3.00000000
## range            2.00000000
## sum          23919.00000000
## median           2.00000000
## mean             1.59470631
## SE.mean          0.00520275
## CI.mean.0.95     0.01019803
## var              0.40600211
## std.dev          0.63718295
## coef.var         0.39956131
cor(DataFrame) 
##                       satisfaction_level last_evaluation average_monthly_hours
## satisfaction_level            1.00000000      0.10502121          -0.020048113
## last_evaluation               0.10502121      1.00000000           0.339741800
## average_monthly_hours        -0.02004811      0.33974180           1.000000000
## salary                        0.05002248     -0.01300152          -0.002241879
##                             salary
## satisfaction_level     0.050022481
## last_evaluation       -0.013001516
## average_monthly_hours -0.002241879
## salary                 1.000000000
#Assumptions Testing 
Assumptions_Mod <- lm(satisfaction_level ~ last_evaluation + average_monthly_hours + salary) 
par(mfrow=c(2,2)) 
plot(Assumptions_Mod) 

#Moderation Analysis 
Mod <- lm(satisfaction_level ~ avg.center + salary.center + avg.center:salary.center + last.eval.center , 
          data = Data) 
summary(Mod) 
## 
## Call:
## lm(formula = satisfaction_level ~ avg.center + salary.center + 
##     avg.center:salary.center + last.eval.center, data = Data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.58298 -0.15955  0.02843  0.19662  0.46346 
## 
## Coefficients:
##                             Estimate  Std. Error t value             Pr(>|t|)
## (Intercept)               0.61284414  0.00201251 304.517 < 0.0000000000000002
## avg.center               -0.00031235  0.00004285  -7.289    0.000000000000329
## salary.center             0.02018091  0.00315898   6.388    0.000000000172534
## last.eval.center          0.18619064  0.01251955  14.872 < 0.0000000000000002
## avg.center:salary.center  0.00014885  0.00006416   2.320               0.0204
##                             
## (Intercept)              ***
## avg.center               ***
## salary.center            ***
## last.eval.center         ***
## avg.center:salary.center *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2465 on 14994 degrees of freedom
## Multiple R-squared:  0.01755,    Adjusted R-squared:  0.01729 
## F-statistic: 66.95 on 4 and 14994 DF,  p-value: < 0.00000000000000022
confint(Mod) 
##                                   2.5 %        97.5 %
## (Intercept)               0.60889937416  0.6167889074
## avg.center               -0.00039634813 -0.0002283504
## salary.center             0.01398893538  0.0263728936
## last.eval.center          0.16165079550  0.2107304885
## avg.center:salary.center  0.00002308887  0.0002746072
#Moderation Simple Slopes 
Mod2 <- lm(satisfaction_level ~ avg.center + salary.center + avg.center:salary.center, data = Data) 
ModSlopes <- sim.slopes(Mod2, salary.center) 
ModSlopes 
##                INT          Slope            SE           LCL            UCL
## at zHigh 0.6252951 -0.00003371294 0.00005892912 -0.0001492212  0.00008179534
## at zMean 0.6128406 -0.00009679998 0.00004062352 -0.0001764270 -0.00001717293
## at zLow  0.6003861 -0.00015988703 0.00005665883 -0.0002709453 -0.00004882881
#Moderation Simple Slopes Plot 
interact_plot(Mod2, pred = avg.center, modx = salary.center)
## Warning: -0.637182950469582 is outside the observed range of salary.center