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?"))
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