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
v3 <- data.frame()
files <- dir(paste0(raw.data.path,"v3/"),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,"v3/",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)
  jso1$expt <- "v3"
  
  ## now here's where data get bound together
  v3 <- rbind(v3, jso1)
}
## [1] "308Q0PEVB8D999FGXNFBZ69D0YL9IT.json"
## [1] "30H4UDGLT2IGXFLEZR90DPG9MD8MP6.json"
## [1] "30IQTZXKAK6O3AGYWDWJ95VZL7R0X4.json"
## [1] "31HQ4X3T3SAT4PJLRWCF8H6V9Q4SL1.json"
## [1] "31N2WW6R9RQ3KGOAF68G5WTZKEL3FH.json"
## [1] "31T4R4OBOSGEIN5NQGL5A7KCS3AC7F.json"
## [1] "326O153BMIY9WUQBDKUM0NUBZQZEDC.json"
## [1] "32KTQ2V7RDFV5S57I2D3RZGUH789MC.json"
## [1] "32XVDSJFPZXK58K8XTYOHC8GB1X2MC.json"
## [1] "32Z9ZLUT1LKCK182TUG8WK3NVKTOHU.json"
## [1] "32ZKVD547FND7ZCUA4MKM62E5GPB33.json"
## [1] "336KAV9KYQSKZP9MGWMZB7VNKBT2YK.json"
## [1] "33FBRBDW6OZII1A60LDBO7G73N9C8V.json"
## [1] "345LHZDEDXSS3YL0AV3FRWU2U1U3UA.json"
## [1] "34PGFRQONOBGGGCU8GA3PRWOBESWJF.json"
## [1] "34T446B1C0E00C535H0WVSAPKP3C0E.json"
## [1] "354P56DE9K3UP4UJN2B5PCOUE887SK.json"
## [1] "3570Y55XZPJAEJHTFB7ODBPOUUXYGY.json"
## [1] "369J354OFDA8VZ7N9SCWUK5VVKRG63.json"
## [1] "37UQDCYH6XVAHWBNHXGA0Z81DA6V7D.json"
## [1] "384PI804XS1G7TUZ23QWAXE76SO0SV.json"
## [1] "386PBUZZXFX05M0V4231GGF8D71JLM.json"
## [1] "38YMOXR4MUZ4SLXNOXGEGNRJP896WK.json"
## [1] "3AMYWKA6YBMWNCOLXBP4ZTEXM6XO6D.json"
## [1] "3BXQMRHWKZYTPKTAGD8UNV38USFMUD.json"
## [1] "3BXQMRHWKZYTPKTAGD8UNV38USGUMM.json"
## [1] "3C44YUNSI1PDTLF1MYAXUZTFDWQDPJ.json"
## [1] "3CN4LGXD5XOU23O9KA5N4MSL4P2Y4P.json"
## [1] "3CP1TO84PT1MX1Z25UH20AXUP6K25Z.json"
## [1] "3DEL4X4EL6LL05CJ4L7S1XPJXKCXY8.json"
## [1] "3DIP6YHAPCSXFZUKWCJ6EVGAOZ2E86.json"
## [1] "3E1QT0TDFP99V4W6SV9XZAE2GS38I3.json"
## [1] "3EICBYG644W72I6PRPA2DXPLJYDCJP.json"
## [1] "3ERMJ6L4DYSRR9HE35FJD3POMHWM7P.json"
## [1] "3F6HPJW4JD0GAKEM1V4BQAA79342WW.json"
## [1] "3FE7TXL1LINBQNI0PM55YLSLL222Q7.json"
## [1] "3FFJ6VRIL1ORDFR3XRWI6V8KXUYI0X.json"
## [1] "3FTYUGLFSUL90BXI2J1JWTOYMXU5DW.json"
## [1] "3GFK2QRXX9H89HX9JE69OHDJTD0W5W.json"
## [1] "3HL8HNGX451PZIDQWF9QW9WLK7X9F8.json"
## [1] "3HUTX6F6VUN85B5KA9D19GXL62UO2X.json"
## [1] "3JAOYWH7VI4BZANMIQCORM15H2C9L4.json"
## [1] "3JAOYWH7VI4BZANMIQCORM15H2P9LH.json"
## [1] "3KJYX6QCM9B31RCPI6573PDA45EVJS.json"
## [1] "3KRVW3HTZNLDA716R8DU8ULK9VTSM2.json"
## [1] "3KYQYYSHYV7V8L307YXI5ZOP3SOOD9.json"
## [1] "3LEIZ60CDJZV4Z4QXR3XZ1C3WCFZ9A.json"
## [1] "3LO69W1SU3DQEKAUWWIYJ3NSLF8LG8.json"
## [1] "3LO69W1SU3DQEKAUWWIYJ3NSLG8GL5.json"
## [1] "3LQ8PUHQFLS2OFXZVZ33CN71JBTHIR.json"
## [1] "3LQ8PUHQFLS2OFXZVZ33CN71JDSIHV.json"
## [1] "3LQ8PUHQFLS2OFXZVZ33CN71JDXHIZ.json"
## [1] "3LUY3GC63Z0XCCERVL7BU7JJRMZ7PY.json"
## [1] "3M0BCWMB8VWAYXEIKOXMR3DB39IBW8.json"
## [1] "3M0BCWMB8VWAYXEIKOXMR3DB39TBWJ.json"
## [1] "3M0BCWMB8VWAYXEIKOXMR3DB39TWB4.json"
## [1] "3M0NZ3JDP1YC3C2EU1QGNL71AF0Z5L.json"
## [1] "3M68NM076H7ZKPG1P368TOJ2XSRR6X.json"
## [1] "3M68NM076H7ZKPG1P368TOJ2XTXR65.json"
## [1] "3MH9DQ757WCTXAXO5AAZAQJBY6KUGU.json"
## [1] "3NC5L260MOMS65HWY4S8TZRAF5DOFT.json"
## [1] "3NC5L260MOMS65HWY4S8TZRAF5IFOP.json"
## [1] "3NGI5ARFTT5J1QZP65Q2TXS6O0YP1I.json"
## [1] "3NL0RFNU0FNZIYZSGV4WVEDA6AT4K0.json"
## [1] "3OJSZ2ATDSWTJ2W8B6YXW1E20O657M.json"
## [1] "3OVHNO1VE6177PH7978ZLXVTNX7DZI.json"
## [1] "3Q5C1WP23M1F8GH6MQHOVRNPX0N15Y.json"
## [1] "3QBD8R3Z21JI8PK7ENWP2VUJQE1O40.json"
## [1] "3QHK8ZVMIMIUN32JGAQKISWV52XLB8.json"
## [1] "3QIYRE09Y3HJY5NCQQDAP8NBOLQ1NR.json"
## [1] "3QIYRE09Y3HJY5NCQQDAP8NBOLS1NT.json"
## [1] "3QXNC7EIPIVY2EY0TXQ5T29HE4109M.json"
## [1] "3S0TNUHWKTISNTGK0H8M8DYPONTD84.json"
## [1] "3S96KQ6I9M4BLD883FJHZ9UC2ZBTD4.json"
## [1] "3SB5N7Y3O34DHOL873WFLJV4IH5G02.json"
## [1] "3TDXMTX3CBUMRQDIZGCZFWIBAXD6IF.json"
## [1] "3TESA3PJ31AACCO17BH8WLMEH68MMH.json"
## [1] "3TMSXRD2X609LZWQIR4XLR02HZF1W7.json"
## [1] "3TUI152ZZBN412046I5RT2IGTYY1Q3.json"
## [1] "3U4J9857OEBV8IDHCGPAZNEUAH8B73.json"
## [1] "3UJ1CZ6IZHPF20G0Z9W8RSAYN0C5SY.json"
## [1] "3URFVVM165ITORSTV2YOVXZH9W7UZC.json"
## [1] "3URFVVM165ITORSTV2YOVXZH9YEUZN.json"
## [1] "3VD82FOHKQOL3TXM7227LT67ISFCO0.json"
## [1] "3VHP9MDGRNKRXGKT8ZJHYZXTQR1CFR.json"
## [1] "3VNXK88KKCIEVFZGWUEUEVZ780T9V2.json"
## [1] "3VW04L3ZLT6W00M9ZPLQIJIAVEDXXX.json"
## [1] "3W8CV64QJ2Z9DE4WR5XQZU8Y0L69H0.json"
## [1] "3WQ3B2KGE8GHXWYFN081YDNH7YY1BS.json"
## [1] "3X4MXAO0BGOXE4V7GLJCRIIFLUKWR3.json"
## [1] "3X66WABAJWI9YGK5QQEYNHTBLSEG3K.json"
## [1] "3X87C8JFV6B4VMZYJ1KBP35PJXJQSI.json"
## [1] "3XIQGXAUMC82LLGIHCHSOK5MTMYX74.json"
## [1] "3XXU1SWE8MVC7X85L345PXK1KMTA0L.json"
## [1] "3YOH7BII097YCBI70R5J44DNJUYKV0.json"
## [1] "3YZ8UPK3VTMGGYHJ3OEGKZYW0EACUK.json"
## [1] "3Z4GS9HPNVA866ARZZDUULSYRSR77P.json"
## [1] "3Z4GS9HPNVA866ARZZDUULSYRT6776.json"
## [1] "3ZAK8W07I4EWM6M3R8LWPYWVRPC0UE.json"
## [1] "3ZWFC4W1UU7V3I9CQW9CNUWFQS5FR1.json"
v4 <- data.frame()
files <- dir(paste0(raw.data.path,"/v4"),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,"v4/",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)
  jso1$expt <- "v4"
  
  ## now here's where data get bound together
  v4 <- rbind(v4, jso1)
}
## [1] "30BXRYBRP4XKPAH4KG7IDEG9YPSHW5.json"
## [1] "30MVJZJNHMD54KZMF50BB7ODDGPJ90.json"
## [1] "30OG32W0SUBII6HO2E8PWS65DXWENV.json"
## [1] "32SVAV9L3F98OP724QMORVI8N1B3AD.json"
## [1] "336YQZE83VEC453VFC0MFJBSVE15MZ.json"
## [1] "33FBRBDW6OZII1A60LDBO7G73QJC8B.json"
## [1] "33M4IA01QG1C340XQQFYT1WMU0YXRD.json"
## [1] "34FNN24DCM9CYMS9YFOX9EYZ4O35YD.json"
## [1] "34QN5IT0TZRYO9FQO5KRT6E6U1180T.json"
## [1] "34YB12FSQYOAK2SFW8JDJG2HLN7GMK.json"
## [1] "358010RM5ET4WBHEZAK8UYLPF6BXV6.json"
## [1] "35H6S234SA0AF2I3SWT5QNE65EG56J.json"
## [1] "392CY0QWG1R8C394GSJKIYYXE9H4I8.json"
## [1] "39N5ACM9HEN1QV2KAI5V83APMFKP9V.json"
## [1] "3B1NLC6UGZWG55PSOOB50KWCQSGPGN.json"
## [1] "3BC8WZX3V3WS68ELHR964JAYTJBRR9.json"
## [1] "3BV8HQ2ZZW17L8UKNSKMYYUSXSEA6R.json"
## [1] "3C5W7UE9CFQL6ON5LIJH722COD9XMZ.json"
## [1] "3CP1TO84PT1MX1Z25UH20AXUP9I526.json"
## [1] "3CTOC39K37Q1Q1BT082RXBX7IQP7J0.json"
## [1] "3DEL4X4EL6LL05CJ4L7S1XPJXNIYXL.json"
## [1] "3DEL4X4EL6LL05CJ4L7S1XPJXNOYXR.json"
## [1] "3DL65MZB8DFZR2KXDOZBGHCTETIECD.json"
## [1] "3DOCMVPBTNEMCCU1VDB8MF0ERP9NN5.json"
## [1] "3DY4FPOOA1OKZFV2QBEG5GZ1EPPRV3.json"
## [1] "3E13VNJ1NNVRK4CLTA0IK0RU2PYI10.json"
## [1] "3E1QT0TDFP99V4W6SV9XZAE2GV8I8O.json"
## [1] "3E47SOBEYQWB77MJ97P21WAL6M3CIY.json"
## [1] "3E7TUJ2EGCMS1YZU59E089T08WGD94.json"
## [1] "3EA3QWIZ4IVSTOOUVTKSQ6APU81ITL.json"
## [1] "3EICBYG644W72I6PRPA2DXPLJ1GJC5.json"
## [1] "3ERET4BTVM90F454XQ0NCMOQS5GK9R.json"
## [1] "3FE7TXL1LINBQNI0PM55YLSLL52Q21.json"
## [1] "3FIJLY1B6U4AR5TXD45NIZW0PDCPFK.json"
## [1] "3HVVDCPGTESEJO3ZZB6VCU4DKRYTY1.json"
## [1] "3I7DHKZYGN06YVBETPW9KTRJYDG5FJ.json"
## [1] "3IX2EGZR7BJB8KV89M0X2SO7J2PJRH.json"
## [1] "3K3R2QNK8B3EI0AGR44PI9XOUWDU9X.json"
## [1] "3KAKFY4PGU2NU7Q0GEE18T6R09C3ID.json"
## [1] "3KIBXJ1WD5U3MR9AZFJ59CJFN44OKB.json"
## [1] "3KIBXJ1WD5U3MR9AZFJ59CJFN4XKO0.json"
## [1] "3KIBXJ1WD5U3MR9AZFJ59CJFN4YOK5.json"
## [1] "3KJYX6QCM9B31RCPI6573PDA48UJV2.json"
## [1] "3KWTYT08703SYNLAF0Z7F6W3V905LM.json"
## [1] "3KWTYT08703SYNLAF0Z7F6W3V915LN.json"
## [1] "3KYQYYSHYV7V8L307YXI5ZOP3V1ODS.json"
## [1] "3L6L49WXW0XW0FEP980QTPUS9NB54Z.json"
## [1] "3M0NZ3JDP1YC3C2EU1QGNL71AID5ZA.json"
## [1] "3MYYFCXHJ37UGC39Q4JHXMLHZWVG4Y.json"
## [1] "3NGI5ARFTT5J1QZP65Q2TXS6O3T1PV.json"
## [1] "3NPFYT4IZC4LEERJAFLMUXIFSRPXGJ.json"
## [1] "3OB0CAO74HPOEFC4ZHP6YB1P9XRYHK.json"
## [1] "3OE22WJIGIOKAZR286FB44ND4WIUQK.json"
## [1] "3OLQQLKKNSPMZGQ3NGGX3LPO4D4JE9.json"
## [1] "3PMBY0YE273IW6TG5DJPO3BINW29CY.json"
## [1] "3PWWM24LHSY5KJI43SO5CU7LRZK82C.json"
## [1] "3QAVNHZ3EM4P4TXRAWQONHCPNN9AL5.json"
## [1] "3QBD8R3Z21JI8PK7ENWP2VUJQIJO4Q.json"
## [1] "3QECW5O0KH1GH0TFO91Y1X6KPMIT59.json"
## [1] "3QECW5O0KH1GH0TFO91Y1X6KPMJT5A.json"
## [1] "3QFUFYSY9YFO2C7EFKDZF1L5YHGF4J.json"
## [1] "3QL2OFSM96I3L8XA6N2U6462SLQNCI.json"
## [1] "3QL2OFSM96I3L8XA6N2U6462SLRCN8.json"
## [1] "3QRYMNZ7FYHK7PZLS9XKVE66G7JTN0.json"
## [1] "3R6P78PK7KBEXXIZ55KP5UX9FVXGTF.json"
## [1] "3RGU30DZTA8KB4IG4E4GGTUXDFWJMZ.json"
## [1] "3S06PH7KSR4ACTWZ1WZ7T3BHAK0D13.json"
## [1] "3S4AW7T80BIA24HA1VGXAEQPVD2L4U.json"
## [1] "3SB4CE2TJVVK4NEGOFTCYB7CUWEAXM.json"
## [1] "3SBEHTYCWN3OAANO5Z7RYN249A9YIG.json"
## [1] "3SKEMFQBZ3501ZMUSYU9CQTF8ZUK8Y.json"
## [1] "3SPJ0334213K5L7UNHSRAOH4MP8YJ2.json"
## [1] "3TE3O857308B2OX021U53B2QHRWR2V.json"
## [1] "3TMSXRD2X609LZWQIR4XLR02H0X1WR.json"
## [1] "3TS1AR6UQQELLZPXHIB6ID5FPJ8F75.json"
## [1] "3TXD01ZLD4HDLU44A98Y11M8840U42.json"
## [1] "3TY7ZAOG5FKIJAHRXUHUJBNXP1V0K4.json"
## [1] "3UWN2HHPUY5JSPM639SUL9AKEO6NS6.json"
## [1] "3V5Q80FXIXRJJMCYRBT9LDZABDP32C.json"
## [1] "3VAR3R6G1P1JRQ79QQM2J7AOS448O6.json"
## [1] "3VE8AYVF8MXPLDUGRN3CWD1A03D8FK.json"
## [1] "3VHHR074H3H7LRZT3TE4DQAZMFWL7I.json"
## [1] "3WETL7AQWT8BIJVL9UV7JK2MVNA539.json"
## [1] "3WMINLGALB3W1P3LXJXPKYM2TELACF.json"
## [1] "3WQ3B2KGE8GHXWYFN081YDNH7ZEB1K.json"
## [1] "3WYGZ5XF3WFIKJ136W0ETHTGKT1SK6.json"
## [1] "3X4JMASXCM9HQ7DXRH41K84727B0B9.json"
## [1] "3X87C8JFV6B4VMZYJ1KBP35PJZVSQ0.json"
## [1] "3XIQGXAUMC82LLGIHCHSOK5MTO2X7C.json"
## [1] "3XM0HYN6NKZILRT1ITLH0HB0DCYEPS.json"
## [1] "3YMTUJH0DSGYLHPFA4IOW506PQOT45.json"
## [1] "3YOH7BII097YCBI70R5J44DNJX8KVG.json"
## [1] "3YOH7BII097YCBI70R5J44DNJXUKV2.json"
## [1] "3YWRV122CSZE4VR6MCYBID2DAQW8UN.json"
## [1] "3YZ8UPK3VTMGGYHJ3OEGKZYW0HFCUV.json"
## [1] "3Z3ZLGNNSIU0B5EJTMJAHVXDRJW3QJ.json"
## [1] "3Z4XG4ZF48R6LZL1RH9Y2K1H48CX83.json"
## [1] "3Z7EFSHGN9E8X2BE8TP346X0UZTXC5.json"
## [1] "3ZAK8W07I4EWM6M3R8LWPYWVRSL0UT.json"
## [1] "3ZOTGHDK5IB1AAMI4OS70YAP4YNOSY.json"
all.data <- rbind(v3, v4)

Filter out participants and clean up.

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

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

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("hate", "love")),
         condition = str_c(utt_valence, "-", inference))
ms <- d1 %>%
  group_by(expt, condition) %>%
  mutate(n.total = n()) %>%
  group_by(expt, condition, 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(condition, mean, ymax=cih, ymin=cil, 
      fill = judgment, 
      stat="identity", position=position_dodge(width=.9),
      geom=c("bar","linerange"),
      data=ms) + 
  facet_wrap(~expt) +
  ylab("Proportion of judgments") + 
  ylim(c(0,1)) + 
  geom_hline(yintercept=.5, lty=2) +
  ggtitle("comparing ver3 (like vs. didn't like) and ver4 (like vs. dislike)") +
  scale_x_discrete(labels=
                     c("some dislike-> 
                       everyone dislike?", 
                       "some like-> 
                       everyone like?"))

plot of chunk unnamed-chunk-3

d_table <- table(d1$condition, d1$judgment)
chisq.test(d_table)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  d_table
## X-squared = 16.85, df = 1, p-value = 4.041e-05
# a mixed model predicting participants' response as a function of condition and experiment
lmer <- glmer(judgment ~ expt * condition + (condition|subid), family=binomial, data=d1)
summary(lmer)
## Generalized linear mixed model fit by maximum likelihood (Laplace
##   Approximation) [glmerMod]
##  Family: binomial  ( logit )
## Formula: judgment ~ expt * condition + (condition | subid)
##    Data: d1
## 
##      AIC      BIC   logLik deviance df.resid 
##    516.6    544.6   -251.3    502.6      393 
## 
## Scaled residuals: 
##    Min     1Q Median     3Q    Max 
## -2.329 -0.611 -0.345  0.650  1.644 
## 
## Random effects:
##  Groups Name                    Variance Std.Dev. Corr
##  subid  (Intercept)             2.447179 1.5643       
##         conditionlove-andAlsAll 0.000545 0.0234   1.00
## Number of obs: 400, groups:  subid, 163
## 
## Fixed effects:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                       0.870      0.316    2.75   0.0059 ** 
## exptv4                           -0.860      0.417   -2.06   0.0390 *  
## conditionlove-andAlsAll          -1.722      0.394   -4.37  1.3e-05 ***
## exptv4:conditionlove-andAlsAll    0.850      0.515    1.65   0.0987 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) exptv4 cnd-AA
## exptv4      -0.707              
## cndtnlv-nAA -0.562  0.414       
## exptv4:c-AA  0.446 -0.614 -0.691