Skip to content

Instantly share code, notes, and snippets.

@daniellockard
Created February 9, 2011 15:47
Show Gist options
  • Save daniellockard/818683 to your computer and use it in GitHub Desktop.
Save daniellockard/818683 to your computer and use it in GitHub Desktop.
class Array
def sum
inject(nil) {|sum,x|
sum ? sum+x : x
}
end
def mean
sum/size
end
def stddev
std = 0
res = 0
devs = []
self.each { |x|
devs.push(x - mean)
}
devs.each {|y|
res = res + y**2
}
Math.sqrt(res/(size-1))
end
def median
self.sort!
res = (0.5*(self.size+1))
if res.ceil != res.floor
retr = ((self[res.ceil-1]+self[res.floor-1])/2.0)
else
retr = self[res]
end
retr
end
def q1
self.sort!
retr = 0
res = (0.25*(self.size+1))
if res.ceil != res.floor
retr = ((self[res.ceil-1] + self[res.floor-1])/2.0)
else
retr = self[res]
end
retr
end
def q3
self.sort!
retr = 0
res = (0.75*(self.size+1))
if res.ceil != res.floor
retr = ((self[res.ceil-1] + self[res.floor-1])/2.0)
else
retr = self[res]
end
retr
end
def iqr
q3-q1
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment