Data Center Opinion Project - Study 2: Investment framing

Research question:

If a builder wants to buy a community’s support for building a data center, where would its money have the most bang for its buck?

Pre-IV Qs

How often would you say you use AI tools such as Chat GPT and Claude, in your day-to-day life? [Never / Less than once a month / A few times a month / Daily]

Overall, would you favor or oppose the construction of more data centers in your local community to support artificial intelligence, or AI, technology in the U.S.? [Strongly oppose / Somewhat oppose / Neither favor nor oppose / Somewhat favor / Strongly favor]

IV

Participants were randomly assigned to view one of four propositions for a local data center build.

Control condition

  • A technology company has proposed building a data center for AI applications in your local community.
  • The technology company would operate under a sales tax exemption, as is the standard for most previous data center projects.

Taxes condition

  • A technology company has proposed building a data center for AI applications in your local community.
  • Under a negotiated agreement, the company would provide a $240 million investment in your local community, distributed as a $10,000 payment to each household.

Pro-environmental efforts condition

  • A technology company has proposed building a data center for AI applications in your local community.
  • Under a negotiated agreement, the company would provide a $240 million investment in your local community, distributed to environmental initiatives.

Social capital condition

  • A technology company has proposed building a data center for AI applications in your local community.
  • Under a negotiated agreement, the company would provide a $240 million investment in your local community, distributed as a schools, libraries, and community centers.

Post-IV measures

How many data centers are currently in your local community? [None, 1-2, 2+, I don’t know]

Considering the negotiated terms, would you favor or oppose the construction of this data center in your local community? [Strongly oppose / Somewhat oppose / Neither favor nor oppose / Somewhat favor / Strongly favor]

show code
dcOpinion_study2 = readRDS('study 2/data-centers2-cleaned.rds') %>% 
  filter(`U.s. political affiliation` != 'CONSENT_REVOKED') %>% 
  mutate(condition=as.factor(condition),
         support = post_support -3,
         ai_use = factor(ai_use, levels=c('Never','Less than once a month','A few times a month','Daily')),
         income = factor(verasight_income, levels=c('Less than $15,000','$15,000 to under $50,0000','$50,000 to under $75,000','$75,000 to under $100,000','$100,000 to under $150,000','$150,000 to under $200,000','More than $200,000')),
         dataCenterDensity = factor(number_data_centers, levels=c('None',"I don't know", '2-Jan','2+'), labels=c('None',"I don't know", '1-2','2+')),
         pre_support = factor(support_local, levels=c('Strongly oppose','Somewhat oppose','Neither favor nor oppose','Somewhat favor','Strongly favor'))) %>% 
  mutate(support_difference = post_support - as.numeric(pre_support)) %>% 
  mutate(pre_support = as.numeric(pre_support) -3) 

nice_table(dcOpinion_study2 %>% group_by(condition)  %>%    count(), title = 'N per condition')

N per condition

condition

n

control

495

environment

502

social-cap

498

taxes

496

Total of N = 1991

Support by condition

show code
# nice_table(dcOpinion_study2 %>% group_by(condition, support) %>% tally() %>% mutate(percent = n/sum(n)*100))

supportByconditionPlot = dcOpinion_study2 %>% group_by(condition, support) %>% tally() %>% mutate(percent = n/sum(n)*100) %>% mutate(support = fct_rev(factor(support))) %>% 
  ggplot(aes(x = .5, y=percent, fill = support))+
  geom_bar(stat = "identity", color='white') +
  theme_void(base_size=15)+
  labs(fill="", x='') +
  theme(legend.position='top')+
  scale_fill_manual(values=c('#232D4B','#C8CBD2','#FDDA24','#F9DCBF','#E57200'))+
  coord_flip()+
  facet_wrap(~condition, ncol = 1)

supportByconditionPlot

show code
# ggsave(supportByconditionPlot, filename='study 2/supportByCondition_pieBarPlot.png', dpi = 300, width=12, height = 12)

supportByconditionErrorPlot = ggerrorplot(data=dcOpinion_study2, x='condition',y='support', color='condition', ylim=c(-2,0.15))+
  scale_color_manual(values=c('#232d4b','#ef3f6b','#62BB46','#25CAD3'))

# ggsave(supportByconditionErrorPlot, filename='study 2/supportByCondition_plot.png', dpi = 300, width=5, height = 7)

supportByconditionErrorPlot

show code
nice_table(tidy(lm(data=dcOpinion_study2, support ~ fct_rev(condition))))

Term

estimate

std.error

statistic

p

(Intercept)

-0.08

0.06

-1.38

.168

fct_rev(condition)social-cap

-0.24

0.09

-2.82

.005**

fct_rev(condition)environment

-0.19

0.09

-2.20

.028*

fct_rev(condition)control

-0.73

0.09

-8.35

< .001***

Any type of investment by the tech company increases support. However, individual payouts increase support the most. The effects of investments in public goods and in pro-environmental efforts were indistinguishable from each other.

Pre- post- and difference score analysis

Participants reported their support for a local data center build both pre- and post-IV.

show code
dcOpinion_study2_long = dcOpinion_study2 %>% select(condition, support, pre_support) %>% rename(pre = 'pre_support', post = 'support') %>% mutate(PID = 1:nrow(.)) %>% 
pivot_longer(., 2:3, names_to = "time", values_to="support") %>% mutate(time = factor(time, levels=c('pre', 'post'))) 

ggerrorplot(data=dcOpinion_study2_long,x = 'time', y = 'support', color='condition',  alpha=0.05, position = position_dodge(0)) +
  geom_line(alpha=0.15, aes(group = PID, color=condition), position=position_jitter()) +
  labs(color='Condition',y = 'Support',x='')+
  coord_cartesian(ylim=c(-1,0))

Mixed effects model

show code
nice_table(tidy(lmer(data = dcOpinion_study2_long, support ~ time * condition + (1 | PID))) %>% filter(effect=='fixed') %>% select(-effect, -group, -statistic), title='Mixed effects model: Support ~ Time * Condition ')

Mixed effects model: Support ~ Time * Condition

Term

estimate

std.error

df

p

(Intercept)

-0.66

0.06

2,620.33

< .001***

timepost

-0.15

0.04

1,987.00

.001***

conditionenvironment

-0.04

0.08

2,620.33

.665

conditionsocial-cap

-0.07

0.08

2,620.33

.406

conditiontaxes

-0.05

0.08

2,620.33

.547

timepost × conditionenvironment

0.57

0.06

1,987.00

< .001***

timepost × conditionsocial-cap

0.55

0.06

1,987.00

< .001***

timepost × conditiontaxes

0.78

0.06

1,987.00

< .001***

Difference score plot

show code
study2_differencePlot = ggerrorplot(data=dcOpinion_study2, x='condition',y='support_difference', color='condition')+
  scale_color_manual(values=c('#232d4b','#ef3f6b','#62BB46','#25CAD3'))+
  coord_flip()

study2_differencePlot

show code
# ggsave(study2_differencePlot, filename='study 2/supportByCondition_differencePlot.png', dpi = 300, width=5, height = 3)

Moderation by political ID