[statisticsPen] Another bandaid

Sigh. I'm probably doing something wrong but I don't understand.
This commit is contained in:
Behdad Esfahbod 2023-11-19 11:09:39 -07:00
parent 0d28975708
commit 21864fc26a

View File

@ -64,11 +64,13 @@ class StatisticsPen(MomentsPen):
self.meanY = meanY = self.momentY / area self.meanY = meanY = self.momentY / area
# Var(X) = E[X^2] - E[X]^2 # Var(X) = E[X^2] - E[X]^2
self.varianceX = varianceX = self.momentXX / area - meanX * meanX
self.varianceY = varianceY = self.momentYY / area - meanY * meanY
# XXX The above formula should never produce a negative value, # XXX The above formula should never produce a negative value,
# but due to reasons I don't understand, it does. So we take # but due to reasons I don't understand, it does. So we take
# the absolute value here. # the absolute value here.
self.varianceX = varianceX = abs(self.momentXX / area - meanX * meanX) self.varianceX = varianceX = abs(varianceX)
self.varianceY = varianceY = abs(self.momentYY / area - meanY * meanY) self.varianceY = varianceY = abs(varianceY)
# Covariance(X,Y) = (E[X.Y] - E[X]E[Y]) # Covariance(X,Y) = (E[X.Y] - E[X]E[Y])
self.covariance = covariance = self.momentXY / area - meanX * meanY self.covariance = covariance = self.momentXY / area - meanX * meanY
@ -96,6 +98,11 @@ class StatisticsPen(MomentsPen):
sum(p.imag * p.imag for p in nodes) sum(p.imag * p.imag for p in nodes)
- (sumNodes.imag * sumNodes.imag) / n - (sumNodes.imag * sumNodes.imag) / n
) / (n - 1) ) / (n - 1)
# XXX The above formula should never produce a negative value,
# but due to reasons I don't understand, it does. So we take
# the absolute value here.
self.varianceX = varianceX = abs(varianceX)
self.varianceY = varianceY = abs(varianceY)
# Covariance(X,Y) = (sum[X.Y] - sum[X].sum[Y] / n) / (n - 1) # Covariance(X,Y) = (sum[X.Y] - sum[X].sum[Y] / n) / (n - 1)
self.covariance = covariance = ( self.covariance = covariance = (