satopoooonのブログ

自分向けの備忘録

C#覚書、staticとかThisとかなにそれ

C#の覚書、

以下参考サイト、

http://ufcpp.net/study/csharp/oo_static.html

静的メンバとかなんだそれ?

 

C#だと、変数やクラスにstaticをつけると、

静的メンバとよぶらしい。

static 変数と宣言されたら、

それはいわゆるクラス変数(クラス内で共通の変数)のことみたい。

 

static クラスと宣言されたら、

それはインスタンスを作る必要のないクラスみたい。

メソッドしか持たない。

構造化言語でいう関数に近い。

 

 

 

 

 

 

ノンパラメトリックな検定、ウィルコクソン検定

特定の分布を過程する検定はパラメトリックな検定、

→母集団の分布がわかっている場合はパラメトリックな検定をすればよい、

  正規分布しているなら、t検定

 

特定の分布を過程しない場合は、ノンパラメトリックな検定、

→母集団の分布がよくわからん、、、そういうときはt分布ではなくて、

ノンパラメトリックな検定(例えばウィルコクソン検定、Mann-Whiteny検定など)

 

正規分布しているかどうか怪しいものに、

t分布などを使うと検出力が下がる、

特にn数が少ない場合は顕著、

以下参考文献

パラメトリック検定の検出力

 

t検定,プールした分散

対応がない場合のt検定

参考文献は以下、

http://www012.upp.so-net.ne.jp/doi/biostat/CT39/ttest.pdf

 

二つのグループをt検定する。

まず前提として、二つのグループ等分散、母分散は不明であるとする。

等分散じゃないと、t検定が使えない。

二つのグループのそれぞれの偏差平方和(s1,s2)から、プールした不偏分散を作る。

 

等分散なんだから、

二つのグループのデータを使って分散を求めた方が精度が良くね、

っていうモチベーションでプールする。

 

二つのグループをまとめた偏差平方和s = s1+s2

自由度はn = (n_1-1)+(n_2-1) 

よって、プールした分散はs = (s1+s2) / {(n_1-1)+(n_2-1)} 

となる。 

これを使ってt検定する。

 

なお、等分散じゃない場合はウェルチの検定となる。

等分散じゃなくてかつ母分散も不明の場合、

厳密に従う統計量は存在しない。

→近似的にはウェルチの検定でいける、

 

このへんは、

永田本「統計的方法の仕組み」p.185に記載している。

 

 

SQLで文字列を置換する方法

以下で可能、

REPLACE(column名,"置換前の文字列","置換後の文字列")

 

条件が複数の場合は、

REPLACE(REPLACE(column名,"置換前の文字列","置換後の文字列"),"置換前の文字列","置換後の文字列")

というように入れ子にする。

 

上記の方法だと、いちいちcolumn名を指定する必要がある。

→テーブルすべてに同一処理をしたい場合は、columnの数だけ上記の処理をする必要がありそう。

下のリンクでも、同じような悩みを持っている人が質問している。

回答としては、やっぱりcolumnの数だけsqlを書く必要がありそう。

全てのフィールドを一括置換する方法

C#、VB.NETでエクセル操作

#エクセルを操作
C#でエクセル操作をする.
開発環境は、Visual studio2017です。

エクセル操作のためのdllがあるんですが、
それはつかいませんでした。
今回は、NPOIというモジュール(?)を使います。
以下参考サイトです。

【C#】NPOIを使ってExcelファイルを作成・編集する - Qiita

Excelファイルを C# と VB.NET で読み込む "正しい" 方法 - Qiita

NPOIのインストール方法から掲載しています。

拡張子がxlsとxlsm両方に対応できているのがgood、

古いエクセル(EXCEL2013)しか対応していないPC用にPGを作成しようと思ったんですが、
Visual sturio2017からは対応のdll(Microsoft.Office.Interop.Excel)がインストールできなさそう。
調べてみたら、NPIOというものがあるぞということで使うことにしました