The association between perceived intelligence and happiness in life
Title
The association between perceived intelligence and happiness in life
Sarantos Kaptanis, London, UK
Introduction
“Ignorance is bliss”, goes the old saying; similarly “Beati paupers spiritu” (Matthew 5:3), or blessed are the poor in spirit. These sayings are seemingly similar, however there is an important difference: the first one refers to actual intelligence (rather, lack of) and the second one to perceived intelligence, or being humble about one’s ability to perceive the world.
A recent study of 6870 people in the UK, reported in BBC News and the Journal Psychological Medicine, demonstrated that the first notion may be untrue and that people at the lower end of the intelligence spectrum are less likely to be happy than more intelligent individuals. An earlier study by the University of Edinburgh had found no association between IQ and happiness
Less is known about the ways perceived intelligence affects happiness. Similarly, perceived intelligence may be linked to greater happiness. The mind is powerful and can have a positive effect on wellbeing.
Furthermore, male or female sex is associated by other researchers with differences on perceived intelligence and happiness.
Research Questions
Is perceived level of intelligence associated with happiness
Is the association between perceived level of intelligence and happiness similar for males and females
Methods
Sample:
Adolescents (7th to 12th grade) who responded in the National Longitudinal Study of Adolescent Health (Add Health) (n=6504)
Add Health is the largest, most comprehensive survey of adolescents ever undertaken in the U.S., funded by the National Institute of Child Health and Human Development (NICHD) with co-funding from 17 other federal agencies.
Measures
Perceived level of intelligence was assessed with a questionnaire; the question H1SE4 “compared with other people your age, how intelligent are you?” (available answers: moderately below average, slightly below average, about average, slightly above average, moderately above average, extremely above average, refused, don’t know)
Happiness was assessed with three questions in the questionnaire: H1FS11 “during the past week, you were happy”, “H1FS15 -You enjoyed life”, “H1FS16 - You felt sad” (available answers: never or rarely, sometimes, a lot of the time, most of the time or all of the time, refused, don’t know)
Analysis
Analysis was conducted with R: A Language and Environment for Statistical Computing (version 3.0.0, 2013) in the RStudio environment using additional packages Rcmdr, car, ggplot2, multcomp, abind, Hmisc, QuantPsyc, prodlim, xtable
Code is at the end of this post
Results
Univariate
58.4% were male, 51.6% female
55.2% rated their intelligence as above average
2.7% were never happy in the past week; 78.4% were happy a lot of the time or most of the time
3.9% never enjoyed life in the past week; however 80% enjoyed life either a lot of the time or most of the time
Only 52.5% were never sad in the past week; 7% were sad a lot of the time or most of the time
Bivariate
Those with self rated intelligence above average were more likely to enjoy life (84.0%) compared to those with self rated intelligence below average (75.1%), X-squared = 77.7507, df = 1, p-value < 2.2e-16
Those with self rated intelligence above average were more likely to experience happiness (84.0%) compared to those with self rated intelligence below average (75.1%), X-squared = 77.8, df = 1, p-value < 2.2e-16
Those with self rated intelligence above average were less likely to experience sadness (6.3%) compared to those with self rated intelligence below average (7.9%), X-squared = 6.5, df = 1, p-value = 0.01077
By groups
Importantly, it seems more females are likely to self-rate as being of lower intelligence and be less happy (436, 15%) than males (235, 9.8%)
Discussion
What might the results mean?
People with self-rated intelligence above average seem to be more likely to enjoy life, be happy and not be sad, disproving the biblical saying “beati pauperes spiritu”.
Strengths
Results are based on a large representative sample of US adolescents
Limitations
Results may not be applicable to individuals outside the United States; self-rating of intelligence was obtained in a single setting and may have reverse causation with mood
Recommended future research
Further research is needed to explore the correlation between intelligence, self reported intelligence and happiness, ideally obtaining self reported intelligence ratings and objective intelligence ratings in multiple instances.
Appendix : Code for the analysis in R
## final post
# load data
load("~/Dropbox/coursera-PassionDrivenStatistics/addhealth_pds3.RData")
# univariate
# Replace values with NA using package car
if (!library(car,logical.return = TRUE)) {install.packages("car");library(car)}
addhealth_pds$bio_sex <- Recode(addhealth_pds$bio_sex, 'c(6 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1se4 <- Recode(addhealth_pds$h1se4, 'c(96,98 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs11 <- Recode(addhealth_pds$h1fs11, 'c(6,8 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs15 <- Recode(addhealth_pds$h1fs15, 'c(6,8 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs16 <- Recode(addhealth_pds$h1fs16, 'c(6,8 ) = NA', as.factor.result=TRUE)
# Attach variable labels
var.labels <- attr(addhealth_pds,"var.labels")
# Attach value labels without NA values
addhealth_pds$bio_sex <- factor(addhealth_pds$bio_sex, levels = c(1,2), labels = c("male", "female"))
addhealth_pds$h1se4 <- factor(addhealth_pds$h1se4, levels = c(1,2,3,4,5,6), labels = c("moderately below average", "slightly below average", "about average", "slightly above average", "moderately above average", "extremely above average"))
addhealth_pds$h1fs11 <- factor(addhealth_pds$h1fs11, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
addhealth_pds$h1fs15 <- factor(addhealth_pds$h1fs15, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
addhealth_pds$h1fs16 <- factor(addhealth_pds$h1fs16, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
# Get frequencies as HTML tables with xtable, prodlim, univariateTable
if (!library(prodlim,logical.return = TRUE)) {install.packages("prodlim");library(prodlim)}
if (!library(xtable,logical.return = TRUE)) {install.packages("xtable");library(xtable)}
source("http://192.38.117.59/~tag/download/univariateTable.R")
uni_all <- xtable(summary(univariateTable(~bio_sex + h1se4 + h1fs11 + h1fs15 + h1fs16, data=addhealth_pds)))
print(uni_all, type = "html")
# uni_bio_sex <- xtable(summary(univariateTable(~bio_sex, data=addhealth_pds)))
# uni_h1se4 <- xtable(summary(univariateTable(~h1se4, data=addhealth_pds)))
# uni_h1fs11 <- xtable(summary(univariateTable(~h1fs11, data=addhealth_pds)))
# uni_h1fs15 <- xtable(summary(univariateTable(~h1fs15, data=addhealth_pds)))
# uni_h1fs16 <- xtable(summary(univariateTable(~h1fs16, data=addhealth_pds)))
# print(uni_bio_sex, type = "html")
# print(uni_h1se4, type = "html")
# print(uni_h1fs11, type = "html")
# print(uni_h1fs15, type = "html")
# print(uni_h1fs16, type = "html")
# Bivariate
# chi square simplified
load("~/Dropbox/coursera-PassionDrivenStatistics/addhealth_pds3.RData")
# create a new data frame
if (!library(car,logical.return = TRUE)) {install.packages("car");library(car)}
simple_bio_sex <- Recode(addhealth_pds$bio_sex, 'c(6 ) = NA', as.factor.result=TRUE)
simple_h1se4 <- Recode(addhealth_pds$h1se4, 'c(96,98 ) = NA', as.factor.result=TRUE)
simple_h1se4 <- Recode(simple_h1se4, 'c(1,2,3 ) = 0', as.factor.result=TRUE)
simple_h1se4 <- Recode(simple_h1se4, 'c(4,5,6 ) = 1', as.factor.result=TRUE)
simple_h1fs11 <- Recode(addhealth_pds$h1fs15, 'c(6,8 ) = NA')
simple_h1fs11 <- Recode(simple_h1fs11, 'c(0,1 ) = 0')
simple_h1fs11 <- Recode(simple_h1fs11, 'c(2,3 ) = 1')
simple_h1fs15 <- Recode(addhealth_pds$h1fs15, 'c(6,8 ) = NA')
simple_h1fs15 <- Recode(simple_h1fs15, 'c(0,1 ) = 0')
simple_h1fs15 <- Recode(simple_h1fs15, 'c(2,3 ) = 1')
simple_h1fs16 <- Recode(addhealth_pds$h1fs16, 'c(6,8 ) = NA')
simple_h1fs16 <- Recode(simple_h1fs16, 'c(0,1 ) = 0')
simple_h1fs16 <- Recode(simple_h1fs16, 'c(2,3 ) = 1')
simple_bio_sex <- factor(simple_bio_sex, , levels = c(1,2), labels = c("male","female"))
simple_h1se4 <- factor(simple_h1se4, levels = c(0,1), labels = c("below average", "above average"))
simple_h1fs11 <- factor(simple_h1fs11, levels = c(0,1), labels = c("less", "more"))
simple_h1fs15 <- factor(simple_h1fs15, levels = c(0,1), labels = c("less", "more"))
simple_h1fs16 <- factor(simple_h1fs16, levels = c(0,1), labels = c("less", "more"))
my_data <- data.frame(simple_bio_sex,simple_h1se4,simple_h1fs11,simple_h1fs15,simple_h1fs16)
options(digits=3) # only print 3 decimal places
.Table <- xtabs(~simple_h1se4 + simple_h1fs11, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
.Table <- xtabs(~simple_h1se4 + simple_h1fs15, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
.Table <- xtabs(~simple_h1se4 + simple_h1fs16, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
.Table <- xtabs(~simple_h1se4 + simple_h1fs11 + simple_bio_sex, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
.Table <- xtabs(~simple_h1se4 + simple_h1fs15 + simple_bio_sex, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
.Table <- xtabs(~simple_h1se4 + simple_h1fs16 + simple_bio_sex, data=my_data)
.Table
prop.table(.Table, 1)
.Test <- chisq.test(.Table, correct=FALSE)
.Test
# graph
# Replace values with NA using package car
if (!library(car,logical.return = TRUE)) {install.packages("car");library(car)}
addhealth_pds$bio_sex <- Recode(addhealth_pds$bio_sex, 'c(6 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1se4 <- Recode(addhealth_pds$h1se4, 'c(96,98 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs11 <- Recode(addhealth_pds$h1fs11, 'c(6,8 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs15 <- Recode(addhealth_pds$h1fs15, 'c(6,8 ) = NA', as.factor.result=TRUE)
addhealth_pds$h1fs16 <- Recode(addhealth_pds$h1fs16, 'c(6,8 ) = NA', as.factor.result=TRUE)
# Attach value labels without NA values
addhealth_pds$bio_sex <- factor(addhealth_pds$bio_sex, levels = c(1,2), labels = c("male", "female"))
addhealth_pds$h1se4 <- factor(addhealth_pds$h1se4, levels = c(1,2,3,4,5,6), labels = c("moderately below average", "slightly below average", "about average", "slightly above average", "moderately above average", "extremely above average"))
addhealth_pds$h1fs11 <- factor(addhealth_pds$h1fs11, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
addhealth_pds$h1fs15 <- factor(addhealth_pds$h1fs15, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
addhealth_pds$h1fs16 <- factor(addhealth_pds$h1fs16, levels = c(0,1,2,3), labels = c("never or rarely", "sometimes", "a lot of the time", "most of the time or all of the time"))
if (!library(ggplot2,logical.return = TRUE)) {install.packages("ggplot2");library(ggplot2)}
qplot(h1se4, data=addhealth_pds, geom="bar", fill=h1fs11, xlab = "Perceived intelligence") + labs(fill="during the past week, you were happy")











