Ver 5:

valence: “some people liked / didn’t like your poem” -> “do you think it is possible that everyone liked / didn’t like your poem?”

utterance: utterance (after reading the note) vs. no utterance (before reading the note)

rm(list = ls())
library(jsonlite)
library(ggplot2)
library(tidyr)
library(binom)
source("/Users/ericang/Documents/Research/Politeness/experiment/2_code/data_analysis/helper/useful.R")

raw.data.path <- "/Users/ericang/Documents/Research/Politeness/experiment/2_code/production-results/"

## LOOP TO READ IN FILES
all.data <- data.frame()
files <- dir(raw.data.path,pattern="*.json")

for (file.name in files) {
  print(file.name)
  
  ## these are the two functions that are most meaningful
  json_file <- readLines(paste(raw.data.path,file.name,sep=""))
  json_file_str = paste(json_file, collapse = "")
  json_file_str = gsub(",}", "}", json_file_str)
  jso = jsonlite::fromJSON(json_file_str)
  jso1 <- data.frame(jso)
  jso1$subid <- substring(file.name, 1, 6)
  
  ## now here's where data get bound together
  all.data <- rbind(all.data, jso1)
}
## [1] "308XBLVESI45Q1XWLUNG445UBB2BR2.json"
## [1] "3137ONMDKG5C8E02FAVU68X8C0QEGX.json"
## [1] "31QTRG6Q2TDGRWASIUXB7K3GV2WPY3.json"
## [1] "31Z0PCVWUKFV447YC2GVZHKGG7A7TT.json"
## [1] "32AT8R96GL9WNF6F0A4GZ42EMYQSUM.json"
## [1] "32EYX73OY09KM062LL4B9UXI0X2RUU.json"
## [1] "32KTQ2V7RDFV5S57I2D3RZGUHO09M2.json"
## [1] "32N49TQG3GIS0Y9LO0SUAQARE0AAVH.json"
## [1] "32Q90QCQ1SLHA0WL51G940P1JGJEKA.json"
## [1] "32VNZTT0A74L52CN6FDTWQZO1KP4RV.json"
## [1] "336KAV9KYQSKZP9MGWMZB7VNKU7Y2W.json"
## [1] "336YQZE83VEC453VFC0MFJBSVTZ5MR.json"
## [1] "337RC3OW0529WH0PLRHKJ4Q28D3LV6.json"
## [1] "33IZTU6J811O4J0A5FF3JB1IGIZSXA.json"
## [1] "33PPO7FECVFLCZSX93KDL2S3R0UDI6.json"
## [1] "345LHZDEDXSS3YL0AV3FRWU2UK83UQ.json"
## [1] "34T446B1C0E00C535H0WVSAPK7TC04.json"
## [1] "35BLDD71I6XT16HT0S8TRJ10NMDVZ1.json"
## [1] "35GCEFQ6I5O9PXFAGI2N8O9HW05Z3P.json"
## [1] "373ERPL3YO85MNRDLGE14YBGHKFTRR.json"
## [1] "374TNBHA8BV1R8B7I7C07PTQ00OQY5.json"
## [1] "374TNBHA8BV1R8B7I7C07PTQ0YFYQ0.json"
## [1] "37TD41K0AH901LPFEJJG5YG8FZKSCF.json"
## [1] "37UEWGM5HT84D3F4JXURYSSLP1YR1Q.json"
## [1] "37UQDCYH6XVAHWBNHXGA0Z81DS4V7B.json"
## [1] "37W3JXSD6686B57TUGB6ZEBCO12YWE.json"
## [1] "382M9COHEHFVDW1XZFKBANYZL66UEA.json"
## [1] "38YMOXR4MUZ4SLXNOXGEGNRJPQ66WH.json"
## [1] "39ASUFLU6X7NU0VS4KVYUUX3FRIXE6.json"
## [1] "39U1BHVTDLRD3L6BAQD5M080B4JT33.json"
## [1] "3A1PQ49WVHHRO911NSIXKOQF2R01H1.json"
## [1] "3A4TN5196KIBBCBZ3P7H1K966PNCH0.json"
## [1] "3AZHRG4CU4KCNC9KCOPV2P6VEV630P.json"
## [1] "3B1NLC6UGZWG55PSOOB50KWCQ78GP0.json"
## [1] "3CFVK00FWLLOHRLOKJ9C7CA3RKQ6LE.json"
## [1] "3CTOC39K37Q1Q1BT082RXBX7I6R7JY.json"
## [1] "3DI28L7YXAEF4ZAZXRARZLT2ABGE16.json"
## [1] "3FDJT1UU748HEH3SU0N606JO6OH5KZ.json"
## [1] "3FE2ERCCZX84XI6QC7OD5T5EHUZPOY.json"
## [1] "3GD6L00D3SXDGN2CEPYACTYBJDG1MR.json"
## [1] "3GD6L00D3SXDGN2CEPYACTYBJEH1MU.json"
## [1] "3H8DHMCCW9BCIUIL965PYI7GJ6YKD7.json"
## [1] "3HL8HNGX451PZIDQWF9QW9WLKNO9FV.json"
## [1] "3HVVDCPGTESEJO3ZZB6VCU4DK67TY4.json"
## [1] "3I2PTA7R3TU673MQESB9YHEF2KXKQK.json"
## [1] "3I33IC7ZWF2J37BJ0Q8J8LDGH2XA2P.json"
## [1] "3IKZ72A5B4GAOKHKXPSVEAR5PBTNFU.json"
## [1] "3J4Q2Z4UTY3X23G736UCMS8APR7WQT.json"
## [1] "3JZQSN0I3QA4ES0YALF0OQI8O1EGFQ.json"
## [1] "3K5TEWLKGVB76GSJ0OK7ROYAR8PIV3.json"
## [1] "3KGTPGBS6XL3IGPH6VPA8MPAO6WU2U.json"
## [1] "3KRVW3HTZNLDA716R8DU8ULK9EAMSF.json"
## [1] "3KXIR214I4G41IV2RPYSVIRGPS524A.json"
## [1] "3LQ8PUHQFLS2OFXZVZ33CN71JUXIHY.json"
## [1] "3LRLIPTPEQ9EKNF9PWEN8HZAY2NKAP.json"
## [1] "3M1CVSFP6050VQD421YK43BJX8GQAO.json"
## [1] "3M23Y66PO27BL4GE4S6DJYOYJDBS6P.json"
## [1] "3M68NM076H7ZKPG1P368TOJ2XBV6RI.json"
## [1] "3MAOD8E57QARO685XJYHKHRCTI4NX4.json"
## [1] "3O6CYIULED1PUWNOKFEHWT5ZSCPUW8.json"
## [1] "3OONKJ5DKCJ2TO5GT26CA90P0PBBOO.json"
## [1] "3OWEPKL089CX9R2EF6UJQIEORPD7NH.json"
## [1] "3P4MQ7TPPXCIAUG7PX1Q4P0QTRTBBN.json"
## [1] "3PEIJLRY6TTHB0HJPKP4G043MVWXWV.json"
## [1] "3PM8NZGV8YGCR3LXDBQYOBMHYUWXQ8.json"
## [1] "3PWWM24LHSY5KJI43SO5CU7LRFF28X.json"
## [1] "3QILPRALQ5V1957XPBMP4IAJ29L8N7.json"
## [1] "3QL2OFSM96I3L8XA6N2U6462S0ZNCL.json"
## [1] "3QRYMNZ7FYHK7PZLS9XKVE66GMGTNR.json"
## [1] "3QUO65DNQUOHPNEMTTN7FZSDPBTOUV.json"
## [1] "3QXNC7EIPIVY2EY0TXQ5T29HENL90H.json"
## [1] "3R0T90IZ1SCXBGGOJJPZGKX5RORGCK.json"
## [1] "3R0T90IZ1SCXBGGOJJPZGKX5RPUCGL.json"
## [1] "3R2UR8A0IAG96R8HYYYUZ6RHJT9OXM.json"
## [1] "3R6P78PK7KBEXXIZ55KP5UX9FBGTG7.json"
## [1] "3RSDURM96AMCU5L29GH0D84CHXZYE0.json"
## [1] "3S06PH7KSR4ACTWZ1WZ7T3BHAYI1D1.json"
## [1] "3S96KQ6I9M4BLD883FJHZ9UC2JETDB.json"
## [1] "3SEPORI8WNZ99IEVPXHXVWNN2CBZA3.json"
## [1] "3T111IHZ5EQM28IZNA9KDYA4NC3R9E.json"
## [1] "3T111IHZ5EQM28IZNA9KDYA4NDGR9T.json"
## [1] "3TE3O857308B2OX021U53B2QH6KR2D.json"
## [1] "3TMSXRD2X609LZWQIR4XLR02HGJ1W9.json"
## [1] "3TU5ZICBRD1MC2KP53E68C5O7JDQ8F.json"
## [1] "3TU5ZICBRD1MC2KP53E68C5O7LIQ8O.json"
## [1] "3UOUJI6MTDE4JWSEUKA3YCJ61CIXUN.json"
## [1] "3VSOLARPKB9UJ6XXCK8OV07OHYM93R.json"
## [1] "3W2LOLRXLBF6J41QR70937OKY7ERK9.json"
## [1] "3W8CV64QJ2Z9DE4WR5XQZU8Y020H90.json"
## [1] "3X3OR7WPZZ0BL54CDY6ARQ6UXFTL8S.json"
## [1] "3X4MXAO0BGOXE4V7GLJCRIIFLDLWR6.json"
## [1] "3X66WABAJWI9YGK5QQEYNHTBLCYG38.json"
## [1] "3XC1O3LBOSMUJPW0GWH5IM2HBRETLN.json"
## [1] "3XLBSAQ9Z4CRQGGXIU5DL5LX14OZ7V.json"
## [1] "3YJ6NA41JBGQW7FTWUW8XXOSI0APJ0.json"
## [1] "3YOH7BII097YCBI70R5J44DNJCUVK7.json"
## [1] "3YOH7BII097YCBI70R5J44DNJDPKVT.json"
## [1] "3Z4AIRP3C6DOAZ1GSW0JNAE9QI0X19.json"
## [1] "3Z4AIRP3C6DOAZ1GSW0JNAE9QIPX1Y.json"
## [1] "3ZR9AIQJUB9X58SOC2UECUY1STL04M.json"

Filter out participants and clean up.

d <- all.data %>%
  select(subid, answer.scale, answer.judgment) %>%
  rename(judgment = answer.judgment) %>%
  filter(answer.scale != "training1" & answer.scale != "training2") %>%
  separate(answer.scale, into = c("utterance", "inference", "context"), sep = "_") 

d$inference <- as.factor(d$inference)
d$context <- as.factor(d$context)

d1 <- d %>%
  mutate(bound = factor(substring(inference, 1, 3),
                           levels = c("and", "but"),
                           labels = c("lower", "upper")),
         scale = factor(as.numeric(grepl("some", utterance)), 
                        levels = c(0, 1), 
                        labels = c("ad-hoc","scalar")),
         utt_valence = factor(as.numeric(grepl("love", utterance, 
                                               ignore.case=TRUE)), 
                            levels = c(0, 1), 
                            labels = c("didnt_like", "like")),
         condition = str_c(utt_valence, "-", inference, "-", context))
ms <- d1 %>%
  group_by(utt_valence, context) %>%
  mutate(n.total = n()) %>%
  group_by(utt_valence, context, judgment) %>%
  summarize(n = n(),
            n.total = n.total[1],
            mean = n / n.total,
            cih = binom.bayes(n, n.total)$lower,
            cil = binom.bayes(n, n.total)$upper)

qplot(utt_valence, mean, ymax=cih, ymin=cil, 
      fill = context, 
      stat="identity", position=position_dodge(width=.9),
      geom=c("bar","linerange"),
      data=subset(ms, judgment == "yes")) + 
  xlab("Valence") +
  ylab("Proportion of judgments 'possible that all'") + 
  ylim(c(0,1)) + 
  geom_hline(yintercept=.5, lty=2) +
  ggtitle("Utterance x Valence")

plot of chunk unnamed-chunk-3

lmer <- glmer(judgment ~ utt_valence * context + (utt_valence | subid), data=d1, family=binomial)
summary(lmer)
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: judgment ~ utt_valence * context + (utt_valence | subid)
##    Data: d1
## 
##      AIC      BIC   logLik deviance df.resid 
##      486      514     -236      472      393 
## 
## Scaled residuals: 
##    Min     1Q Median     3Q    Max 
## -2.461 -0.641  0.248  0.613  2.308 
## 
## Random effects:
##  Groups Name            Variance Std.Dev. Corr 
##  subid  (Intercept)     3.72     1.93          
##         utt_valencelike 1.52     1.23     -0.82
## Number of obs: 400, groups:  subid, 93
## 
## Fixed effects:
##                                  Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                         2.076      0.511    4.06  4.8e-05 ***
## utt_valencelike                    -1.526      0.546   -2.80   0.0052 ** 
## contextutterance                   -1.150      0.434   -2.65   0.0081 ** 
## utt_valencelike:contextutterance   -0.291      0.577   -0.50   0.6145    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) utt_vl cntxtt
## utt_valnclk -0.867              
## contxtttrnc -0.680  0.638       
## utt_vlnclk:  0.516 -0.700 -0.754