There are often occasions when it is useful to take a random sample from an already existing vector, or to generate data according to some distribution. We will discuss methods for creating randomly generated vectors in this notebook.
Sampling from a Vector
We can use the sample() function to randomly select some number of elements from a vector. We can control the number of elements selected using the size parameter.
v <- c(71, 58, 38, 99, 48, 55,
25, 67, 32, 36, 84, 18)
sample(v, size=3)
[1] 99 67 32
Note that we will get a different result each time we run the sample command.
sample(v, size=3)
[1] 32 58 48
By default, the sampling is performed without replacement. We can alter this behavior by setting replace=TRUE.
sample(v, size=6, replace=TRUE)
[1] 25 55 58 84 71 58
Sampling from a Normal Distribution
We can use the rnorm function to generate a random sample according to a normal distribution. In the cell below, we generate 300 values from a normal distribution with a mean of 20 and a standard deviation of 4. We then display the first 10 values in our random sample.
sample_1 <- rnorm(n=300, mean=20, sd=4)
sample_1[1:10]
[1] 22.08440 22.22782 29.26132 22.82613 15.76703 20.28913 19.45237 17.68621 21.04101 20.24607
It is difficult to tell that our sample is randomly generate just by looking at the values for 10 (or all 300) observations. However, recall that for a normal distribution:
- 68.26% of all observations are within 1 standard deviation from the mean.
- 95.44% of all observations are within 1 standard deviation from the mean.
- 99.73% of all observations are within 1 standard deviation from the mean.
Since we are working with a randomly generated sample, our proportions might vary a bit from this, but they should be similar.
mean((sample_1 > 16) & (sample_1 < 24))
[1] 0.6633333
mean((sample_1 > 12) & (sample_1 < 28))
[1] 0.95
mean((sample_1 > 8) & (sample_1 < 32))
[1] 0.9933333
LS0tDQp0aXRsZTogIkFwcGVuZGl4IEEuNCAtIFJhbmRvbSBTYW1wbGluZyBpbiBSIg0KYXV0aG9yOiAiUm9iYmllIEJlYW5lIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOg0KICAgIHRoZW1lOiBmbGF0bHkNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDQNCi0tLQ0KDQpUaGVyZSBhcmUgb2Z0ZW4gb2NjYXNpb25zIHdoZW4gaXQgaXMgdXNlZnVsIHRvIHRha2UgYSByYW5kb20gc2FtcGxlIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyB2ZWN0b3IsIG9yIHRvIGdlbmVyYXRlIGRhdGEgYWNjb3JkaW5nIHRvIHNvbWUgZGlzdHJpYnV0aW9uLiBXZSB3aWxsIGRpc2N1c3MgbWV0aG9kcyBmb3IgY3JlYXRpbmcgcmFuZG9tbHkgZ2VuZXJhdGVkIHZlY3RvcnMgaW4gdGhpcyBub3RlYm9vay4NCg0KIyMjICoqU2FtcGxpbmcgZnJvbSBhIFZlY3RvcioqDQoNCldlIGNhbiB1c2UgdGhlIGBzYW1wbGUoKWAgZnVuY3Rpb24gdG8gcmFuZG9tbHkgc2VsZWN0IHNvbWUgbnVtYmVyIG9mIGVsZW1lbnRzIGZyb20gYSB2ZWN0b3IuIFdlIGNhbiBjb250cm9sIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgc2VsZWN0ZWQgdXNpbmcgdGhlIGBzaXplYCBwYXJhbWV0ZXIuIA0KDQpgYGB7cn0NCnYgPC0gYyg3MSwgNTgsIDM4LCA5OSwgNDgsIDU1LA0KICAgICAgIDI1LCA2NywgMzIsIDM2LCA4NCwgMTgpDQoNCnNhbXBsZSh2LCBzaXplPTMpDQpgYGANCg0KTm90ZSB0aGF0IHdlIHdpbGwgZ2V0IGEgZGlmZmVyZW50IHJlc3VsdCBlYWNoIHRpbWUgd2UgcnVuIHRoZSBgc2FtcGxlYCBjb21tYW5kLiANCg0KYGBge3J9DQpzYW1wbGUodiwgc2l6ZT0zKQ0KYGBgDQoNCkJ5IGRlZmF1bHQsIHRoZSBzYW1wbGluZyBpcyBwZXJmb3JtZWQgd2l0aG91dCByZXBsYWNlbWVudC4gV2UgY2FuIGFsdGVyIHRoaXMgYmVoYXZpb3IgYnkgc2V0dGluZyBgcmVwbGFjZT1UUlVFYC4gDQoNCmBgYHtyfQ0Kc2FtcGxlKHYsIHNpemU9NiwgcmVwbGFjZT1UUlVFKQ0KYGBgDQoNCg0KIyMjICoqU2FtcGxpbmcgZnJvbSBhIE5vcm1hbCBEaXN0cmlidXRpb24qKg0KDQpXZSBjYW4gdXNlIHRoZSBgcm5vcm1gIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHNhbXBsZSBhY2NvcmRpbmcgdG8gYSBub3JtYWwgZGlzdHJpYnV0aW9uLiBJbiB0aGUgY2VsbCBiZWxvdywgd2UgZ2VuZXJhdGUgMzAwIHZhbHVlcyBmcm9tIGEgbm9ybWFsIGRpc3RyaWJ1dGlvbiB3aXRoIGEgbWVhbiBvZiAyMCBhbmQgYSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgNC4gV2UgdGhlbiBkaXNwbGF5IHRoZSBmaXJzdCAxMCB2YWx1ZXMgaW4gb3VyIHJhbmRvbSBzYW1wbGUuIA0KDQpgYGB7cn0NCnNhbXBsZV8xIDwtIHJub3JtKG49MzAwLCBtZWFuPTIwLCBzZD00KQ0Kc2FtcGxlXzFbMToxMF0NCmBgYA0KDQpJdCBpcyBkaWZmaWN1bHQgdG8gdGVsbCB0aGF0IG91ciBzYW1wbGUgaXMgcmFuZG9tbHkgZ2VuZXJhdGUganVzdCBieSBsb29raW5nIGF0IHRoZSB2YWx1ZXMgZm9yIDEwIChvciBhbGwgMzAwKSBvYnNlcnZhdGlvbnMuIEhvd2V2ZXIsIHJlY2FsbCB0aGF0IGZvciBhIG5vcm1hbCBkaXN0cmlidXRpb246DQoNCiogNjguMjYlIG9mIGFsbCBvYnNlcnZhdGlvbnMgYXJlIHdpdGhpbiAxIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBtZWFuLg0KKiA5NS40NCUgb2YgYWxsIG9ic2VydmF0aW9ucyBhcmUgd2l0aGluIDEgc3RhbmRhcmQgZGV2aWF0aW9uIGZyb20gdGhlIG1lYW4uIA0KKiA5OS43MyUgb2YgYWxsIG9ic2VydmF0aW9ucyBhcmUgd2l0aGluIDEgc3RhbmRhcmQgZGV2aWF0aW9uIGZyb20gdGhlIG1lYW4uIA0KDQpTaW5jZSB3ZSBhcmUgd29ya2luZyB3aXRoIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHNhbXBsZSwgb3VyIHByb3BvcnRpb25zIG1pZ2h0IHZhcnkgYSBiaXQgZnJvbSB0aGlzLCBidXQgdGhleSBzaG91bGQgYmUgc2ltaWxhci4gDQoNCmBgYHtyfQ0KbWVhbigoc2FtcGxlXzEgPiAxNikgJiAoc2FtcGxlXzEgPCAyNCkpDQpgYGANCg0KYGBge3J9DQptZWFuKChzYW1wbGVfMSA+IDEyKSAmIChzYW1wbGVfMSA8IDI4KSkNCmBgYA0KDQpgYGB7cn0NCm1lYW4oKHNhbXBsZV8xID4gOCkgJiAoc2FtcGxlXzEgPCAzMikpDQpgYGANCg0KIyMjICoqU2FtcGxpbmcgZnJvbSBhIFVuaWZvcm0gRGlzdHJpYnV0aW9uKioNCg0KV2UgY2FuIHVzZSB0aGUgZnVuY3Rpb24gYHJ1bmlmYCB0byBzYW1wbGUgZnJvbSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uLiBJbiB0aGUgY2VsbCBiZWxvdywgd2UgZ2VuZXJhdGUgMzAwIG9ic2VydmF0aW9ucyBvZiBhIHZhcmlhYmxlIHRoYXQgaXMgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIG9uIHRoZSBpbnRlcnZhbCBgWzAsIDEwXWAuIFdlIHRoZW4gZGlzcGxheSB0aGUgZmlyc3QgMTAgdmFsdWVzIGluIG91ciByYW5kb20gc2FtcGxlLiANCg0KYGBge3J9DQpzYW1wbGVfMiA8LSBydW5pZihuPTMwMCwgbWluPTAsIG1heD0xMCkNCnNhbXBsZV8yWzE6MTBdDQpgYGANCg0KU2luY2UgdGhlIGxlbmd0aCBvZiBvdXIgaW50ZXJ2YWwgaXMgMTAsIHJvdWdobHkgNzAlIG9mIG91ciBvYnNlcnZhdGlvbnMgc2hvdWxkIGJlIGxlc3MgdGhhbiA3LiANCg0KYGBge3J9DQptZWFuKHNhbXBsZV8yIDwgNykNCmBgYA0KDQpSb3VnaGx5IDUwJSBvZiBvdXIgb2JzZXJ2YXRpb25zIHNob3VsZCBiZSBiZXR3ZWVuIDMgYW5kIDguIA0KDQpgYGB7cn0NCm1lYW4oKHNhbXBsZV8yID4gMykgJiAoc2FtcGxlXzIgPCA4KSkNCmBgYA0KDQpSb3VnaGx5IDgwJSBvZiBvdXIgb2JzZXJ2YXRpb25zIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMi4gDQoNCmBgYHtyfQ0KbWVhbihzYW1wbGVfMiA+IDIpDQpgYGA=