統計電卓、更新2016年11月03日 08:23


統計電卓、更新

Windowsストアアプリの「統計電卓」を更新しました。更新内容を示します。

・共有されたテキストデータを受信する機能を設けました。
Windows10の「共有」を用いたアプリ間連携の機能です。既定のJson形式のデータを受信し、分析を行うことができます。送信元のアプリが既定のJson形式に則ったデータを用意する必要があります。今のところ、「献血記録」がこの機能に対応しています。

・日付データを扱えるようにしました。
気象データなど、日付と数値が対応するデータを扱えます。日付は、従属変数としては扱えません。独立変数としての扱いです。タブ区切りテキストの読み込みでも対応しました。

・項目(列)にラベルを付与できるようにしました。
ラベルを付与すると、変数の選択やグラフの軸表記に利用できます。タブ区切りテキストの読み込みでも、先頭行をラベル定義行として扱えます。

・散布図の再描画の性能を改善しました。
あわせて、散布図の自動描画を標準でオフにしました。

・入力パッドの符号変換キーの不具合を修正しました。

・制限事項)モバイル版(Windows10 mobile)でOneDriveにあるファイルを読み込むとき、ファイル名に日本語が含まれていると読込に失敗します。英数字のファイル名に変換してから読み込みます。OS側の不具合と思われます。

WinRT XAML Toolkit, ScatterSeries再描画の性能改善2016年11月03日 08:50


ScatterSeries

WinRT XAML Toolkitのグラフ機能のScatterSeriesでは、BindしているCollectionを入れ替えると、2回目以降、描画に時間がかかる。上図は、1年間の全日の気温をプロットしたもの。初回は数秒なのに、2回目以降は1分近くかかる。改善のために、いろいろ試してみたが、Seriesを全消去して再登録すると劣化が抑えられる。

XAML ScatterSeries定義

XAMLの定義。Chartに軸を2本、X軸とY軸。Seriesを2つ、点描画(ScatterSeries)と回帰直線(LineSeries)。再描画で問題になるのは、点描画のItemsSourceで定義したPointsを更新したとき。

ScatterSeriesをプログラムで更新

これを、Bind連携による自動更新に任せず、プログラムで制御。まず、2つあるSeries(ScatterSeriesとLineSeries)をClear()で全消去。点描画の方のみの削除では、効果がない。その上で、XAMLの定義に沿って、改めてプログラムでSeriesを登録していく。

おそらく、XAMLのメモリ管理まわりの処理が重い。処理時間を計ると、BindされているObservableCollectionの更新はすぐに終わるが、更新イベントを受信したXAML側の処理に時間がかかっている。Seriesの定義全体をクリアすることで、必要なメモリ領域が改めてクリーンな状態で確保され、スムーズに処理が進むと思われる。反対に、一度確保したメモリ領域の再利用は、いろいろ手間がかかる。このとき、複数のSeriesは、別々にではなく、ひとつの単位で管理されている様子。

なお、もう一つ上位に遡って、Chart自体を消去し、プログラムで再登録するのは、逆効果。余計に時間がかかる。これは、起動時の初期化処理に任せるのがよい。

千葉県で住みやすいのはどこか2016年11月03日 12:45

アプリの試験をかねて、千葉県内で住みやすい場所を探してみる。天候面からの検討。
急な気温の変動は体調を崩しやすいので、一年を通じて気温の変化が少なく、一日のうちの変化も少ない方がいい。気象庁の過去の気象データ・ダウンロードから、2015年の全日について、最高気温と最低気温を抜き出してみる。

船橋

まずは、最寄りで船橋。横軸に最高気温、縦軸に最低気温をとって、全日についてプロットし、散布図を描く。強い相関が見て取れる。ここから、大まかに見て、回帰式の傾きが年間の変化の急さ、y切片の値が一日の変化の大きさを表しているといえそう。

館山

千葉県で暖かい場所というと館山が思いつく。一年を通じて温暖とのイメージだが、船橋と比べてみると、気温の幅は同じくらいだが、年間の温度変化も一日の寒暖差も少し大きい。

銚子

それならばと、ぐるっと回って、同じく海沿いの銚子。最高気温も最低気温も気温の幅は少し狭まる。年間の温度変化は館山と同じくらいだが、一日の寒暖差は少し小さい。

成田

少し内陸に入って成田。少しばらつきは大きいが、館山に近い。寒い日は少し多め。

同じ県内なので、大同小異と言えなくもないが、今いる船橋近辺は悪くない。木更津の値も見てみるが近い。東京湾の内側の海沿いは、穏やか。同じ海に囲まれた館山と銚子なら、銚子の方が穏やか。

那覇

せっかくなので、一気に南へ。那覇。寒暖の幅がぐっと縮まる。特に低い方の気温が。年間の温度変化は船橋と同じくらいだが、一日の寒暖差はかなり小さい。

名古屋

同じ暑いといっても、過ごしにくかった印象の名古屋。そんなに船橋と変わらない。過ごしやすさには、湿度の影響が大きいのか。

京都

過ごしにくかった印象といえば京都も。夏と冬にしか行っていないけど。印象とは異なり、寒暖の幅は広めでも、年間の変化も、一日の寒暖差も小さめ。

館林

では、暑い方の日本一。館林。年間の変化や一日の寒暖差は、穏やかな方だが、寒暖の幅、高い方にぐっと広がっている。

朱鞠内

最後に、寒い方の日本一。母子里の近くの朱鞠内。寒暖の幅が低い方にぐっと寄る。一日の寒暖差も大きい方だが、なによりも最低気温の方で、回帰直線を大きく外れたいくつもの点。最高気温はいつもと変わらないが、ぐっと冷え込む日が、幾日も訪れる。

競走馬の誕生月と毛色2016年11月03日 14:22

アプリの試験絡みでもう一つ。春生まれの競馬ファンは、よく自分と同じ誕生日の競走馬を見つけて応援する。実際のところ、何月生まれの馬が多いのか。2016年のセレクトセールの上場馬一覧に誕生日が掲載されていたので、ヒストグラムにする。

競走馬の誕生月

ラベルは、「上限-下限」で記す。下から1月生まれ、一番上が6月生まれ。2月生まれが一番多く、ついで3月生まれ。一番の遅生まれは6月。1月から4月生まれの人なら、同じ誕生日の馬を見つけられそう。

競走馬の毛色

ついでに毛色も見る。アプリでは文字属性をサポートしていないので、数字に割り当てる。
鹿毛が最多。グラスワンダーの印象が残る栗毛と、黒鹿毛が次ぐ。芦毛は目立つが、少なめ。479頭の中で栃栗毛は1頭。