背景
UbuntuではSDAPSを使うためのパッケージを作者が提供しています。
残念ながら、2017年末にみつかったレポートでの標準偏差が異常値となるバグの問題があり、レポートの標準偏差が明かにおかしくなります。
解決策
上記リンクの最後に作者のパッチが添付されています。手で修正したdiffは以下のようになりました。
.../sdaps/calculate.py
--- /usr/lib/python2.7/dist-packages/sdaps/calculate.py.20180320 2017-07-17 06:16:41.000000000 +0900
+++ /usr/lib/python2.7/dist-packages/sdaps/calculate.py 2018-03-20 22:56:20.107821458 +0900
@@ -183,14 +183,15 @@
if self.range_count > 0:
for key in self.range_values:
- self.standard_deviation += self.range_values[key] * pow(key - self.mean, 2)
self.mean += key * self.range_values[key]
+ self.mean = self.mean / float(self.range_count)
- # Also devide by count
- self.range_values[key] = self.range_values[key] / float(self.count)
-
+ for key in self.range_values:
+ self.standard_deviation += self.range_values[key] * pow(key - self.mean, 2)
self.standard_deviation = math.sqrt(self.standard_deviation / float(self.range_count))
- self.mean = self.mean / float(self.range_count)
+
+ for key in self.range_values:
+ self.range_values[key] = self.range_values[key] / float(self.count)
if hasattr(self, 'ref_count'):
self.significant = abs(self.mean - self.ref_mean) > 0.1
レポートの再生成
reportのみを再度行なうことで、平均や標準偏差が出力されるようになります。念のためcsv exportで出力した結果から再計算してみたところ、約160名分の手持ちのデータについて、無回答の項目を除いた値は同じ平均・標準偏差になるところまでは確認しています。