10月のカレンダー
  12345
6789101112
13141516171819
20212223242526
2728293031  
最近の日記
全体の新着
各月の日記
ユーザーRSS
hanyaさんの公開日記
02月01日
02:34
Excel にある分析ツールは OOo にはありません。最近、某所でこの分析ツールの話題が出て、OOo インターンシップ 2010 で作成されたものが登場していました。
ちょっと UI が使いにくかったのですが、つづいて投下されたものはなにやら色々改造されていて便利になっていました。

少し試してみたところ、なにやら変なところもあります。どうもあのツールは陽の目をみない気がしてきました・・・。

無いなら作ればいいじゃない、ということで Python で・・・。
GUI を用意する都合上、簡単そうなものから手をつけます。
サンプリング、一次回帰分析、相関、分散、ヒストグラム、移動平均、順位、記述統計。
記述統計で算出されている信頼区間では t 分布の逆関数が必要の様子。OOo のシート関数 TINV がその値を返します、実装を見てみると・・・自分で実装するのはやめたほうが良さそうです (テストの都合上)。
ちょと値がほしいのならシート関数を css.sheet.FunctionAccess サービスから呼べばいいじゃない。シート関数を統計計算で利用するのなら全部シート関数でいいじゃない。全部手でやればいいじゃない・・・。
というわけで、モードレスダイアログでセル範囲を選択させるダイアログを簡単に作成する Python のクラスが残りました。8つくらいのモード作成したんですけどね。
シート関数で分析結果を表示させるものなら簡単に作成できますね・・・。

インターンシップで作成された分析ツールを眺めていて見つけたバグについて書いておきます。
- Rank and Percentile の計算時に interval を指定すると percentile がずれます。
- Descriptive Statistics の Kth Largest では同じ数値があってもソートして単純に上から K 番目の値を返します。順位付けしているのであれば、同値は同じ番数ですが、値の大きさのみであれば同値は無視するべきですが・・・。これは場合によります。
- 略

余談ですが。
ダイアログエディタで作成したダイアログを CreateDialog 関数でインスタンス化して、モードレスダイアログとして表示させると、Basic のルーチンが終了すると同時にダイアログが破壊されてしまいます。CreateDialog 関数を利用する代わりに css.awt.DialogProvider を利用して初期化時に渡す値を工夫すればルーチンが終了しても閉じないダイアログが作成できます。
Basic の場合、ルーチンが終了しても色々作業をしようとすると Global 変数に値を保存しておく必要があります。一方で、モードレスダイアログを表示しているドキュメントが閉じられたときには、そのダイアログも閉じてやる必要があります。この二つの条件および拡張機能に入れることを考えると、フレームまたはドキュメントへの参照とダイアログ、ドキュメントが閉じるのを検出するためのリスナーが必要です。
Basic の配列にまとめて突っ込んで保存しておいて、閉じるときに EqualUnoObjects 関数でフレームでルックアップするようにしてみましたが、どうしてもクラッシュしてしまいます。
いい方法ありませんかねぇ。試してみたい方がいるようであればコードは差し上げます。
公開日記トップへ
oooug-jp SNS

●サイドメニュー

  • 公開日記
  • >公開日記はログインしなくても読めます

http://www.ospn.jp/

inetd