Load data
#load
facedata <- read.csv("face_analyses_data_finalsample_correctedNAs.csv", header=TRUE) %>%
mutate(EarningslastyearinCordobas = ifelse(is.na(EarningslastyearinCordobas),0,EarningslastyearinCordobas),
EarningslastyearinDollars = ifelse(is.na(EarningslastyearinDollars),0,EarningslastyearinDollars)) %>%
mutate(income = EarningslastyearinCordobas/34 + EarningslastyearinDollars) %>%
mutate(rural = ifelse(village == 0,0,1)) %>% # village0 = Managua
mutate(rel = ifelse(CohabitingLivingwithSomeone0yes1no == 0,1,0)) %>%
mutate(sex = Sex0male1female) %>%
mutate(educ = Totalyearseducation) %>%
mutate(TV = HowmanyhoursTVlast7days,
TV_ln = (log(HowmanyhoursTVlast7days+1))) %>%
mutate(MascPref_MF = MASCprefs_malefaces) %>%
mutate(MascPref_FF = MASCprefs_femalefaces) %>%
mutate(educ = Totalyearseducation) %>%
mutate(locrank = recode(village, '0'= 1,
'4' = 2,
'1' = 3,
'3' = 4,
'7' = 5,
'2' = 6))
# mutate(eth_mest = ifelse(Ethnicbackground==2,1,0)) %>% #Mestizo dummy variable - not needed as now hand coded including ther 'other' column comments
#create composite status score
facedata$status <- scale(facedata$EarningslastyearinCordobas)+scale(facedata$Totalyearseducation)
Descriptives
Summary of continuous variables
options(width = 900)
facedata_continuous <- facedata %>%
select("Age","Yearsofmariage","Howmanychildren","income",
"educ","TV","Acculturation",
"MascPref_MF","MascPref_FF")
psych::describe(facedata_continuous)
#table1 <- psych::describe(facedata_continuous)
#write.csv(table1,file="table1_nic_masc.csv")
Categorical variables and Figure 1 code
facedata_cat <- facedata %>%
select("Sex0male1female","Married0yes1no","Engaged0yes1no",
"CohabitingLivingwithSomeone0yes1no","Divorced0yes1no","DatingMultiple","DatingJustOne",
"NotCurrentlyInvolvedwithAnyone0yes1no","Widowed0yes1no","Children",
"Ethnicbackground","Partnerethnicbackground",
"Occupation","Schoollevel","Televisioninhouse")
#Note cohabiting includes those married and cohabiting
#create combined relationship variable for summary plot
facedata_cat$Relationship <- (1-facedata_cat$CohabitingLivingwithSomeone0yes1no)*4-(1-facedata_cat$NotCurrentlyInvolvedwithAnyone0yes1no)
facedata_cat$Relationship[facedata_cat$Relationship == 4] <- "Cohabiting"
facedata_cat$Relationship[facedata_cat$Relationship == 3] <- "Dating"
facedata_cat$Relationship[facedata_cat$Relationship == 0] <- "Dating"
facedata_cat$Relationship[facedata_cat$Relationship == -1] <- "Single"
#Set ethnicity labels
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 0] <- "Miskitu"
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 1] <- "Garifuna"
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 2] <- "Mestizo"
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 3] <- "Other"
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 4] <- "Other"
facedata_cat$Ethnicbackground[facedata_cat$Ethnicbackground == 5] <- "Other"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 0] <- "Miskitu"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 1] <- "Garifuna"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 2] <- "Mestizo"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 3] <- "Other"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 4] <- "Other"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == 5] <- "Other"
facedata_cat$Partnerethnicbackground[facedata_cat$Partnerethnicbackground == ""] <- NA
#Set education labels
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 0] <- "1-Some ES"
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 1] <- "2-All ES"
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 2] <- "3-Some HS"
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 3] <- "4-All HS"
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 4] <- "5-More"
facedata_cat$Schoollevel[facedata_cat$Schoollevel == 5] <- "0-None"
#Set TV labels
facedata_cat$Televisioninhouse[facedata_cat$Televisioninhouse == 0 ] <- "In my house"
facedata_cat$Televisioninhouse[facedata_cat$Televisioninhouse == 1 ] <- "In house I visit"
facedata_cat$Televisioninhouse[facedata_cat$Televisioninhouse == 2 ] <- "In house I don't visit"
facedata_cat$Televisioninhouse[facedata_cat$Televisioninhouse == 3 ] <- "No TV in village"
#Set gender labels
facedata_cat$Sex0male1female [facedata_cat$Sex0male1female == "0" ] <- "Male"
facedata_cat$Sex0male1female [facedata_cat$Sex0male1female == "1" ] <- "Female"
#Set remaining binary variables
facedata_cat [facedata_cat == "0"] <- "Yes"
facedata_cat [facedata_cat == "1"] <- "No"
table(facedata_cat$Sex0male1female)
##
## Female Male
## 156 155
barplot(table(facedata_cat$Sex0male1female), main = "Gender")

par(mfrow=c(2,2))
barplot(table(facedata_cat$Relationship), main = "Relationship status")
barplot(table(facedata_cat$DatingMultiple), main = "Dating multiple partners")
barplot(table(facedata_cat$Ethnicbackground), main = "Ethnicity")
barplot(table(facedata_cat$Partnerethnicbackground), main = "Partner ethnicity")

#barplot(table(facedata_cat$Occupation), main = "Occupation")
par(mfrow=c(2,1))
barplot(table(facedata_cat$Schoollevel), main = "Education level")
barplot(table(facedata_cat$Televisioninhouse), main = "TV access in village")

hist(facedata$Age, main="Age distribution")

Zero-order associations between variables
# Correlations between continuous variables
apa.cor.table(facedata_continuous)
##
##
## Means, standard deviations, and correlations with confidence intervals
##
##
## Variable M SD 1 2 3 4 5 6 7 8
## 1. Age 27.74 11.57
##
## 2. Yearsofmariage 10.41 12.22 .74**
## [.63, .82]
##
## 3. Howmanychildren 3.14 2.74 .68** .54**
## [.60, .74] [.37, .68]
##
## 4. income 745.29 2362.50 .11 -.07 -.13
## [-.01, .21] [-.27, .14] [-.26, .01]
##
## 5. educ 6.72 4.66 -.28** -.20 -.31** .13*
## [-.38, -.18] [-.40, .00] [-.43, -.19] [.02, .24]
##
## 6. TV 8.90 10.28 -.16** .02 -.20** .05 .44**
## [-.26, -.04] [-.19, .22] [-.33, -.06] [-.06, .16] [.35, .53]
##
## 7. Acculturation 2.80 1.03 .02 .05 -.03 .16* -.00 .16*
## [-.11, .15] [-.19, .28] [-.19, .14] [.03, .29] [-.13, .13] [.04, .29]
##
## 8. MascPref_MF 0.43 0.26 -.01 -.24* -.01 .06 -.11 -.07 -.05
## [-.12, .10] [-.43, -.03] [-.14, .13] [-.05, .17] [-.22, .01] [-.18, .05] [-.18, .08]
##
## 9. MascPref_FF 0.48 0.25 .05 -.13 .08 .08 -.08 -.15** -.21** .11
## [-.07, .16] [-.33, .08] [-.05, .22] [-.04, .19] [-.19, .04] [-.26, -.04] [-.33, -.08] [-.00, .22]
##
##
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations
## that could have caused the sample correlation (Cumming, 2014).
## * indicates p < .05. ** indicates p < .01.
##
# Checking if age and socioeconomic status are associated with relationship status. No connection with SES but single individuals tend to be younger than partnered/dating individuals. As age is controlled in those models, this doesn't represent an issue.
summary(lm(Age ~ NotCurrentlyInvolvedwithAnyone0yes1no, data=facedata))
##
## Call:
## lm(formula = Age ~ NotCurrentlyInvolvedwithAnyone0yes1no, data = facedata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.526 -6.707 -3.526 3.474 52.293
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23.707 1.127 21.045 < 2e-16 ***
## NotCurrentlyInvolvedwithAnyone0yes1no 5.819 1.365 4.262 2.7e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11.21 on 308 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.05568, Adjusted R-squared: 0.05262
## F-statistic: 18.16 on 1 and 308 DF, p-value: 2.701e-05
summary(lm(income ~ NotCurrentlyInvolvedwithAnyone0yes1no, data=facedata))
##
## Call:
## lm(formula = income ~ NotCurrentlyInvolvedwithAnyone0yes1no,
## data = facedata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -929 -659 -571 76 35071
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 929.3 237.9 3.907 0.000115 ***
## NotCurrentlyInvolvedwithAnyone0yes1no -270.2 288.3 -0.937 0.349469
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2367 on 308 degrees of freedom
## (1 observation deleted due to missingness)
## Multiple R-squared: 0.002843, Adjusted R-squared: -0.0003948
## F-statistic: 0.8781 on 1 and 308 DF, p-value: 0.3495
Running analyses
#create squared age term
facedata$Age2 <- facedata$Age*facedata$Age
#create age groups
facedata <- mutate(facedata, Agegroup = ifelse(Age<20,"young adult",(ifelse(Age>45, "older adult","adult"))))
#effect code binary variables
facedata$sex <- facedata$sex -.5 #positive = female
facedata$eth_mest <- facedata$eth_mest -.5 #positive = Mestizo
facedata$eth_misk <- facedata$eth_misk -.5 #positive = Miskitu
facedata$eth_gar <- facedata$eth_gar -.5 #positive = Garifuna
facedata$eth_creo <- facedata$eth_creo -.5 #positive = Creole
facedata$rel <- facedata$rel -.5 #positive = in a relationship
#create rural and gender filters
facedataW <- subset(facedata, sex==.5)
facedataM <- subset(facedata, sex==-.5)
facedataR <- subset(facedata, rural==1)
facedataRW <- subset(facedataR, sex==.5)
facedataRM <- subset(facedataR, sex==-.5)
Comparing overall means to other samples - Figure 2
Present urban and rural means/sd for M and F in a table with those from Batres & Perrett, DeBruine/Marcinkowska LatAm samples, DeBrine/Marcinkowska overall means
library(readxl)
## Warning: package 'readxl' was built under R version 4.0.4
LatAm_Data <- read.csv( "LatAmData.csv" , header=TRUE)
fig2dat <- facedata %>% select(rural, village_code, MascPref_MF,MascPref_FF)%>%
gather(FaceSex, Value, MascPref_MF,MascPref_FF) %>%
mutate(FaceSex = recode(FaceSex, 'MascPref_FF'="Female", 'MascPref_MF'="Male"))%>%
mutate(rural = recode(rural, '0'="Urban", '1'="Rural"))
figcolours <- c("#FFCC33","#0072B2" )
f2a <- ggplot(aes(FaceSex, Value), data=fig2dat) + geom_violin(aes(fill = as.factor(rural)), alpha=.6) +
geom_boxplot(width=.1, aes(fill = as.factor(rural)), position=position_dodge(.9), outlier.shape = NA) +
labs(x = "Face Sex", y = "Masculinity preference", fill = "Sample Type - current study") +
scale_fill_manual(values=figcolours)
f2a + geom_point(mapping = aes(x=FaceSex, y=Value, shape=SampleType,color=SampleType), size=3, position="dodge", alpha=.75, data=LatAm_Data) +
labs(color = "Sample Type - other studies", shape= "Sample Type - other studies")+
scale_color_manual(values=figcolours)
## Warning: Removed 22 rows containing non-finite values (stat_ydensity).
## Warning: Removed 22 rows containing non-finite values (stat_boxplot).
## Warning: Width not defined. Set with `position_dodge(width = ?)`

# stat_summary(fun.y = "mean", geom = "point", color=aes(as.factor(rural)), position = position_dodge(.9)) +
Hypothesis 1 - Compare Mestizo vs other groups
H1 Main test - women’s preferences for men
#Main test
h1 <- lm(MascPref_MF~eth_mest + Age,facedataRW)
summary(h1)
##
## Call:
## lm(formula = MascPref_MF ~ eth_mest + Age, data = facedataRW)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.48491 -0.23589 -0.03422 0.15410 0.55076
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.492946 0.066937 7.364 1.82e-11 ***
## eth_mest 0.030663 0.046587 0.658 0.512
## Age -0.001669 0.002372 -0.704 0.483
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2676 on 130 degrees of freedom
## (4 observations deleted due to missingness)
## Multiple R-squared: 0.006533, Adjusted R-squared: -0.008751
## F-statistic: 0.4274 on 2 and 130 DF, p-value: 0.6531
H1 Planned exploratory tests
#Exploration 1 - female faces and male participants
h1xff <- lm(MascPref_FF~eth_mest + Age,facedataRW) #women judging women's faces
h1xmm <- lm(MascPref_MF~eth_mest + Age,facedataRM) #men judging men's faces
h1xmf <- lm(MascPref_FF~eth_mest + Age,facedataRM) #men judging women's faces
h1cols <- c("Women judging male faces","Women judging female faces","Men judging male faces","Men judging female faces")
#stargazer(h1,h1xff,h1xmm,h1xmf, type="text",column.labels=h1cols, ci=TRUE, report="vcp")
tab_model (h1,h1xff,h1xmm,h1xmf, dv.labels = h1cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Women judging male faces
|
Women judging female faces
|
Men judging male faces
|
Men judging female faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
eth_mest
|
0.03
|
0.05
|
0.512
|
-0.00
|
0.04
|
0.965
|
-0.06
|
0.05
|
0.221
|
-0.09
|
0.04
|
0.048
|
|
Age
|
-0.00
|
0.00
|
0.483
|
0.00
|
0.00
|
0.904
|
-0.00
|
0.00
|
0.491
|
0.00
|
0.00
|
0.771
|
|
Observations
|
133
|
133
|
127
|
127
|
|
R2 / R2 adjusted
|
0.007 / -0.009
|
0.000 / -0.015
|
0.016 / -0.000
|
0.032 / 0.016
|
#Exploration 2 - testing all potential ethnicity effects
h1xEff <- lm(MascPref_FF~eth_mest + eth_gar + eth_misk + eth_creo + Age, facedataRW)
h1xEfm <- lm(MascPref_MF~eth_mest + eth_gar + eth_misk + eth_creo + Age, facedataRW)
h1xEmf <- lm(MascPref_FF~eth_mest + eth_gar + eth_misk + eth_creo + Age, facedataRM)
h1xEmm <- lm(MascPref_MF~eth_mest + eth_gar + eth_misk + eth_creo + Age, facedataRM)
#stargazer(h1xEff,h1xEfm,h1xEff,h1xEmf,h1xEmm, type="text")
tab_model (h1xEff,h1xEfm,h1xEff,h1xEmf,h1xEmm, dv.labels = h1cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Women judging male faces
|
Women judging female faces
|
Men judging male faces
|
Men judging female faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
eth_mest
|
-0.08
|
0.09
|
0.415
|
0.10
|
0.10
|
0.350
|
-0.08
|
0.09
|
0.415
|
-0.08
|
0.08
|
0.312
|
-0.11
|
0.09
|
0.182
|
|
eth_gar
|
0.07
|
0.10
|
0.476
|
0.18
|
0.12
|
0.135
|
0.07
|
0.10
|
0.476
|
-0.02
|
0.10
|
0.830
|
-0.06
|
0.10
|
0.533
|
|
eth_misk
|
-0.09
|
0.09
|
0.318
|
0.08
|
0.10
|
0.420
|
-0.09
|
0.09
|
0.318
|
0.04
|
0.08
|
0.629
|
-0.09
|
0.08
|
0.288
|
|
eth_creo
|
-0.07
|
0.10
|
0.481
|
-0.15
|
0.11
|
0.178
|
-0.07
|
0.10
|
0.481
|
-0.08
|
0.09
|
0.381
|
0.05
|
0.10
|
0.594
|
|
Age
|
0.00
|
0.00
|
0.921
|
-0.00
|
0.00
|
0.473
|
0.00
|
0.00
|
0.921
|
0.00
|
0.00
|
0.778
|
-0.00
|
0.00
|
0.455
|
|
Observations
|
133
|
133
|
133
|
127
|
127
|
|
R2 / R2 adjusted
|
0.034 / -0.004
|
0.043 / 0.005
|
0.034 / -0.004
|
0.046 / 0.007
|
0.032 / -0.008
|
Hypothesis 2 - Age effects
H2 Main tests - women’s preferences for men
# Main test looking at women's preferences
h2.1 <- lmer(MascPref_MF~Age + Age2 + (1|village), data = facedataRW) #quadratic model
## boundary (singular) fit: see ?isSingular
h2.2 <- lmer(MascPref_MF~Agegroup + (1|village), data = facedataRW) #dummy variable model
## boundary (singular) fit: see ?isSingular
h2acols <- c("Women judging male faces - quadratic model","Women judging male faces - dummy model")
#stargazer(h2.1,h2.2, type="text", column.labels=h2acols)
tab_model (h1xEff,h1xEfm,h1xEff,h1xEmf,h1xEmm, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
MascPref_FF
|
MascPref_MF
|
MascPref_FF
|
MascPref_FF
|
MascPref_MF
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
eth_mest
|
-0.08
|
0.09
|
0.415
|
0.10
|
0.10
|
0.350
|
-0.08
|
0.09
|
0.415
|
-0.08
|
0.08
|
0.312
|
-0.11
|
0.09
|
0.182
|
|
eth_gar
|
0.07
|
0.10
|
0.476
|
0.18
|
0.12
|
0.135
|
0.07
|
0.10
|
0.476
|
-0.02
|
0.10
|
0.830
|
-0.06
|
0.10
|
0.533
|
|
eth_misk
|
-0.09
|
0.09
|
0.318
|
0.08
|
0.10
|
0.420
|
-0.09
|
0.09
|
0.318
|
0.04
|
0.08
|
0.629
|
-0.09
|
0.08
|
0.288
|
|
eth_creo
|
-0.07
|
0.10
|
0.481
|
-0.15
|
0.11
|
0.178
|
-0.07
|
0.10
|
0.481
|
-0.08
|
0.09
|
0.381
|
0.05
|
0.10
|
0.594
|
|
Age
|
0.00
|
0.00
|
0.921
|
-0.00
|
0.00
|
0.473
|
0.00
|
0.00
|
0.921
|
0.00
|
0.00
|
0.778
|
-0.00
|
0.00
|
0.455
|
|
Observations
|
133
|
133
|
133
|
127
|
127
|
|
R2 / R2 adjusted
|
0.034 / -0.004
|
0.043 / 0.005
|
0.034 / -0.004
|
0.046 / 0.007
|
0.032 / -0.008
|
ggplot(aes(x=Age, y=MascPref_MF), data=facedataRW) +
geom_jitter(colour = "red", alpha=.6) +
labs(y="Proportion of masculine faces chosen", title = "Scatterplot of women's preferences for male faces")
## Warning: Removed 4 rows containing missing values (geom_point).

H2 Planned exploratory tests
# Second test looking at all preferences for all faces
h2ex1.1 <- lmer(MascPref_FF~Age*sex + Age2*sex + (1|village), data = facedataR) #quadratic model - female faces
## Warning: Some predictor variables are on very different scales: consider rescaling
h2ex1.2 <- lmer(MascPref_FF~Agegroup*sex + (1|village), data = facedataR) #dummy model - female faces
## boundary (singular) fit: see ?isSingular
h2ex2.1 <- lmer(MascPref_MF~Age*sex + Age2*sex + (1|village), data = facedataR) #quadratic model - male faces
## Warning: Some predictor variables are on very different scales: consider rescaling
h2ex2.2 <- lmer(MascPref_MF~Agegroup*sex+ (1|village), data = facedataR) #dummy model - male faces
h2bcols <- c("Female faces: quadratic","Male faces: quadratic","Female faces: groups","Male faces: groups")
#stargazer(h2.1,h2.2, type="text")
#stargazer(h2ex1.1, h2ex2.1, h2ex1.2, h2ex2.2,type="text", column.labels=h2bcols)
tab_model (h1xEff,h1xEfm,h1xEff,h1xEmf,h1xEmm, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
MascPref_FF
|
MascPref_MF
|
MascPref_FF
|
MascPref_FF
|
MascPref_MF
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
eth_mest
|
-0.08
|
0.09
|
0.415
|
0.10
|
0.10
|
0.350
|
-0.08
|
0.09
|
0.415
|
-0.08
|
0.08
|
0.312
|
-0.11
|
0.09
|
0.182
|
|
eth_gar
|
0.07
|
0.10
|
0.476
|
0.18
|
0.12
|
0.135
|
0.07
|
0.10
|
0.476
|
-0.02
|
0.10
|
0.830
|
-0.06
|
0.10
|
0.533
|
|
eth_misk
|
-0.09
|
0.09
|
0.318
|
0.08
|
0.10
|
0.420
|
-0.09
|
0.09
|
0.318
|
0.04
|
0.08
|
0.629
|
-0.09
|
0.08
|
0.288
|
|
eth_creo
|
-0.07
|
0.10
|
0.481
|
-0.15
|
0.11
|
0.178
|
-0.07
|
0.10
|
0.481
|
-0.08
|
0.09
|
0.381
|
0.05
|
0.10
|
0.594
|
|
Age
|
0.00
|
0.00
|
0.921
|
-0.00
|
0.00
|
0.473
|
0.00
|
0.00
|
0.921
|
0.00
|
0.00
|
0.778
|
-0.00
|
0.00
|
0.455
|
|
Observations
|
133
|
133
|
133
|
127
|
127
|
|
R2 / R2 adjusted
|
0.034 / -0.004
|
0.043 / 0.005
|
0.034 / -0.004
|
0.046 / 0.007
|
0.032 / -0.008
|
Hypothesis 3 - Relationship status
H3 Main test - women’s preferences for men
#Main test - women's preferences for male faces
h3 <- lmer(MascPref_MF~rel + Age + (1|village), data = facedataRW)
## boundary (singular) fit: see ?isSingular
H3 Planned exploratory tests
#exploratory checks on other combinations
h3xff <- lmer(MascPref_FF~rel + Age + (1|village), data = facedataRW) #women judging women's faces
h3xmm <- lmer(MascPref_MF~rel + Age + (1|village), data = facedataRM) #men judging men's faces
h3xmf <- lmer(MascPref_FF~rel + Age + (1|village), data = facedataRM) #men judging women's faces
h3cols <- c("Women judging men","Women judging women","Men judging men","Men judging women")
#stargazer(h3,h3xff,h3xmm,h3xmf, type="text", column.labels=h3cols)
tab_model (h3,h3xff,h3xmm,h3xmf, dv.labels = h3cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Women judging men
|
Women judging women
|
Men judging men
|
Men judging women
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
rel
|
0.02
|
0.05
|
0.673
|
0.06
|
0.04
|
0.184
|
-0.05
|
0.05
|
0.281
|
-0.09
|
0.05
|
0.069
|
|
Age
|
-0.00
|
0.00
|
0.477
|
-0.00
|
0.00
|
0.912
|
-0.00
|
0.00
|
0.501
|
0.00
|
0.00
|
0.423
|
|
Random Effects
|
|
σ2
|
0.07
|
0.05
|
0.06
|
0.06
|
|
τ00
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
|
ICC
|
|
0.00
|
0.06
|
0.01
|
|
N
|
5 village
|
5 village
|
5 village
|
5 village
|
|
Observations
|
133
|
133
|
127
|
127
|
|
Marginal R2 / Conditional R2
|
0.005 / NA
|
0.013 / 0.016
|
0.017 / 0.073
|
0.027 / 0.041
|
Hypothesis 4 - Comparing preferences across communities
H4 Main tests of location development with linear models (reported in paper)
#village profiles show overall development related indices (TV, education, income) fit with how we ordered the villages)
facedata %>% group_by(village_code) %>%
summarise(income = mean(income, na.rm=TRUE),
education = mean(Totalyearseducation, na.rm=TRUE),
TV = mean(TV, na.rm=TRUE))
#Main test 1 - comparing rural and city (note city are all Mestizo so can't use ethnicity as a control variable)
h4cf <- lm(MascPref_FF~rural + Age, data = facedata) # women's faces
h4cm <- lm(MascPref_MF~rural + Age, data = facedata) # men's faces
#Main test 2 - ranked location analyses for rural villages only - linear models to test the hypothesis that lower rank position is associated with weaker preferences; Mestizo ethnicity (present in simulated code) not used as not significant predictor above
h4rf <- lm(MascPref_FF~locrank + Age, data = facedataR) # women's faces
h4rm <- lm(MascPref_MF~locrank + Age, data = facedataR) # men's faces
h4cols <- c("City vs Rural","City vs Rural","village rank","village rank")
#stargazer(h4cf,h4cm,h4rf,h4rm, type="text", column.labels=h4cols)
tab_model (h4cf,h4cm,h4rf,h4rm, dv.labels = h4cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
City vs Rural
|
City vs Rural
|
village rank
|
village rank
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
rural
|
0.16
|
0.04
|
<0.001
|
0.02
|
0.04
|
0.668
|
|
|
|
|
|
|
|
Age
|
0.00
|
0.00
|
0.389
|
-0.00
|
0.00
|
0.845
|
0.00
|
0.00
|
0.794
|
-0.00
|
0.00
|
0.174
|
|
locrank
|
|
|
|
|
|
|
0.01
|
0.01
|
0.419
|
0.03
|
0.01
|
0.035
|
|
Observations
|
300
|
300
|
260
|
260
|
|
R2 / R2 adjusted
|
0.051 / 0.045
|
0.001 / -0.006
|
0.003 / -0.005
|
0.021 / 0.014
|
H4 Planned spline models.
Pre-registered plan to run descriptive spline models as a check given village rank is ordinal, and report the model with best AICs.
# running descriptive spline models as a check given village rank is ordinal, report the model with best AICs.
# women's faces
h4rf.s1 <- glm(MascPref_FF~ns(locrank,1) + eth_mest + Age, data = facedataR)
h4rf.s2 <- glm(MascPref_FF~ns(locrank,2) + eth_mest + Age, data = facedataR)
h4rf.s3 <- glm(MascPref_FF~ns(locrank,3) + eth_mest + Age, data = facedataR)
h4rf.s4 <- glm(MascPref_FF~ns(locrank,4) + eth_mest + Age, data = facedataR)
AIC(h4rf.s1)
## [1] -1.815825
AIC(h4rf.s2)
## [1] -0.9094054
AIC(h4rf.s3)
## [1] 0.5216941
AIC(h4rf.s4)
## [1] 1.964755
AIC(h4rf)
## [1] -2.248875
# No model has a better fit than the linear model so stick with that.
#attr(terms(h4rf.s4), "predvars")
# men's faces
h4rm.s1 <- glm(MascPref_MF~ns(locrank,1) + eth_mest + Age, data = facedataR)
h4rm.s2 <- glm(MascPref_MF~ns(locrank,2) + eth_mest + Age, data = facedataR)
h4rm.s3 <- glm(MascPref_MF~ns(locrank,3) + eth_mest + Age, data = facedataR)
h4rm.s4 <- glm(MascPref_MF~ns(locrank,4) + eth_mest + Age, data = facedataR)
AIC(h4rm.s1)
## [1] 44.29975
AIC(h4rm.s2)
## [1] 43.09921
AIC(h4rm.s3)
## [1] 41.75117
AIC(h4rm.s4)
## [1] 41.1076
AIC(h4rm)
## [1] 42.33418
# report model summary for model with best fit
summary(h4rm.s4)
##
## Call:
## glm(formula = MascPref_MF ~ ns(locrank, 4) + eth_mest + Age,
## data = facedataR)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.46107 -0.18856 -0.00064 0.20623 0.61000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.489350 0.057043 8.579 9.79e-16 ***
## ns(locrank, 4)1 -0.112675 0.081342 -1.385 0.1672
## ns(locrank, 4)2 0.206985 0.087593 2.363 0.0189 *
## ns(locrank, 4)3 0.091809 0.147777 0.621 0.5350
## ns(locrank, 4)4 0.097324 0.054399 1.789 0.0748 .
## eth_mest 0.033052 0.056145 0.589 0.5566
## Age -0.002512 0.001446 -1.738 0.0835 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.06627005)
##
## Null deviance: 17.754 on 259 degrees of freedom
## Residual deviance: 16.766 on 253 degrees of freedom
## (9 observations deleted due to missingness)
## AIC: 41.108
##
## Number of Fisher Scoring iterations: 2
H4 Exploratory tests of location as a factor
# Female faces
# Checking individual locations against the capital; every location except M3 shows significantly higher rates of choosing the masculinised female faces than in the capital.
h4rf.sx <- facedata %>%
glm(MascPref_FF~(as.factor(locrank)) + eth_mest + Age, data = .)
summary(h4rf.sx)
##
## Call:
## glm(formula = MascPref_FF ~ (as.factor(locrank)) + eth_mest +
## Age, data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.5281 -0.1362 -0.0540 0.1419 0.6417
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.332999 0.056781 5.865 1.22e-08 ***
## as.factor(locrank)2 0.158021 0.050118 3.153 0.00178 **
## as.factor(locrank)3 0.126194 0.067281 1.876 0.06170 .
## as.factor(locrank)4 0.119098 0.048561 2.453 0.01477 *
## as.factor(locrank)5 0.177226 0.071077 2.493 0.01320 *
## as.factor(locrank)6 0.162425 0.064380 2.523 0.01217 *
## eth_mest -0.035979 0.051497 -0.699 0.48532
## Age 0.000865 0.001240 0.698 0.48589
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.05834852)
##
## Null deviance: 18.223 on 299 degrees of freedom
## Residual deviance: 17.038 on 292 degrees of freedom
## (11 observations deleted due to missingness)
## AIC: 8.8581
##
## Number of Fisher Scoring iterations: 2
# Checking villages against each other - smallest village as reference category (note rank codes are reversed here, so 6 (C1) = 1 etc); no village differs from C1.
h4rf.sxR <- facedataR %>%
mutate(locrank = 7-locrank)%>%
glm(MascPref_FF~(as.factor(locrank)) + eth_mest + Age, data = .)
summary(h4rf.sxR)
##
## Call:
## glm(formula = MascPref_FF ~ (as.factor(locrank)) + eth_mest +
## Age, data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.53265 -0.13600 -0.05517 0.14120 0.54408
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.5159342 0.0564382 9.142 <2e-16 ***
## as.factor(locrank)2 0.0178349 0.0558080 0.320 0.750
## as.factor(locrank)3 -0.0520513 0.0603934 -0.862 0.390
## as.factor(locrank)4 -0.0372269 0.0506274 -0.735 0.463
## as.factor(locrank)5 -0.0125659 0.0589968 -0.213 0.832
## eth_mest -0.0249256 0.0520736 -0.479 0.633
## Age 0.0002501 0.0013408 0.187 0.852
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.05700783)
##
## Null deviance: 14.680 on 259 degrees of freedom
## Residual deviance: 14.423 on 253 degrees of freedom
## (9 observations deleted due to missingness)
## AIC: 1.9648
##
## Number of Fisher Scoring iterations: 2
# Male faces
# Checking individual locations against the capital; location 5 (M1) shows stronger masculinity preferences in male faces than the capital, otherwise no differences.
h4rm.sx <- facedata %>%
glm(MascPref_MF~(as.factor(locrank)), data = .)
summary(h4rm.sx)
##
## Call:
## glm(formula = MascPref_MF ~ (as.factor(locrank)), data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.5243 -0.1877 -0.0100 0.1900 0.6254
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.41000 0.04026 10.183 <2e-16 ***
## as.factor(locrank)2 0.02393 0.05271 0.454 0.650
## as.factor(locrank)3 -0.03540 0.05148 -0.688 0.492
## as.factor(locrank)4 -0.02231 0.05117 -0.436 0.663
## as.factor(locrank)5 0.11432 0.05808 1.968 0.050 *
## as.factor(locrank)6 0.07718 0.05730 1.347 0.179
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.06483929)
##
## Null deviance: 19.842 on 299 degrees of freedom
## Residual deviance: 19.063 on 294 degrees of freedom
## (11 observations deleted due to missingness)
## AIC: 38.549
##
## Number of Fisher Scoring iterations: 2
# Checking villages against each other - smallest village as reference category (note rank codes are reversed here, so 6 (C1) = 1 etc). In this case we see that village ranked here as 4 (or 3 in Figure 3, village M2) has significantly lower masculinity preferences in male faces than village C1.
h4rm.sxR <- facedataR %>%
mutate(locrank = 7-locrank)%>%
glm(MascPref_MF~(as.factor(locrank)) + eth_mest + Age, data = .)
summary(h4rm.sxR)
##
## Call:
## glm(formula = MascPref_MF ~ (as.factor(locrank)) + eth_mest +
## Age, data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.46107 -0.18856 -0.00064 0.20623 0.61000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.568644 0.060851 9.345 <2e-16 ***
## as.factor(locrank)2 0.047122 0.060171 0.783 0.4343
## as.factor(locrank)3 -0.126749 0.065115 -1.947 0.0527 .
## as.factor(locrank)4 -0.119407 0.054585 -2.188 0.0296 *
## as.factor(locrank)5 -0.079294 0.063609 -1.247 0.2137
## eth_mest 0.033052 0.056145 0.589 0.5566
## Age -0.002512 0.001446 -1.738 0.0835 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 0.06627005)
##
## Null deviance: 17.754 on 259 degrees of freedom
## Residual deviance: 16.766 on 253 degrees of freedom
## (9 observations deleted due to missingness)
## AIC: 41.108
##
## Number of Fisher Scoring iterations: 2
Hypothesis 5 - Effects of socioeconomic status
H5 Main tests
#Main tests with overall status - men judging women and women judging men
h5fmo <- lmer(MascPref_MF~status + Age + (1|village), data = facedataRW) #women judging men's faces
## boundary (singular) fit: see ?isSingular
h5mfo <- lmer(MascPref_FF~status + Age + (1|village), data = facedataRM) #men judging women's faces
#Main test with education and income kept separate
h5fms <- lmer(MascPref_MF~educ + income + Age + (1|village), data = facedataRW) #women judging men's faces
## boundary (singular) fit: see ?isSingular
h5mfs <- lmer(MascPref_FF~educ + income + Age + (1|village), data = facedataRM) #men judging women's faces
## Warning: Some predictor variables are on very different scales: consider rescaling
h5cols <- c("Women judging men","Men judging women","Women judging men","Men judging women")
#stargazer(h5fmo,h5mfo,h5fms,h5mfs, type="text", column.labels=h5cols)
tab_model (h5fmo,h5mfo,h5fms,h5mfs, dv.labels = h5cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Women judging men
|
Men judging women
|
Women judging men
|
Men judging women
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
status
|
-0.03
|
0.02
|
0.168
|
0.01
|
0.01
|
0.267
|
|
|
|
|
|
|
|
Age
|
-0.00
|
0.00
|
0.410
|
0.00
|
0.00
|
0.609
|
-0.00
|
0.00
|
0.690
|
0.00
|
0.00
|
0.660
|
|
educ
|
|
|
|
|
|
|
-0.00
|
0.01
|
0.850
|
0.00
|
0.01
|
0.654
|
|
income
|
|
|
|
|
|
|
-0.00
|
0.00
|
0.085
|
0.00
|
0.00
|
0.861
|
|
Random Effects
|
|
σ2
|
0.07
|
0.06
|
0.07
|
0.06
|
|
τ00
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
|
ICC
|
|
0.04
|
|
0.04
|
|
N
|
5 village
|
5 village
|
5 village
|
5 village
|
|
Observations
|
133
|
127
|
133
|
127
|
|
Marginal R2 / Conditional R2
|
0.017 / NA
|
0.011 / 0.052
|
0.028 / NA
|
0.003 / 0.044
|
H5 exploratory analyses
No evidence for any face sex by person sex interaction with status.
# Exploratory checking if making data long shows any interactions with face/person sex but no evidence.
h5long <- facedataR %>%
select(ID, Age, sex, village, status, income, educ, MascPref_MF, MascPref_FF) %>%
gather('FaceSex', 'Value', MascPref_MF, MascPref_FF) %>%
lmer(Value ~ status*FaceSex*sex + Age + (1|village), data=.)
h5long2 <- facedataR%>%
select(ID, Age, sex, village, status, income, educ, MascPref_MF, MascPref_FF) %>%
gather('FaceSex', 'Value', MascPref_MF, MascPref_FF) %>%
lmer(Value ~ income*FaceSex*sex + Age + (1|village), data=.)
## Warning: Some predictor variables are on very different scales: consider rescaling
#stargazer(h5long,h5long2, type="text")
tab_model (h5long,h5long2, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Value
|
Value
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
status
|
0.01
|
0.01
|
0.404
|
|
|
|
|
FaceSex [MascPref_MF]
|
-0.07
|
0.02
|
0.001
|
-0.04
|
0.03
|
0.119
|
|
sex
|
-0.01
|
0.03
|
0.862
|
-0.01
|
0.04
|
0.779
|
|
Age
|
-0.00
|
0.00
|
0.325
|
-0.00
|
0.00
|
0.406
|
status * FaceSex [MascPref_MF]
|
-0.03
|
0.01
|
0.036
|
|
|
|
|
status * sex
|
-0.01
|
0.02
|
0.592
|
|
|
|
FaceSex [MascPref_MF] * sex
|
0.03
|
0.05
|
0.520
|
0.05
|
0.05
|
0.345
|
(status * FaceSex [MascPref_MF]) * sex
|
0.01
|
0.03
|
0.819
|
|
|
|
|
income
|
|
|
|
0.00
|
0.00
|
0.349
|
income * FaceSex [MascPref_MF]
|
|
|
|
-0.00
|
0.00
|
0.016
|
|
income * sex
|
|
|
|
0.00
|
0.00
|
0.616
|
(income * FaceSex [MascPref_MF]) * sex
|
|
|
|
-0.00
|
0.00
|
0.223
|
|
Random Effects
|
|
σ2
|
0.06
|
0.06
|
|
τ00
|
0.00 village
|
0.00 village
|
|
ICC
|
0.03
|
0.03
|
|
N
|
5 village
|
5 village
|
|
Observations
|
520
|
520
|
|
Marginal R2 / Conditional R2
|
0.036 / 0.064
|
0.038 / 0.066
|
Hypothesis 6 - Effects of television
H6 in rural participants only (reported in paper)
h6ffaceR <- lmer(MascPref_FF~ Age +TV + (1|village), data = facedataR)# women's faces
h6mfaceR <- lmer(MascPref_MF~ Age +TV + (1|village), data = facedataR)# men's faces
h6cols <- c("Female faces","Male faces")
#stargazer(h6ffaceR,h6mfaceR,type="text", column.labels=h6cols)
tab_model (h6ffaceR,h6mfaceR, dv.labels=h6cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Female faces
|
Male faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
Age
|
0.00
|
0.00
|
0.768
|
-0.00
|
0.00
|
0.124
|
|
TV
|
-0.00
|
0.00
|
0.718
|
-0.00
|
0.00
|
0.841
|
|
Random Effects
|
|
σ2
|
0.06
|
0.07
|
|
τ00
|
0.00 village
|
0.00 village
|
|
ICC
|
0.00
|
0.05
|
|
N
|
5 village
|
5 village
|
|
Observations
|
260
|
260
|
|
Marginal R2 / Conditional R2
|
0.001 / 0.002
|
0.009 / 0.054
|
H6 in full sample
Including Managua participants does not yield any effect of television, even though TV consumption is high in Managua; likely controlled for by random effect of location.
h6fface <- lmer(MascPref_FF~ Age + TV + (1|village), data = facedata)# women's faces
h6mface <- lmer(MascPref_MF~ Age + TV + (1|village), data = facedata)# men's faces
#stargazer(h6fface,h6mface,type="text", column.labels=h6cols)
tab_model (h6fface,h6mface, dv.labels=h6cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
Female faces
|
Male faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
Age
|
0.00
|
0.00
|
0.572
|
-0.00
|
0.00
|
0.556
|
|
TV
|
-0.00
|
0.00
|
0.131
|
-0.00
|
0.00
|
0.547
|
|
Random Effects
|
|
σ2
|
0.06
|
0.07
|
|
τ00
|
0.00 village
|
0.00 village
|
|
ICC
|
0.03
|
0.03
|
|
N
|
6 village
|
6 village
|
|
Observations
|
300
|
300
|
|
Marginal R2 / Conditional R2
|
0.012 / 0.046
|
0.002 / 0.028
|
Additional analyses on sex differences in offspring number/variance
The sample is not a closed population and some women use hormonal implants acquired at clinics in town. However, the pp do show some indications of Bateman’s principle. Women have higher mean offspring overall (not unexpected given that the non-Mestio community is historically matrifocal and serially monogamous with fathers most likely to leave the community and children staying with their mothers). There is higher SD in number of offspring amongst men.
kids.model <- facedata %>%
mutate(Howmanychildren = ifelse(is.na(Howmanychildren),0,Howmanychildren)) %>%
lm(Howmanychildren~ Sex0male1female + Age, data=.)
summary(kids.model)
##
## Call:
## lm(formula = Howmanychildren ~ Sex0male1female + Age, data = .)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.5745 -0.7737 -0.1377 0.6368 8.9325
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.904632 0.304162 -9.550 < 2e-16 ***
## Sex0male1female 0.636001 0.211587 3.006 0.00287 **
## Age 0.169019 0.009161 18.450 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.856 on 308 degrees of freedom
## Multiple R-squared: 0.5259, Adjusted R-squared: 0.5228
## F-statistic: 170.8 on 2 and 308 DF, p-value: < 2.2e-16
facedata %>%
mutate(Howmanychildren = ifelse(is.na(Howmanychildren),0,Howmanychildren)) %>%
group_by(Sex0male1female) %>%
summarise(kids_var = sd(Howmanychildren))
Pulling main models into tables for the paper
# Report h1
tab_model(h1, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
MascPref_MF
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
|
eth_mest
|
0.03
|
0.05
|
0.512
|
|
Age
|
-0.00
|
0.00
|
0.483
|
|
Observations
|
133
|
|
R2 / R2 adjusted
|
0.007 / -0.009
|
# Report h2
tab_model(h2.1,h2.2, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE)
|
|
MascPref_MF
|
MascPref_MF
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
Age
|
0.01
|
0.01
|
0.486
|
|
|
|
|
Age2
|
-0.00
|
0.00
|
0.402
|
|
|
|
|
Agegroup [older adult]
|
|
|
|
-0.07
|
0.09
|
0.475
|
|
Agegroup [young adult]
|
|
|
|
0.03
|
0.05
|
0.566
|
|
Random Effects
|
|
σ2
|
0.07
|
0.07
|
|
τ00
|
0.00 village
|
0.00 village
|
|
N
|
5 village
|
5 village
|
|
Observations
|
133
|
133
|
|
Marginal R2 / Conditional R2
|
0.008 / NA
|
0.008 / NA
|
# Report h3, h5, h6
varstm3 <- c("Relationship status", "Age","Overall status","Education(yrs)","Income (USD)","Television (hrs/week)")
colstm3 <- c("H3: women judging men", "H5: Women judging men","H5: Men judging women","H5: Women judging men","H5: Men judging women","H6: Female faces", "H6: Male faces")
tab_model(h3,h5fmo,h5mfo,h5fms,h5mfs,h6ffaceR,h6mfaceR, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE, pred.labels = varstm3, dv.labels = colstm3)
|
|
H3: women judging men
|
H5: Women judging men
|
H5: Men judging women
|
H5: Women judging men
|
H5: Men judging women
|
H6: Female faces
|
H6: Male faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
Relationship status
|
0.02
|
0.05
|
0.673
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Age
|
-0.00
|
0.00
|
0.477
|
-0.00
|
0.00
|
0.410
|
0.00
|
0.00
|
0.609
|
-0.00
|
0.00
|
0.690
|
0.00
|
0.00
|
0.660
|
0.00
|
0.00
|
0.768
|
-0.00
|
0.00
|
0.124
|
|
Overall status
|
|
|
|
-0.03
|
0.02
|
0.168
|
0.01
|
0.01
|
0.267
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Education(yrs)
|
|
|
|
|
|
|
|
|
|
-0.00
|
0.01
|
0.850
|
0.00
|
0.01
|
0.654
|
|
|
|
|
|
|
|
Income (USD)
|
|
|
|
|
|
|
|
|
|
-0.00
|
0.00
|
0.085
|
0.00
|
0.00
|
0.861
|
|
|
|
|
|
|
|
Television (hrs/week)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-0.00
|
0.00
|
0.718
|
-0.00
|
0.00
|
0.841
|
|
Random Effects
|
|
σ2
|
0.07
|
0.07
|
0.06
|
0.07
|
0.06
|
0.06
|
0.07
|
|
τ00
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
0.00 village
|
|
ICC
|
|
|
0.04
|
|
0.04
|
0.00
|
0.05
|
|
N
|
5 village
|
5 village
|
5 village
|
5 village
|
5 village
|
5 village
|
5 village
|
|
Observations
|
133
|
133
|
127
|
133
|
127
|
260
|
260
|
|
Marginal R2 / Conditional R2
|
0.005 / NA
|
0.017 / NA
|
0.011 / 0.052
|
0.028 / NA
|
0.003 / 0.044
|
0.001 / 0.002
|
0.009 / 0.054
|
# Report h4
varstm4 <- c("Rural", "Age","Rank")
tm4cols <- c("City vs Rural - Female faces","City vs Rural - Male faces","Village rank - Female faces","Village rank - Male faces")
tab_model(h4cf,h4cm,h4rf,h4rm, dv.labels=tm4cols, show.ci = FALSE, show.se = TRUE, show.intercept = FALSE, pred.labels = varstm4)
|
|
City vs Rural - Female faces
|
City vs Rural - Male faces
|
Village rank - Female faces
|
Village rank - Male faces
|
|
Predictors
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
Estimates
|
std. Error
|
p
|
|
Rural
|
0.16
|
0.04
|
<0.001
|
0.02
|
0.04
|
0.668
|
|
|
|
|
|
|
|
Age
|
0.00
|
0.00
|
0.389
|
-0.00
|
0.00
|
0.845
|
0.00
|
0.00
|
0.794
|
-0.00
|
0.00
|
0.174
|
|
Rank
|
|
|
|
|
|
|
0.01
|
0.01
|
0.419
|
0.03
|
0.01
|
0.035
|
|
Observations
|
300
|
300
|
260
|
260
|
|
R2 / R2 adjusted
|
0.051 / 0.045
|
0.001 / -0.006
|
0.003 / -0.005
|
0.021 / 0.014
|
Writing limited variables file for sharing
# facedata %>% select(village, sex, rural, TV, Agegroup, income, educ, MascPref_MF, MascPref_FF,Female_Face_1_MAS1, Female_Face_2_MAS1, Female_Face_3_MAS1, Female_Face_4_MAS1, Female_Face_5_MAS1, Male_Face_1_MAS1, Male_Face_2_MAS1, Male_Face_3_MAS1, Male_Face_4_MAS1, Male_Face_5_MAS1) %>%
# write.csv("limited_data_file.csv")