C#覚書、staticとかThisとかなにそれ
C#の覚書、
以下参考サイト、
http://ufcpp.net/study/csharp/oo_static.html
静的メンバとかなんだそれ?
C#だと、変数やクラスにstaticをつけると、
静的メンバとよぶらしい。
static 変数と宣言されたら、
それはいわゆるクラス変数(クラス内で共通の変数)のことみたい。
static クラスと宣言されたら、
それはインスタンスを作る必要のないクラスみたい。
メソッドしか持たない。
構造化言語でいう関数に近い。
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で文字列を置換する方法
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というものがあるぞということで使うことにしました
Sourcetree,Bitbucketの環境構築
ソースコードのver管理をどうする?
以下、Sourcetree、Bitbucketの環境構築および使い方についてのメモです。
参考サイトは以下です。
【連載Git入門 第2回】SourceTreeでGitを始めよう!まずは試しに使ってみよう! | naichilab - Android iOSアプリ開発メモ
ローカルリポジトリの作成
ソースコードの編集自体は、適当なIDEを使ってます。
pythonの編集の場合、僕はpycharmを使用しています。
pycharmでもgitの機能は使えるみたいですが、
Sourcetreeが使いやすいそうなので、そちらを使用することにしました。
以下、sourcetree使用の流れです。
まずは、pycharmで適当なプロジェクトを作成します。
プロジェクトは特定のフォルダ下に置かれます。
次にSourcetreeを立ち上げて、
「新規/ローカルリポジトリを作成」を選択します。
プロジェクトのパスを聞かれるので、
入力してあげるとローカルリポジトリが作成されます。
コミット、チェックアウト
ソースコードをpycharm上で編集します。
コミットしてあげると、それがブランチとして繋がります。
コミット履歴が羅列していますが、前のコミットを選択すると、
pycharm上のソースコードも、前のものに変わります(チェックアウト)。
詳細は参考サイトに書いてあります。
注意点として、前のコミットに戻した状態(チェックアウト)で新たにコミットすると、
以下のようになります。
最新版であるコミットの新1から、コミット古にチェックアウトします。
その状態で、新たにコミットすると、コミット新1は消えて、新2しか残りません。
これを防ぐには、チェックアウトしたときに、新2用のブランチを作成してからコミットすることです。
古→新1
↓
→→新2
新2しか残らない。
ブランチを切る、mergeする、
ブランチを切ることで、サブの枝を作ることができます。
メインの枝が安定verのPGだとすると、サブの枝は開発verの枝というイメージです。
詳細は参考サイトに書いてあります。
リモートリポジトリを作成する。リモートリポジトリからクローンを作成する。
まずはBitbucketにアカウントを作成します。
アカウトを作成したら、sourcetreeからリモートリポジトリを作成します。
まずは、メニューバーの「Sorcetree/環境設定/アカウント/追加」で先ほど作成したBitbucketのアカウントを追加します。
通信方法がsshとhttpsと設定できますが、とりあえずhttpsにしました。
アカウントを追加したら、
「新規/リモートリポジトリを作成」でリモートリポジトリを作成できます。
このとき、下記のエラーがでました。
「Too many invalid password attempts.〜〜〜〜〜(以下省略)」
Bitbucketのサイトに、ログインしなおしたら解決できました。
また、リモートタブを選択すると(上図参照)、リモートリポジトリの一覧が表示されます。 ここから、ローカルリポジトリにクローンすることができます。
一人で開発する分にはこれくらい使いこなせれば良いかと思います。
また、以下別の参考サイトも書いておきます。
Gitのインストール【チュートリアル1 Gitの基本】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
絶対できる!Source Treeの使い方を初心者向けに説明してみた! | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
複数のグラフを一度に書く
seabornのグラフを一度に複数書く、
あるパラメータで層別して、複数のグラフを一度に描きたいです。 seabornのfacetgridを使います。 参考サイトは以下です。
Python でデータ可視化 - "Facet"で属性別グラフを一気に描く方法が便利すぎる - Qiita Python - seaborn.facetgridでの文字追加|teratail seaborn.FacetGrid — seaborn 0.9.0 documentation
以下コード
import numpy as np import seaborn as sns import matplotlib.pyplot as plt bins = np.arange(0, 65, 5) tips = sns.load_dataset("tips") #層別のパラメータが2種類ある場合は、col、rowで指定します。 #1種類の場合は、colのみで良いと思います。 g = sns.FacetGrid(tips, col="time", row="smoker") g = g.map(sns.distplot, "total_bill", bins=bins, color="r") #各gridに対する、axisを読んで、テキストを埋め込みます。平均値とかを記載したときに良いかと、 for i in range(2): for j in range(2): ax = g.facet_axis(i, j) ax.text(40,0.04,"hoge") plt.show()