Determining the p-value from a chi-squared test statistic in R:

rr pchisq(24.73, df = 5, lower.tail = FALSE)

[1] 0.0001570929

Using the chi-squared function in R:

First entire in the obeserved and expected values as a numerical vector:

dice_obs <- c(53222, 52118, 52465, 52338, 52244, 53285)
exp = 52612/315672
dice_exp <- c(exp, exp, exp, exp, exp, exp)

Then run the chi-squared test:

chisq.test(dice_obs, p = dice_exp)

    Chi-squared test for given probabilities

data:  dice_obs
X-squared = 24.732, df = 5, p-value = 0.000157

Sometimes we want to see the expected values that R calculated for us. We can do this by grabbing them out of what the chi squared function returns:

rr names(chisq.test(dice_obs, p = dice_exp)) dice_exp_values <- chisq.test(dice_obs, p = dice_exp)$expected

We may be interested in making visualizations of this data as well. Here is a customized barplot of the results:

barplot(dice_obs, ylim = c(50000, 60000), xpd = FALSE )
abline(h=50000)
abline(h = 52612, lty = 3)

For contingency tables, we need to first create a matrix, then give that to the chi-squared test. Additionally, matrices are well-suited for making barplots of the data:

popular <- matrix(c(63, 31, 25, 88, 55, 33, 96, 55, 32), byrow = TRUE, nrow = 3)
chisq.test(popular)

    Pearson's Chi-squared test

data:  popular
X-squared = 1.3121, df = 4, p-value = 0.8593
barplot(popular, beside = TRUE, names = c("Grades", "Popular", "Sports"), legend = c("4th", "5th", "6th"), ylim = c(0,100))

Iran election example:

rr Iran_obs <- c(338, 136, 30) Iran_exp <- c(.6329, .3410, .0261) chisq.test(Iran_obs, p = Iran_exp)


    Chi-squared test for given probabilities

data:  Iran_obs
X-squared = 30.19, df = 2, p-value = 2.781e-07
LS0tCnRpdGxlOiAiQ2hpIFNxdWFyZWQgRGVtb25zdHJhdGlvbnMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkRldGVybWluaW5nIHRoZSBwLXZhbHVlIGZyb20gYSBjaGktc3F1YXJlZCB0ZXN0IHN0YXRpc3RpYyBpbiBSOgpgYGB7cn0KcGNoaXNxKDI0LjczLCBkZiA9IDUsIGxvd2VyLnRhaWwgPSBGQUxTRSkKYGBgCgpVc2luZyB0aGUgY2hpLXNxdWFyZWQgZnVuY3Rpb24gaW4gUjoKCkZpcnN0IGVudGlyZSBpbiB0aGUgb2Jlc2VydmVkIGFuZCBleHBlY3RlZCB2YWx1ZXMgYXMgYSBudW1lcmljYWwgdmVjdG9yOgoKYGBge3J9CmRpY2Vfb2JzIDwtIGMoNTMyMjIsIDUyMTE4LCA1MjQ2NSwgNTIzMzgsIDUyMjQ0LCA1MzI4NSkKZXhwID0gNTI2MTIvMzE1NjcyCmRpY2VfZXhwIDwtIGMoZXhwLCBleHAsIGV4cCwgZXhwLCBleHAsIGV4cCkKYGBgCgpUaGVuIHJ1biB0aGUgY2hpLXNxdWFyZWQgdGVzdDoKCmBgYHtyfQpjaGlzcS50ZXN0KGRpY2Vfb2JzLCBwID0gZGljZV9leHApCmBgYApTb21ldGltZXMgd2Ugd2FudCB0byBzZWUgdGhlIGV4cGVjdGVkIHZhbHVlcyB0aGF0IFIgY2FsY3VsYXRlZCBmb3IgdXMuIFdlIGNhbiBkbyB0aGlzIGJ5IGdyYWJiaW5nIHRoZW0gb3V0IG9mIHdoYXQgdGhlIGNoaSBzcXVhcmVkIGZ1bmN0aW9uIHJldHVybnM6CgpgYGB7cn0KbmFtZXMoY2hpc3EudGVzdChkaWNlX29icywgcCA9IGRpY2VfZXhwKSkKZGljZV9leHBfdmFsdWVzIDwtIGNoaXNxLnRlc3QoZGljZV9vYnMsIHAgPSBkaWNlX2V4cCkkZXhwZWN0ZWQKYGBgCgpXZSBtYXkgYmUgaW50ZXJlc3RlZCBpbiBtYWtpbmcgdmlzdWFsaXphdGlvbnMgb2YgdGhpcyBkYXRhIGFzIHdlbGwuIEhlcmUgaXMgYSBjdXN0b21pemVkIGJhcnBsb3Qgb2YgdGhlIHJlc3VsdHM6CmBgYHtyfQpiYXJwbG90KGRpY2Vfb2JzLCB5bGltID0gYyg1MDAwMCwgNjAwMDApLCB4cGQgPSBGQUxTRSApCmFibGluZShoPTUwMDAwKQphYmxpbmUoaCA9IDUyNjEyLCBsdHkgPSAzKQpgYGAKCgpGb3IgY29udGluZ2VuY3kgdGFibGVzLCB3ZSBuZWVkIHRvIGZpcnN0IGNyZWF0ZSBhIG1hdHJpeCwgdGhlbiBnaXZlIHRoYXQgdG8gdGhlIGNoaS1zcXVhcmVkIHRlc3QuIEFkZGl0aW9uYWxseSwgbWF0cmljZXMgYXJlIHdlbGwtc3VpdGVkIGZvciBtYWtpbmcgYmFycGxvdHMgb2YgdGhlIGRhdGE6CgpgYGB7cn0KcG9wdWxhciA8LSBtYXRyaXgoYyg2MywgMzEsIDI1LCA4OCwgNTUsIDMzLCA5NiwgNTUsIDMyKSwgYnlyb3cgPSBUUlVFLCBucm93ID0gMykKY2hpc3EudGVzdChwb3B1bGFyKQpiYXJwbG90KHBvcHVsYXIsIGJlc2lkZSA9IFRSVUUsIG5hbWVzID0gYygiR3JhZGVzIiwgIlBvcHVsYXIiLCAiU3BvcnRzIiksIGxlZ2VuZCA9IGMoIjR0aCIsICI1dGgiLCAiNnRoIiksIHlsaW0gPSBjKDAsMTAwKSkKYGBgCgpJcmFuIGVsZWN0aW9uIGV4YW1wbGU6CgpgYGB7cn0KSXJhbl9vYnMgPC0gYygzMzgsIDEzNiwgMzApCklyYW5fZXhwIDwtIGMoLjYzMjksIC4zNDEwLCAuMDI2MSkKY2hpc3EudGVzdChJcmFuX29icywgcCA9IElyYW5fZXhwKQpgYGAKCg==