Skip to content

Instantly share code, notes, and snippets.

@mneedham
Created November 4, 2010 16:25
Show Gist options
  • Select an option

  • Save mneedham/662733 to your computer and use it in GitHub Desktop.

Select an option

Save mneedham/662733 to your computer and use it in GitHub Desktop.
def mean(values)
values.inject(&:+) / values.size
end
def sample_variance(values, mean)
values.map { |item| (item - mean) ** 2 }.inject(& :+) / (values.size - 1)
end
values = [437, 93, 933, 197, 163, 278, 258, 318, 181, 0, 253, 133, 1046, 0, 188, 0, 0, 62, 195, 388, 185, 104, 217, 0, 0, 270, 261, 298, 413, 226, 121, 142, 651, 160, 184, 129, 174, 126, 342, 174, 0, 0, 216, 253, 0, 265, 250, 0, 337, 0, 314, 133, 832, 176, 0, 289, 374, 169, 0, 0, 0, 95, 107, 0, 560, 351, 292, 0, 252, 0, 177, 193, 823, 204, 398, 0, 144, 104, 225, 162, 276, 0, 129, 521, 130, 0, 205, 322, 145, 87, 79, 0, 279, 493, 184, 195, 472, 224, 124, 0, 250, 0, 247, 0, 87, 203, 273, 249, 447, 158, 285, 187, 727, 798, 179, 341, 119, 474, 152, 283, 90, 0, 633, 202, 272, 308, 255, 522, 421, 91, 246, 211, 607, 0, 833, 131, 0, 317, 170, 0, 464, 141, 220, 198, 395, 173, 104, 67, 0, 242, 0, 108, 63, 147, 113, 106, 0, 241, 178, 0, 140, 162, 95, 121, 163, 205, 0, 85, 0, 378, 250, 176, 0, 0, 167, 0, 261, 61, 306, 144, 191, 89, 132, 354, 139, 80, 140, 151, 303, 60, 0, 167, 121, 204, 451, 83, 253, 434, 162, 97, 109, 214, 141, 233, 371, 96, 91, 268, 199, 144, 302, 209, 0, 128, 66, 197, 141, 153, 144, 137, 210, 188, 123, 311, 0, 118, 124, 216, 140, 218, 0, 110, 104, 528, 223, 368, 0, 322, 160, 180, 95, 158, 141, 418, 282, 210, 172, 150, 274, 119, 294, 73, 335, 235, 0, 151, 142, 124, 268, 215, 177, 183, 243, 182, 121, 474, 188, 245, 362, 0, 83, 98, 583, 295, 289, 0, 292, 340, 116, 216, 210, 0, 0, 141, 154, 176, 144, 139, 233, 0, 224, 116, 216, 219, 172, 422, 205, 309, 347, 286, 476, 271, 498, 487, 133, 346, 169, 1121, 104, 179, 145, 211, 1191, 262, 170, 298, 386, 242, 354, 160, 357, 101, 294, 270, 261, 175, 205, 235, 420, 120, 112, 592, 133, 190, 163, 422, 170, 307, 232, 144, 235, 0, 216, 267, 203, 219, 251, 85, 134, 94, 136, 156, 137, 115, 229, 84, 215, 429, 429, 250, 144, 525, 661, 373, 283, 583, 0, 0, 438, 0, 177, 210, 207, 241, 268, 222, 362, 417, 155, 163, 163, 88, 600, 301, 142, 130, 380, 589, 281, 362, 118, 207, 110, 170, 218, 655, 0, 269, 455, 330, 198, 185, 0, 175, 290, 165, 237, 89, 412, 226, 0, 313, 0, 183, 150, 253, 289, 463, 504, 289, 417, 0, 204, 695, 92, 254, 333, 417, 342, 276, 503, 654, 258, 290, 408, 80, 103, 188, 199, 432, 407, 408, 151, 202, 108, 166, 280, 145, 141, 151, 205, 134, 257, 141, 231, 246, 249, 176, 75, 481, 0, 97, 388, 99, 255, 205, 103, 244, 152, 173, 113, 210, 0, 107, 320, 419, 0, 132, 194, 85, 0, 182, 79, 174, 287, 64, 58, 142, 180, 383, 37, 120, 219, 103, 61, 275, 478, 144, 78, 0, 253, 186, 144, 0, 92, 116, 104, 76, 240, 91, 75, 141, 102, 153, 428, 160, 199, 276, 110, 175, 109, 153, 208, 0, 124, 124, 193, 540, 0, 56, 199, 277, 195, 238, 466, 210, 133, 204, 120, 151, 122, 107, 216, 293, 145, 126, 209, 107, 230, 242, 169, 319, 318, 185, 149, 0, 99, 225, 380, 325, 273, 237, 156, 240, 111, 52, 84, 416, 314, 157, 416, 326, 269, 416, 178, 596, 187, 131, 238, 203, 98, 49, 71, 151, 216, 283, 448, 404, 129, 0, 89, 180, 417, 191, 154, 68, 235, 158, 694, 150, 162, 145, 0, 322, 390, 127, 274, 254, 416, 301, 168, 155, 105, 97, 316, 338, 210, 62, 236, 96, 709, 196, 560, 624, 112, 161, 125, 335, 133, 161, 294, 213, 388, 182, 132, 128, 189, 148, 270, 122, 189, 207, 133, 373, 258, 253, 191, 532, 172, 329, 353, 270, 282, 834, 409, 324, 629, 159, 120, 0, 402, 167, 139, 253, 368, 160, 211, 166, 229, 252, 160, 297, 151, 182, 199, 0, 151, 172, 930, 0, 1266, 119, 148, 304, 157, 421, 110, 128, 125, 227, 84, 37, 0, 486, 132, 289, 0, 0, 314, 628, 0, 269, 253, 0, 295, 0, 217, 440, 327, 169, 192, 122, 210, 275, 252, 210, 198, 0, 0, 201, 0, 0, 100, 490, 822, 278, 170, 358, 228, 239, 234, 203, 450, 152, 151, 0, 193, 94, 0, 0, 111, 195, 0, 0, 131, 0, 267, 357, 0, 0, 267, 128, 63, 424, 154, 0, 0, 359, 312, 267, 533, 400, 191, 473, 915, 145, 0, 149, 213, 222, 259, 178, 257, 553, 226, 191, 222, 474]
m = mean(values)
=> 217
sample_variance(values, m)
=> 29535
- Should the variance really be 29535? I though t'was supposed to measure the average distance of a value from the mean :-S
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment