2020年03月22日

共分散とは何ぞや / データ分析の解説

さて、気温とビールの売上本数の様な2つのデータの相関関係を数値で表す相関係数を求める時に “共分散” が登場します。
“分散” は知ってるけど “共分散” って何?ってことになります。
その“共分散”について考えてみようと思います。
散布図を描いてみたら気温が上がるとビールの売上本数が増えている時と言うのはどういう事かグラフをよく見てみましょう。
20200322-01.jpg

まず、ばらつきはあるもののデータが右上がりに分布しているようです。
と、言うことは。。
・気温が高い時は、ビールの販売本数も多くなる。
もうちょっと推測してみると、気温が平均値より高い時(暑い時)はビールの販売本数も平均値より多くなる。
・と言うことは、気温が平均値より低い時(涼しい時)はビールの販売本数も平均値より少なくなる。
また、縦軸のビールの販売本数を、1本毎じゃなくて、6本パックのパック数で数えると、縦軸の数は1/6に少なるなるけど、それは見かけの数字が少なるなるだけで、両社の関係は何も変わらない。
で、ここでこの散布図に気温とビールの販売数の平均値のラインを書き加えてその差を目盛りにしてみます。
20200322-02.jpg

平均値を境にグラフは4つのエリアに分かれました。
すると、なるほど先ほどの推測はほぼそうなっているのが分かります。
右上のエリアと左下のエリアは平均値に対しては真逆の状態なのですが、気温とビールの本数の関係に関しては右上がりと言う同じ状態を表しています
20190815_06.jpg

それではここいらで、共分散の定義はどうなっているか確認してみましょう。

共分散とは 2種類のデータ(2変量)の偏差の積の平均

変量
と言うのは、独立して異なる値を取り得る量のことでここでは、気温とビールの本数のことになります。
偏差と言うのはばらつきのことで(データの値-データの平均値)で計算されます。なので平均値より小さい値の場合は符号はマイナスになります。
偏差の積はつまり(気温1-平均気温)x(ビールの販売本数1-平均本数)のことになり
それらをデータ分合計してデータの個数で割った平均値が共分散ということになります。

20131013_01.jpg


共分散のキモはこの偏差を掛け算しているところです。
どういうことかと言うと平均値で分割された4つのエリアの偏差の積は[B]と[D]のエリアはプラス(正の値)になると言うことです。
[B]はそれぞれ平均値より上なのでプラスxプラスでプラスの値になり、
[D]もマイナスxマイナスでプラスの値になります。
方や、[A]、[C]のエリアはプラスとマイナスの掛け算になって結果はマイナスの値になります。
20131013_02.jpg
で、その偏差積の平均と言うことはまずそれらを足していきます。
偏差積は平均値で出来た軸を基準にした長方形の面積になります。ただ、[A]、[C]のエリアは負の値になりますので、面積に例えるのは間違ってますけどね。
20200322-03.jpg

でそれらの平均値ですから、結果正の値なら右上がり、つまり気温が上がるとビールの販売本数が増える(気温が下がるとビールの販売本数が減る)
負の値なら右下がり、気温が上がるとビールの販売本数が減る(気温が下がるとビールの販売本数が増える)と言うことになります。
今回の気温とビールの販売本数のサンプルを実際に計算してみると。。
共分散の値は“53”となりました。
この“53”の意味ですが、特にありません。単位は “℃・本” って何それっ!?って意味不明の値です。
なので、この “共分散” 単体で相関関係のどんな特性を表してるかと言うと。。正の値か負の値かだけが特性を表しているだけです。
20200322-04 (2).JPG
この値は共分散の値の大きさはビールの本数の単位が変わったり、大きなデータがあると大きく変わるので、共分散の値の大小と2つのデータの関係性は何も関連がありません。
また、“分散”という文字があるので右上がりの直線に対するばらつき具合を表しているのかな〜と思うのですが、例えば散布図のばらつき具合と共分散の値をみると、共分散の値が同じでもばらつきが大きかったり小さかったりするので関連がありません。

20200322-04.jpg

まとめると、“共分散” 単体は何を表しているかと言うと結局値が正の値なら右上がり、負の値なら右下がりだけです。






いつものキッチンのやかんでお湯を沸かすのではなく小形のストーブでお湯を沸かしてコーヒーを飲んだりカップ麺を食べたら普段と違う味がするはず!



ラベル:共分散
posted by haku1569 at 21:05| データ分析の解説 | このブログの読者になる | 更新情報をチェックする

2020年03月15日

VBAに登場する意味不明な用語の意味 “モジュール”とか“ステートメント”とか / Excel / VBA

Excel VBAでは色々な横文字が登場するのだけど、なんかつかみどころない単語が多い!
と、単にボキャブラリーが無いだけなのを棚に上げるのだけど、
ということで、あまり深堀は出来ないけど簡単にまとめてみた!

プロジェクト
1つのワークブック(Excelファイル)のマクロ群になります。
VBAの編集画面では左上のプロジェクトエクスプローラにの一番上の太字で表示されている“VBAProject( )”になります。( )内はファイル名になっります。
プロジェクトに“モジュール”、“プロシージャ”、“ステートメント”が構成されます。
20200308-01.JPG

モジュール
VBAのコードを書いて保存する場所のことで、ここにマクロのプログラム、プロシージャが作られます。
1つのモージュールには複数のプロシージャを作ることができます。
一般的なVBAのコードは“標準モージュール”に書き込みます。またそれとは別にオブジェクトに付随するモジュールがあり、ワークシート付随する“シートモジュール”、ワークブックに付随する“ブックモジュール”、フォームに付随する“フォームモジュール”があります。
20200308-02.JPG

プロシージャ
sub 〜 End sub で書かれる1つのマクロを実行するプログラムのまとまりのことです。
“マクロ”と言うのはソフトの操作を自動化させたものの総称なので、1つのプロシージャで1つのマクロを作る場合もありますし、複数のプロシージャで1つのマクロを構成する場合もあります。ですが、“プロシージャ”と言うのはプログラミングサイドの用語で片や“マクロ”はユーザーサイド(エクセル寄り)の用語になります。
 標準モジュールに作られるプログラムを“標準プロシージャ”と言い、「F5」キーや「マクロの実行」で実行されるプロシージャです。またオブジェクトに付随するモジュールに作られるプログラムを“イベントプロシージャ”と言い、ユーザーの操作によって起きるイベントにより自動で実行するプロシージャです。
例えば、ブックモジュールにはExcelを起動した時、保存した時等のイベントプロシージャ
シートモジュールにはセルの値を変更した時、シートを追加した時等のイベントプロシージャ
フォームモジュールにはボタンをクリックした時等のイベントプロシージャを作ります。
20200308-03.JPG

SubプロシージャとFunctionプロシージャ
Sub マクロ名() 〜 End Subで記述されるSubプロシージャの他に、Function 関数名() 〜 End Functionで記述されるFunctionプロシージャがあります。Functionプロシージャは戻り値で結果を返すことができます。

ステートメント
VBAで記述される最小単位の1行単位のプログラム。if〜then、for〜next 等は複数行にまたがります。
例えば、“Sub”、“Functoin”、“Dim”、“Call”、“End”、“For〜 Next”、“GoTo”、“If〜Then〜Else” 等があります。
20200308-04.JPG

まだまだ、聴きなれない用語が出てきますが、今日はここいらで勘弁してやろう!?
ほなまた!



前のページ:
次のページ:

関連ページ
posted by haku1569 at 18:42| Excel VBA | このブログの読者になる | 更新情報をチェックする

2020年02月23日

セルの行番号、列番号、アドレス(絶対位置)を取得する / Excel / VBA

Excel VBAでセルの列番号、行番号、アドレスを取得してみます。
*下の方で使用例のExcelファイルがダウンロードできます。

1.セルの行番号を取得する

***.Row
***:行番号を取得したいセルを指定

例 セル“A1”の行番号(=1)を取得
Cells(1,1).Row

2.セルの列番号を取得する

***.Column
***:列番号を取得したいセルを指定

例 セル“B1”の列番号(=2)を取得
Cells(1,2).Column

3.セルのアドレス(絶対位置)を取得する

***.Address
***:アドレスを取得したいセルを指定

例 セル“C1”のアドレス(=$C$1)を取得
Cells(1,3).Adress

使用例

Sub Macro1()

'変数R、C、A
Dim R
Dim C
Dim A

'セル“A1”の行番号を変数Rに格納
R = Cells(1, 1).Row

'セル“B1”の列番号を変数Cに格納
C = Cells(1, 2).Column

'セル“C1”のアドレスを変数Aに格納
A = Cells(1, 3).Address

'変数R、C、Aをイミディエイトウィンドウに表示
Debug.Print (R)
Debug.Print (C)
Debug.Print (A)

End Sub

20200222.JPG

サンプルExcelファイル:セルの行、列、アドレス.zip


前のページ:
次のページ:


関連ページ




車のバッテリーが完全に上がってしまってもかけることが出来る25,000mAhの大容量!

車のエンジンスターターだけでなく、スマホの充電、LEDライトとしても使用できます。





ラベル:.Row .Column .Address
posted by haku1569 at 14:50| Excel VBA | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。