4 Study 4
<- subset(Data_Meta_Raw.wide, Study == 4) Data_Study4_Wide
4.1 Data analysis
Planned statistical analysis: Run SEM for each sleep variable (IV) on endorsement of moral principles (DV)
#Primary Analysis
<-
Model_QualCroSEMS4'MoralTOT=~Moral_DIL+Moral_SCA+Moral_CAR
MoralTOT~SleepQualCro'
<-sem(Model_QualCroSEMS4, data=Data_Study4_Wide, estimator="MLR") fitQualCro
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some observed variances are (at least) a factor 1000 times larger than
## others; use varTable(fit) to investigate
## Warning in lavaan::lavaan(model = Model_QualCroSEMS4, data = Data_Study4_Wide, : lavaan WARNING:
## the optimizer warns that a solution has NOT been found!
#Secondary Analyses
<-
Model_QualAcuSEMS4'MoralTOT=~Moral_DIL+Moral_SCA+Moral_CAR
MoralTOT~SleepQualAcu'
<-sem(Model_QualAcuSEMS4, data=Data_Study4_Wide, estimator="MLR") fitQualAcu
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some observed variances are (at least) a factor 1000 times larger than
## others; use varTable(fit) to investigate
## Warning in lav_object_post_check(object): lavaan WARNING: some estimated ov
## variances are negative
<-
Model_QuantCroSEMS4'MoralTOT=~Moral_DIL+Moral_SCA+Moral_CAR
MoralTOT~SleepQuantCro'
<-sem(Model_QuantCroSEMS4, data=Data_Study4_Wide, estimator="MLR") fitQuantCro
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some observed variances are (at least) a factor 1000 times larger than
## others; use varTable(fit) to investigate
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some estimated ov variances are negative
<-
Model_QuantAcuSEMS4'MoralTOT=~Moral_DIL+Moral_SCA+Moral_CAR
MoralTOT~SleepQuantAcu'
<-sem(Model_QuantAcuSEMS4, data=Data_Study4_Wide, estimator="MLR") fitQuantAcu
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some observed variances are (at least) a factor 1000 times larger than
## others; use varTable(fit) to investigate
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan
## WARNING: some estimated ov variances are negative
summary(fitQualCro)
## lavaan 0.6-8 did NOT end normally after 533 iterations
## ** WARNING ** Estimates below are most likely unreliable
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 7
##
## Number of observations 99
##
## Model Test User Model:
##
## Test statistic NA
## Degrees of freedom NA
##
## Parameter Estimates:
##
## Standard errors Sandwich
## Information bread Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT =~
## Moral_DIL 1.000
## Moral_SCA 0.000 NA
## Moral_CAR -0.000 NA
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT ~
## SleepQualCro -1.489 NA
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Moral_DIL -2215512.965 NA
## .Moral_SCA 16.691 NA
## .Moral_CAR 0.034 NA
## .MoralTOT 2216170.176 NA
summary(fitQualAcu)
## lavaan 0.6-8 ended normally after 380 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 7
##
## Number of observations 99
##
## Model Test User Model:
## Standard Robust
## Test Statistic 0.061 0.056
## Degrees of freedom 2 2
## P-value (Chi-square) 0.970 0.972
## Scaling correction factor 1.093
## Yuan-Bentler correction (Mplus variant)
##
## Parameter Estimates:
##
## Standard errors Sandwich
## Information bread Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT =~
## Moral_DIL 1.000
## Moral_SCA 0.816 1.883 0.434 0.665
## Moral_CAR 0.003 0.001 2.295 0.022
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT ~
## SleepQualAcu -0.074 0.326 -0.226 0.821
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Moral_DIL 597.017 171.683 3.477 0.001
## .Moral_SCA -29.487 104.379 -0.282 0.778
## .Moral_CAR 0.034 0.005 7.127 0.000
## .MoralTOT 69.272 165.286 0.419 0.675
summary(fitQuantCro)
## lavaan 0.6-8 ended normally after 228 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 7
##
## Number of observations 99
##
## Model Test User Model:
## Standard Robust
## Test Statistic 0.027 0.021
## Degrees of freedom 2 2
## P-value (Chi-square) 0.987 0.990
## Scaling correction factor 1.281
## Yuan-Bentler correction (Mplus variant)
##
## Parameter Estimates:
##
## Standard errors Sandwich
## Information bread Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT =~
## Moral_DIL 1.000
## Moral_SCA 1.038 2.797 0.371 0.711
## Moral_CAR 0.003 0.001 2.309 0.021
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT ~
## SleepQuantCro -0.396 1.155 -0.343 0.732
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Moral_DIL 611.846 158.983 3.849 0.000
## .Moral_SCA -42.021 154.502 -0.272 0.786
## .Moral_CAR 0.034 0.005 7.340 0.000
## .MoralTOT 54.283 150.715 0.360 0.719
summary(fitQualCro)
## lavaan 0.6-8 did NOT end normally after 533 iterations
## ** WARNING ** Estimates below are most likely unreliable
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 7
##
## Number of observations 99
##
## Model Test User Model:
##
## Test statistic NA
## Degrees of freedom NA
##
## Parameter Estimates:
##
## Standard errors Sandwich
## Information bread Observed
## Observed information based on Hessian
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT =~
## Moral_DIL 1.000
## Moral_SCA 0.000 NA
## Moral_CAR -0.000 NA
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## MoralTOT ~
## SleepQualCro -1.489 NA
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Moral_DIL -2215512.965 NA
## .Moral_SCA 16.691 NA
## .Moral_CAR 0.034 NA
## .MoralTOT 2216170.176 NA
Alternative statistical analysis: using a composite variable as the dependent variable instead of a latent variable
# creation of the composite variable
$MoralZ_DIL<- scale(Data_Study4_Wide$Moral_DIL,
Data_Study4_Widecenter = TRUE, scale = TRUE)
$MoralZ_SCA<- scale(Data_Study4_Wide$Moral_SCA,
Data_Study4_Widecenter = TRUE, scale = TRUE)
$MoralZ_CAR<- scale(Data_Study4_Wide$Moral_CAR,
Data_Study4_Widecenter = TRUE, scale = TRUE)
$MoralZ<-with(Data_Study4_Wide, MoralZ_DIL+MoralZ_SCA+MoralZ_CAR)
Data_Study4_Wide
# univariate regression
<-lm(MoralZ~SleepQualCro, Data_Study4_Wide)
QualCroLMS4<-lm(MoralZ~SleepQualAcu, Data_Study4_Wide)
QualAcuLMS4<-lm(MoralZ~SleepQuantCro,Data_Study4_Wide)
QuantCroLMS4<-lm(MoralZ~SleepQuantAcu, Data_Study4_Wide) QuantAcuLMS4
Extract coefficients from linear regression models
<- rbind(
results_S4 tidy(QualCroLMS4)[2,],
tidy(QualAcuLMS4)[2,],
tidy(QuantCroLMS4)[2,],
tidy(QuantAcuLMS4)[2,]) %>%
mutate(
p.value = case_when(
*4 < 1 ~ p.value*4,
p.value*4 >= 1 ~ 1)) p.value
Prepare data for plots
<- Data_Study4_Wide %>%
Data_PlotS4pivot_longer(
cols=c(SleepQualCro, SleepQualAcu, SleepQuantCro, SleepQuantAcu),
names_to="SleepType") %>%
rename("SleepValue"=value) %>%
mutate(
SleepLength=case_when(
=="SleepQualCro" | SleepType=="SleepQuantCro"~"Chronic",
SleepType=="SleepQualAcu" | SleepType=="SleepQuantAcu"~"Acute"),
SleepTypeSleepQuanthist=case_when(
=="SleepQualCro" | SleepType=="SleepQualAcu"~"Sleep Quality",
SleepType=="SleepQuantCro" | SleepType=="SleepQuantAcu"~"Sleep Quantity"))
SleepType
$SleepType<-dplyr::recode(Data_PlotS4$SleepType,
Data_PlotS4"SleepQualCro" = "Quality of Chronic Sleep",
"SleepQualAcu" = "Quality of Acute Sleep",
"SleepQuantCro" = "Quantity of Chronic Sleep",
"SleepQuantAcu" = "Quantity of Acute Sleep")
<- Data_Study4_Wide %>%
Data_MoralS4pivot_longer(
cols=c(Moral_DIL, Moral_SCA, Moral_CAR),
names_to="Outcome_moral") %>%
rename("MoralValue"=value)
$Outcome_moral<-dplyr::recode(Data_MoralS4$Outcome_moral,
Data_MoralS4"Moral_DIL" = "Dilemmas",
"Moral_SCA" = "Scale",
"Moral_CAR" = "Autonomous cars")
4.2 Summary of Study 4 results
Put results in a table
gt(results_S4) %>%
fmt_number(
columns = 2:5,
decimals = 2)
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
SleepQualCro | −0.02 | 0.06 | −0.35 | 1.00 |
SleepQualAcu | −0.03 | 0.10 | −0.30 | 1.00 |
SleepQuantCro | −0.10 | 0.20 | −0.49 | 1.00 |
SleepQuantAcu | 0.00 | 0.16 | 0.00 | 1.00 |
4.3 Plots of Study 4 results
Plot distribution for each sleep indicator
<-ggplot(Data_PlotS4, aes(x=SleepValue, fill=factor(SleepLength))) +
DistQualityS4geom_density(alpha=0.5, size=0.5,adjust = 2) +
scale_fill_manual(values=c("#193B94", "#BDCAEE", "#193B94", "#BDCAEE")) +
theme_bw() +
ylab("Density") + xlab("") +
facet_wrap(~factor(SleepQuanthist), scale="free_x") +
guides(fill=guide_legend("Sleep Length")) +
theme(
axis.title.y = element_text(size = 11, hjust = 0.5, face="bold"),
axis.title.x = element_text(face="bold", size = 11, hjust = 0.5),
legend.position="top",
legend.title = element_text(colour="black", size=10, face="bold"))
DistQualityS4
Plot distribution for the scores to the sacrificial dilemmas, moral scale and autonomous car dilemmas
<-ggplot(Data_MoralS4, aes(x=MoralValue, fill=factor(Outcome_moral))) +
DistMoralS4geom_density(alpha=0.5, size=0.5,adjust = 2) +
theme_bw() +
ylab("Density") + xlab("Moral Scale") +
facet_wrap(~factor(Outcome_moral), scale="free") +
guides(fill="none") +
theme(
axis.title.y = element_text(size = 11, hjust = 0.5, face="bold"),
axis.title.x = element_text(face="bold", size = 11, hjust = 0.5))
DistMoralS4
Scatterplots
ggplot(Data_PlotS4, aes(x=SleepValue, y=MoralZ)) +
geom_jitter(alpha=0.6, color="#545454", size=1.2) +
geom_smooth(method="lm")+
facet_wrap(~factor(SleepType), scales="free_x") +
theme_bw() + ylab("Utilitirianism") + xlab("") +
theme(axis.title.y = element_text(size = 11, hjust = 0.5, face="bold"),
axis.title.x = element_text(face="bold", size = 11, hjust = 0.5)) +
guides(size=FALSE, colour=FALSE, fill=FALSE)
## `geom_smooth()` using formula 'y ~ x'