Definition per Probability Theory

In probability theory, the law of large numbers (LLN) is a theorem that describes the result of performing the same experiment a large number of times. According to the law, the average of the results obtained from a large number of trials should be close to the expected value, and will tend to become closer as more trials are performed.

Create Variables for Observations

  • N represents the total number of observations, or in this example, coin flips.
  • o represents the number of observations to display to look at the results as they are run.
  • o should not exceed 100 for practical purposes.

Comment out set.seed() to achieve randomness on subsequent runs

N <- 10000  
o <- 10   
set.seed(1963)  # added for the example - comment out for tests

Create Variables for Iterations

Now we will set 3 variables to simulate the coin flips.

  • x - stores the sample flips as a 0 or 1. The number of flips will me set by the value of N set previously.
  • s - stores a running total of the occurrences of a value of “1”.
  • r.avg - stores the running avg with each flip.
x <- sample(0:1, N, replace = T)
s <- cumsum(x)    
r.avg <- s/(1:N)

Store the Means

Assign the running statistics gathered to the r.stats variable. Show the results (should limit to approx 100 observations in this list)

r.stats <- round(cbind(x,s,r.avg), 3)[1:o,]
print(r.stats)
      x s r.avg
 [1,] 1 1 1.000
 [2,] 0 1 0.500
 [3,] 0 1 0.333
 [4,] 1 2 0.500
 [5,] 0 2 0.400
 [6,] 1 3 0.500
 [7,] 0 3 0.429
 [8,] 1 4 0.500
 [9,] 1 5 0.556
[10,] 0 5 0.500

Graph the Results

Create a plot chart to illustrate how the means of the sample approximately equals the population with large sample sizes. scipen used to influence the x axis to use whole numbers for large observation counts

The plot uses line charts to reflect (1) the running averages of the coin flips and (2) the expected average of the population (.5).

options(scipen = 10)  
plot(r.avg, ylim=c(.30, .70), type = "l", xlab = "Observations"
     ,ylab = "Probability", lwd = 2)
lines(c(0,N), c(.50,.50),col="red", lwd = 2)

LS0tDQp0aXRsZTogIkxhdyBvZiBMYXJnZSBOdW1iZXJzIg0KYXV0aG9yOiAiUGF0cmljayBEb2xpbmdlciINCmRhdGU6ICIwMS8wMy8yMDIwIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIHRoZW1lOiB1bml0ZWQNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogMw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogZmFsc2UNCiAgICBkZl9wcmludDoga2FibGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkNCmBgYA0KIyMgRGVmaW5pdGlvbiBwZXIgUHJvYmFiaWxpdHkgVGhlb3J5DQoqKipJbiBwcm9iYWJpbGl0eSB0aGVvcnksIHRoZSBsYXcgb2YgbGFyZ2UgbnVtYmVycyAoTExOKSBpcyBhIHRoZW9yZW0gdGhhdCBkZXNjcmliZXMgdGhlIHJlc3VsdCBvZiBwZXJmb3JtaW5nIHRoZSBzYW1lIGV4cGVyaW1lbnQgYSBsYXJnZSBudW1iZXIgb2YgdGltZXMuIEFjY29yZGluZyB0byB0aGUgbGF3LCB0aGUgYXZlcmFnZSBvZiB0aGUgcmVzdWx0cyBvYnRhaW5lZCBmcm9tIGEgbGFyZ2UgbnVtYmVyIG9mIHRyaWFscyBzaG91bGQgYmUgY2xvc2UgdG8gdGhlIGV4cGVjdGVkIHZhbHVlLCBhbmQgd2lsbCB0ZW5kIHRvIGJlY29tZSBjbG9zZXIgYXMgbW9yZSB0cmlhbHMgYXJlIHBlcmZvcm1lZC4qKiogDQoNCiMjIyMjIFtXaWtpcGVkaWFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhd19vZl9sYXJnZV9udW1iZXJzKSAgDQoNCiMjIyBDcmVhdGUgVmFyaWFibGVzIGZvciBPYnNlcnZhdGlvbnMNCi0gTiByZXByZXNlbnRzIHRoZSB0b3RhbCBudW1iZXIgb2Ygb2JzZXJ2YXRpb25zLCBvciBpbiB0aGlzIGV4YW1wbGUsIGNvaW4gZmxpcHMuDQotIG8gcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIG9ic2VydmF0aW9ucyB0byBkaXNwbGF5IHRvIGxvb2sgYXQgdGhlIHJlc3VsdHMgYXMgdGhleSBhcmUgcnVuLg0KLSBvIHNob3VsZCBub3QgZXhjZWVkIDEwMCBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLg0KDQoqKipDb21tZW50IG91dCBzZXQuc2VlZCgpIHRvIGFjaGlldmUgcmFuZG9tbmVzcyBvbiBzdWJzZXF1ZW50IHJ1bnMqKioNCg0KYGBge3IgY29pbl9mbGlwc30NCk4gPC0gMTAwMDAgIA0KbyA8LSAxMCAgIA0Kc2V0LnNlZWQoMTk2MykgICMgYWRkZWQgZm9yIHRoZSBleGFtcGxlIC0gY29tbWVudCBvdXQgZm9yIHRlc3RzDQpgYGANCg0KIyMjIENyZWF0ZSBWYXJpYWJsZXMgZm9yIEl0ZXJhdGlvbnMNCk5vdyB3ZSB3aWxsIHNldCAzIHZhcmlhYmxlcyB0byBzaW11bGF0ZSB0aGUgY29pbiBmbGlwcy4NCg0KLSB4IC0gc3RvcmVzIHRoZSBzYW1wbGUgZmxpcHMgYXMgYSAwIG9yIDEuIFRoZSBudW1iZXIgb2YgZmxpcHMgd2lsbCBtZSBzZXQgYnkgdGhlIHZhbHVlIG9mIE4gc2V0IHByZXZpb3VzbHkuDQotIHMgLSBzdG9yZXMgYSBydW5uaW5nIHRvdGFsIG9mIHRoZSBvY2N1cnJlbmNlcyBvZiBhIHZhbHVlIG9mIOKAnDHigJ0uDQotIHIuYXZnIC0gc3RvcmVzIHRoZSBydW5uaW5nIGF2ZyB3aXRoIGVhY2ggZmxpcC4NCg0KYGBge3J9DQp4IDwtIHNhbXBsZSgwOjEsIE4sIHJlcGxhY2UgPSBUKQ0KcyA8LSBjdW1zdW0oeCkgICAgDQpyLmF2ZyA8LSBzLygxOk4pDQpgYGANCg0KIyMjIFN0b3JlIHRoZSBNZWFucw0KQXNzaWduIHRoZSBydW5uaW5nIHN0YXRpc3RpY3MgZ2F0aGVyZWQgdG8gdGhlIHIuc3RhdHMgdmFyaWFibGUuIFNob3cgdGhlIHJlc3VsdHMgKHNob3VsZCBsaW1pdCB0byBhcHByb3ggMTAwIG9ic2VydmF0aW9ucyBpbiB0aGlzIGxpc3QpDQpgYGB7cn0NCnIuc3RhdHMgPC0gcm91bmQoY2JpbmQoeCxzLHIuYXZnKSwgMylbMTpvLF0NCnByaW50KHIuc3RhdHMpDQpgYGANCg0KIyMjIEdyYXBoIHRoZSBSZXN1bHRzDQoNCkNyZWF0ZSBhIHBsb3QgY2hhcnQgdG8gaWxsdXN0cmF0ZSBob3cgdGhlIG1lYW5zIG9mIHRoZSBzYW1wbGUgYXBwcm94aW1hdGVseSBlcXVhbHMgdGhlIHBvcHVsYXRpb24gd2l0aCBsYXJnZSBzYW1wbGUgc2l6ZXMuDQoqc2NpcGVuIHVzZWQgdG8gaW5mbHVlbmNlIHRoZSB4IGF4aXMgdG8gdXNlIHdob2xlIG51bWJlcnMgZm9yIGxhcmdlIG9ic2VydmF0aW9uIGNvdW50cyoNCg0KVGhlIHBsb3QgdXNlcyBsaW5lIGNoYXJ0cyB0byByZWZsZWN0ICgxKSB0aGUgcnVubmluZyBhdmVyYWdlcyBvZiB0aGUgY29pbiBmbGlwcyBhbmQgKDIpIHRoZSBleHBlY3RlZCBhdmVyYWdlIG9mIHRoZSBwb3B1bGF0aW9uICguNSkuDQpgYGB7cn0NCm9wdGlvbnMoc2NpcGVuID0gMTApICANCnBsb3Qoci5hdmcsIHlsaW09YyguMzAsIC43MCksIHR5cGUgPSAibCIsIHhsYWIgPSAiT2JzZXJ2YXRpb25zIg0KICAgICAseWxhYiA9ICJQcm9iYWJpbGl0eSIsIGx3ZCA9IDIpDQpsaW5lcyhjKDAsTiksIGMoLjUwLC41MCksY29sPSJyZWQiLCBsd2QgPSAyKQ0KYGBgDQoNCg0K