Misinformation has the power to create contention, influence public opinion, undermine democracy, and uplift malicious or ignorant parties. Its recent momentum has given reason to investigate the quality and correlations of news on popular sites like Facebook.
fbdata$activity_count = fbdata$share_count + fbdata$reaction_count + fbdata$comment_count
summary(fbdata)
## account_id post_id Category Page
## Min. :6.232e+10 Min. :5.511e+14 Length:2282 Length:2282
## 1st Qu.:1.145e+14 1st Qu.:1.247e+15 Class :character Class :character
## Median :1.841e+14 Median :1.291e+15 Mode :character Mode :character
## Mean :1.867e+14 Mean :3.300e+15
## 3rd Qu.:3.469e+14 3rd Qu.:1.541e+15
## Max. :4.401e+14 Max. :1.015e+16
##
## Post.URL Date.Published Post.Type Rating
## Length:2282 Length:2282 Length:2282 Length:2282
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Debate share_count reaction_count comment_count
## Length:2282 Min. : 1 Min. : 2.0 Min. : 0.0
## Class :character 1st Qu.: 24 1st Qu.: 149.0 1st Qu.: 37.0
## Mode :character Median : 96 Median : 545.5 Median : 131.5
## Mean : 4045 Mean : 5364.3 Mean : 516.1
## 3rd Qu.: 739 3rd Qu.: 2416.8 3rd Qu.: 390.2
## Max. :1088995 Max. :456458.0 Max. :159047.0
## NA's :70 NA's :2 NA's :2
## activity_count
## Min. : 9.0
## 1st Qu.: 256.8
## Median : 881.0
## Mean : 9975.2
## 3rd Qu.: 3855.5
## Max. :1704500.0
## NA's :70
liberal <- subset(fbdata, Category == "left")
conservative <- subset(fbdata, Category == "right")
nonpartisan <- subset(fbdata, Category == "mainstream")
p <- ggplot(data=fbdata, mapping = aes(x=Rating, y=activity_count, color=Category)) +
geom_point(na.rm=T, size=3, shape=4, alpha = .5, position = "jitter")+
scale_x_discrete(limits = c("no factual content", "mostly false",
"mixture of true and false","mostly true"),
labels = c("No Factual \nContent", "Mostly False",
"Mixture of True \nand False","Mostly True"))+
scale_color_manual(name = "Partisanship",
values=c('blue','black', 'red'),
limits = c("left","mainstream","right"),
labels = c("Liberal", "Nonpartisan", "Conservative"))+
ggtitle("The Spread of Facebook Misinformation")+
ylab("Sum of Shares, Comments, and Reactions")+
xlab("Truth Rating")+
ylim(0, 150000)
ggplotly(p)
# Plot liberal data
l <- ggplot(data=liberal, mapping = aes(x=Rating, y=activity_count, shape=Post.Type)) +
geom_point(na.rm=T, size=3, alpha = .5, color="blue", position = "jitter")+
scale_x_discrete(limits = c("no factual content", "mostly false", "mixture of true and false","mostly true"),
labels = c("No Factual \nContent", "Mostly False", "Mixture of True \nand False","Mostly True"))+
ggtitle("The Spread of Facebook Misinformation - Liberal Media")+
ylab("Sum of Shares, Comments, and Reactions")+
xlab("Truth Rating")+
ylim(0, 150000)
ggplotly(l)
# Plot conservative data
c <- ggplot(data=conservative, mapping = aes(x=Rating, y=activity_count, shape=Post.Type)) +
geom_point(na.rm=T, size=3, alpha = .5, color="red" ,position = "jitter")+
scale_x_discrete(limits = c("no factual content", "mostly false", "mixture of true and false","mostly true"),
labels = c("No Factual \nContent", "Mostly False", "Mixture of True \nand False","Mostly True"))+
ggtitle("The Spread of Facebook Misinformation - Conservative Media")+
ylab("Sum of Shares, Comments, and Reactions")+
xlab("Truth Rating")+
ylim(0, 150000)
ggplotly(c)
# Plot mainstream data
m <- ggplot(data=nonpartisan, mapping = aes(x=Rating, y=activity_count, shape=Post.Type)) +
geom_point(na.rm=T, size=3, alpha = .4, color="black" ,position = "jitter")+
scale_x_discrete(limits = c("no factual content", "mostly false", "mixture of true and false","mostly true"),
labels = c("No Factual \nContent", "Mostly False", "Mixture of True \nand False","Mostly True"))+
ggtitle("The Spread of Facebook Misinformation - Nonpartisan Media")+
ylab("Sum of Shares, Comments, and Reactions")+
xlab("Truth Rating")+
ylim(0, 150000)
ggplotly(m)