ビジネスデータサイエンスの教科書 [データサイエンス、統計モデル]
データ解析コンペ、中間発表 [データサイエンス、統計モデル]
久々のデータ解析コンペ。
中間発表の資料を慌てて作りました。
一応簡単なモデルと方針は示す予定。
今回のデータは、IDが入っていないので、追跡できない。
つまり、CRM的なことはできないので、集計されたデータをどう料理するかかなと。
時系列関連の発表が多いと予想。
自分も状態空間モデルだし。
中間発表の資料を慌てて作りました。
一応簡単なモデルと方針は示す予定。
今回のデータは、IDが入っていないので、追跡できない。
つまり、CRM的なことはできないので、集計されたデータをどう料理するかかなと。
時系列関連の発表が多いと予想。
自分も状態空間モデルだし。
過小定式化と過剰定式化 [データサイエンス、統計モデル]
真のモデルを仮定した時、変数が多い時はそれほど問題ないが、変数が少ない場合、正しく結果が得られない。
【過小定式化】
係数がもはや不変ではなく、推定値、標準誤差、t値、それにもとづく有意性の検定などはすべて誤り。
【過剰定式化】
係数の不偏性は保たれ、t値や検定もただしい結果となる。
回帰係数のばらつきは真のモデルに比べ増加するため、推定や検定精度は低下する。
線形回帰モデルをロジットモデルについて、シミュレーションのデータを発生させて検証しました。
線形回帰モデルは、概ね理論通りになったが、ロジットモデルの場合は、係数が少しおかしかった。
なんでだろう・・・と思ったら、
「間違った方法」
z <- -0.8 + 0.3*x1 + 0.2*x2 + 0.1*p + e
y <- 1/(1+exp(-z))
y2 <- ifelse(y < 0.5,0,1)
「正しい方法」
z2 <- -1 + 2*x1 -1*x2 + 0.5*p
prob <- 1/(1+exp(-z2))
unif<- runif(N,0,1)
y2 <- ifelse(unif < prob,1,0)
うっかり、e(正規分布)のノイズを与えてしまったのですが、ロジットモデルの誤差項は正規分布ではなく、ガンベル分布が正解です。
〜 マルチコは悪か? 〜
https://skellington.blog.ss-blog.jp/2017-09-25
【過小定式化】
係数がもはや不変ではなく、推定値、標準誤差、t値、それにもとづく有意性の検定などはすべて誤り。
【過剰定式化】
係数の不偏性は保たれ、t値や検定もただしい結果となる。
回帰係数のばらつきは真のモデルに比べ増加するため、推定や検定精度は低下する。
線形回帰モデルをロジットモデルについて、シミュレーションのデータを発生させて検証しました。
線形回帰モデルは、概ね理論通りになったが、ロジットモデルの場合は、係数が少しおかしかった。
なんでだろう・・・と思ったら、
「間違った方法」
z <- -0.8 + 0.3*x1 + 0.2*x2 + 0.1*p + e
y <- 1/(1+exp(-z))
y2 <- ifelse(y < 0.5,0,1)
「正しい方法」
z2 <- -1 + 2*x1 -1*x2 + 0.5*p
prob <- 1/(1+exp(-z2))
unif<- runif(N,0,1)
y2 <- ifelse(unif < prob,1,0)
うっかり、e(正規分布)のノイズを与えてしまったのですが、ロジットモデルの誤差項は正規分布ではなく、ガンベル分布が正解です。
〜 マルチコは悪か? 〜
https://skellington.blog.ss-blog.jp/2017-09-25
因果推論の科学 「なぜ?」の問いにどう答えるか [データサイエンス、統計モデル]
パールさんが書かれた本。
600ページなので、なかなか読み応えありますが、押さえておいた方がいいと思い、購入しました。
歴史についても書かれていて、このあたりの歴史を知る上でも楽しそうです。
600ページなので、なかなか読み応えありますが、押さえておいた方がいいと思い、購入しました。
因果推論の科学 「なぜ?」の問いにどう答えるか (文春e-book)
- 出版社/メーカー: 文藝春秋
- 発売日: 2022/09/12
- メディア: Kindle版
歴史についても書かれていて、このあたりの歴史を知る上でも楽しそうです。
タグチメソッドの探求 [データサイエンス、統計モデル]
多重共線性問題に参考になりそうな論文。
Effective PCA for high-dimension, low-sample-size data
with noise reduction via geometric representations
多重共線性といえば、一般逆行列とスペクトル分解は必須。
一般逆行列は4種類あるが、いったんは、ムーアペンローズの逆行列を理解しておく。
その他の刊行書
宮川・永田「タグチメソッドの探求」日科技連、2022年
Effective PCA for high-dimension, low-sample-size data
with noise reduction via geometric representations
多重共線性といえば、一般逆行列とスペクトル分解は必須。
一般逆行列は4種類あるが、いったんは、ムーアペンローズの逆行列を理解しておく。
その他の刊行書
宮川・永田「タグチメソッドの探求」日科技連、2022年
タグチメソッドの探究: 技術者の疑問に答える100問100答
- 出版社/メーカー: 日科技連出版社
- 発売日: 2022/01/20
- メディア: 単行本
フィッシャーの世界と現実の問題 [データサイエンス、統計モデル]
フィッシャーは確かに天才であったが、恵まれていた環境であったことも確か。
そのことに気がついていたのか、気がついていなかったのかは知らない。
ただ、彼が作ったのは、結果には誤差がある(yに誤差がある)が、原因には誤差がない(xには誤差がない)環境で作り上げた統計。
つまり、自分がすべて制御できる環境下でのデータで作れらたのが古典的な統計。
有名な回帰式は
y = β0 + β1*x + … + βn*x +ε, ε~N(0, σ)
以下と同等である。
y ~ N(β0 + β1*x + … + βn*x, σ)
実際の世界では(マーケティングでは)、結果だけでなく原因にも誤差があるが、x軸とy軸が同等ではなく、全て、y軸に誤差という責任を負わせている。
p値とか、信頼区間は、本当は、マーケティングにおいては、ものすっごく相性が悪い理論だと思う。
にもかかわらず、これだけABテストとか検定が流行っているのは、とりあえずp値が低かったらOKといったある種の信仰的なものではないだろうか。
そのことに気がついていたのか、気がついていなかったのかは知らない。
ただ、彼が作ったのは、結果には誤差がある(yに誤差がある)が、原因には誤差がない(xには誤差がない)環境で作り上げた統計。
つまり、自分がすべて制御できる環境下でのデータで作れらたのが古典的な統計。
有名な回帰式は
y = β0 + β1*x + … + βn*x +ε, ε~N(0, σ)
以下と同等である。
y ~ N(β0 + β1*x + … + βn*x, σ)
実際の世界では(マーケティングでは)、結果だけでなく原因にも誤差があるが、x軸とy軸が同等ではなく、全て、y軸に誤差という責任を負わせている。
p値とか、信頼区間は、本当は、マーケティングにおいては、ものすっごく相性が悪い理論だと思う。
にもかかわらず、これだけABテストとか検定が流行っているのは、とりあえずp値が低かったらOKといったある種の信仰的なものではないだろうか。
Rのoptimのオプション [データサイエンス、統計モデル]
Rのoptimのオプションは、以下の5種類
・Nelder-Mead
・BFGS
・CG
・L-BFGS-B
・SANN
SANNは、焼きなまし法で時間がかかる。
Nelder-Meadはグリッドサーチみたいなものなので、変なローカルに入ってしまうリスクは少ない。
ざっくりと辺りをつけて、L-BFGS-Bをするのが良さそう。
L-BFGS-Bは、上限と下限を与えることができて、
optim(par=para_list, fn=optim_fn(data1), method="L-BFGS-B", lower = 0, upper = 1)
のよう書く。
複数のパラメータがある場合は、
optim(par=para_list, fn=optim_fn(data1), method="L-BFGS-B", lower=c(0, 100), upper = c(1, 200))
といった形で与える。
・Nelder-Mead
・BFGS
・CG
・L-BFGS-B
・SANN
SANNは、焼きなまし法で時間がかかる。
Nelder-Meadはグリッドサーチみたいなものなので、変なローカルに入ってしまうリスクは少ない。
ざっくりと辺りをつけて、L-BFGS-Bをするのが良さそう。
L-BFGS-Bは、上限と下限を与えることができて、
optim(par=para_list, fn=optim_fn(data1), method="L-BFGS-B", lower = 0, upper = 1)
のよう書く。
複数のパラメータがある場合は、
optim(par=para_list, fn=optim_fn(data1), method="L-BFGS-B", lower=c(0, 100), upper = c(1, 200))
といった形で与える。
Rを使ったマハラノビスの距離 その3 [データサイエンス、統計モデル]
irisデータを使った多変量のマハラノビス距離の計算をしたいと思います。
setosaの50レコードの中に1レコードだけversicolorを入れたらどうなるか?
割と顕著にマハラノビスの距離が大きく検出できています。
### 多変量の場合
## irisデータ
head(iris[,-5])
dat_s <- iris[1:51, -5]
# レコード1〜50は、setosa
# レコード51〜100は、versicolor
# レコード101〜150は、virginica
#平均ベクトル
m.dat<-colMeans(dat_s)
#分散共分散行列
nreg <- nrow(dat_s)
v.dat <- var(dat_s)*(nreg-1)/nreg
m.d2 <- mahalanobis(dat_s, m.dat, v.dat)
plot(m.d2)
Rを使ったマハラノビスの距離
https://skellington.blog.ss-blog.jp/2022-08-30
Rを使ったマハラノビスの距離 その2
https://skellington.blog.ss-blog.jp/2022-08-31
setosaの50レコードの中に1レコードだけversicolorを入れたらどうなるか?
割と顕著にマハラノビスの距離が大きく検出できています。
### 多変量の場合
## irisデータ
head(iris[,-5])
dat_s <- iris[1:51, -5]
# レコード1〜50は、setosa
# レコード51〜100は、versicolor
# レコード101〜150は、virginica
#平均ベクトル
m.dat<-colMeans(dat_s)
#分散共分散行列
nreg <- nrow(dat_s)
v.dat <- var(dat_s)*(nreg-1)/nreg
m.d2 <- mahalanobis(dat_s, m.dat, v.dat)
plot(m.d2)
Rを使ったマハラノビスの距離
https://skellington.blog.ss-blog.jp/2022-08-30
Rを使ったマハラノビスの距離 その2
https://skellington.blog.ss-blog.jp/2022-08-31
INSPIRED と EMPOWERED [データサイエンス、統計モデル]
INSPIRED 熱狂させる製品を生み出すプロダクトマネジメント
EMPOWERED 普通のチームが並外れた製品を生み出すプロダクトリーダーシップ
この2冊を買いました。
データサイエンスをする上で、よく一緒に仕事をすることになるPMs(プロダクトマネージャーたち)。
自分がメンバーではなく、マネージャーである場合、PMsと対等の意識を持って、データサイエンスで何できるか、どんな戦略を考えたら良いかを一緒に考えていくことになります。
どちらが主という立場だと、おそらく上手く行かない。
PMたちからすると、リソースを管理したいけど、その権限はないという、ちょっと微妙な感じであるのですが、小本を読むことでそのPMの大変さが少し分かった気がします。
INSPIRED 熱狂させる製品を生み出すプロダクトマネジメント
- 出版社/メーカー: 日本能率協会マネジメントセンター
- 発売日: 2019/11/09
- メディア: Kindle版
EMPOWERED 普通のチームが並外れた製品を生み出すプロダクトリーダーシップ
EMPOWERED 普通のチームが並外れた製品を生み出すプロダクトリーダーシップ
- 出版社/メーカー: 日本能率協会マネジメントセンター
- 発売日: 2021/07/02
- メディア: Kindle版
この2冊を買いました。
データサイエンスをする上で、よく一緒に仕事をすることになるPMs(プロダクトマネージャーたち)。
自分がメンバーではなく、マネージャーである場合、PMsと対等の意識を持って、データサイエンスで何できるか、どんな戦略を考えたら良いかを一緒に考えていくことになります。
どちらが主という立場だと、おそらく上手く行かない。
PMたちからすると、リソースを管理したいけど、その権限はないという、ちょっと微妙な感じであるのですが、小本を読むことでそのPMの大変さが少し分かった気がします。
Rを使ったマハラノビスの距離 その2 [データサイエンス、統計モデル]
Rを使ったマハラノビスの距離
https://skellington.blog.ss-blog.jp/2022-08-30
↑
こちらは、Rのパッケージを使いましたが、パッケージを使わずにスクラッチで(手計算で)、マハラノビス汎距離を計算しました。
結果は、パッケージを使った場合と一致します。
教科書によれば、MT法において、最後に列数で割ると書かれている教科書もありますが、あまり本質でないので、kで割っていません。
気になる人は、
k <- ncol(dat)
mahalanobis_d/k
としておけば良いでしょう。
https://skellington.blog.ss-blog.jp/2022-08-30
↑
こちらは、Rのパッケージを使いましたが、パッケージを使わずにスクラッチで(手計算で)、マハラノビス汎距離を計算しました。
#(x−μ)′
tmp_1 <- t(t(dat) - m.dat)
tmp_1 <- (apply(tmp_1,1,function(row) row / sqrt(diag(v.dat))))
colMeans(t(tmp_1))
var(t(tmp_1))
#Σ−1
tmp_2 <- cor(t(tmp_1))
tmp_2 <- solve(tmp_2)
#(x−μ)
tmp_3 <- t(t(dat) - m.dat)
tmp_3 <- t(apply(tmp_3,1,function(row) row / sqrt(diag(v.dat))))
colMeans(tmp_3)
var(tmp_3)
# (x−μ)′ Σ−1 (x−μ)
nreg <- nrow(dat)
mahalanobis_d <- NULL
for (i in 1:nreg) {
mahalanobis_d[i] <- 1/k*tmp_1[,i] %*% tmp_2 %*% tmp_3[i,]
}
sqrt(mahalanobis_d)
結果は、パッケージを使った場合と一致します。
教科書によれば、MT法において、最後に列数で割ると書かれている教科書もありますが、あまり本質でないので、kで割っていません。
気になる人は、
k <- ncol(dat)
mahalanobis_d/k
としておけば良いでしょう。
Rを使ったマハラノビスの距離 [データサイエンス、統計モデル]
マハラノビス汎距離(Mahalanobis' Distance)は、色々な場面で登場します。
クラスタリングや主成分分析など。
また、異常値検知で有名なMT法(マハラノビス・田口システム)もそうです。
Rで実装するには簡単。
他のウェブサイトや解説を見ると、うっかり間違えるのが「分散共分散行列」を計算するところで、
v.dat <- var(dat)*(nreg-1)/nreg
ではなく
v.dat <- var(dat)
としてしまっている場合があるので、注意が必要です。
クラスタリングや主成分分析など。
また、異常値検知で有名なMT法(マハラノビス・田口システム)もそうです。
Rで実装するには簡単。
library(MASS)
dat <- round(mvrnorm(n=100,mu=c(50,50),Sigma=matrix(c(100,50,50,100),2,2)))
#平均ベクトル
m.dat<-colMeans(dat)
#分散共分散行列
nreg <- nrow(dat)
v.dat <- var(dat)*(nreg-1)/nreg
#マハラノビス距離の計算
MD <- mahalanobis(dat,center=m.dat,cov=v.dat)
#関数 mahalanobis はマハラノビス距離の二乗となっているため平方根を取る
sqrt(MD)
他のウェブサイトや解説を見ると、うっかり間違えるのが「分散共分散行列」を計算するところで、
v.dat <- var(dat)*(nreg-1)/nreg
ではなく
v.dat <- var(dat)
としてしまっている場合があるので、注意が必要です。
射影行列・一般逆行列・特異値分解 [データサイエンス、統計モデル]
研究会に参加しているときに、突然先生から、「この本をあげる。」と言われ頂いた本。
絶版していて貴重な本というだけでなく、いろいろな途中式などが書かれていました。
大切に読み進めたいと思います。
射影行列・一般逆行列・特異値分解 (UP応用数学選書 10)
- 出版社/メーカー: 東京大学出版会
- 発売日: 1983/01/01
- メディア: 単行本
絶版していて貴重な本というだけでなく、いろいろな途中式などが書かれていました。
大切に読み進めたいと思います。
予測にいかす統計モデリングの基本 [データサイエンス、統計モデル]
元・統計数理研究所の樋口先生の本。
第1版から少し改訂があったみたいです。
最近、状態空間モデルをスクラッチで作っていますが、理論的のサポートとしてかなりわかりやすく書かれていました。
プログラムコードとかも載っているとさらに良かったのですが、そのあたりは自分で実装ということなんでしょう。
予測にいかす統計モデリングの基本 改訂第2版 ベイズ統計入門から応用まで (KS理工学専門書)
- 作者: 樋口知之
- 出版社/メーカー: 講談社
- 発売日: 2022/07/21
- メディア: Kindle版
第1版から少し改訂があったみたいです。
最近、状態空間モデルをスクラッチで作っていますが、理論的のサポートとしてかなりわかりやすく書かれていました。
プログラムコードとかも載っているとさらに良かったのですが、そのあたりは自分で実装ということなんでしょう。
ECML PKDD 2022 [データサイエンス、統計モデル]
ECML PKDD 2022
https://2022.ecmlpkdd.org/
先日、自分のメンバーから、KDD 2022に2本の論文が採択されましたが、
今度は別のネタでECML PKDD 2022のワークショップに論文が採択された。
社内でやっていることを、論文用にして、投稿しているのだが、良い具合に次から次へと論文を書いて採択される循環が生まれています。
論文を書くのはあくまでも全体の10%程度なのですが、限られた時間の中できちんとビジネスと学術の両方に貢献できているのは嬉しいものです。
https://2022.ecmlpkdd.org/
先日、自分のメンバーから、KDD 2022に2本の論文が採択されましたが、
今度は別のネタでECML PKDD 2022のワークショップに論文が採択された。
社内でやっていることを、論文用にして、投稿しているのだが、良い具合に次から次へと論文を書いて採択される循環が生まれています。
論文を書くのはあくまでも全体の10%程度なのですが、限られた時間の中できちんとビジネスと学術の両方に貢献できているのは嬉しいものです。
分散の計算式 [データサイエンス、統計モデル]
定義に従えば、「各データから平均値を引いた値を二乗して、その和をデータ数で割る。」となります。
一方、教科書によく書いている分散公式は、「まず、データを二乗し、その和をデータ数で割ってから、平均の二乗をひく。」というものです。
どうやら、生産管理とかで統計が流行った時代は、まだ、紙と鉛筆で計算をしていた時代でした。
そのため、計算の回数を減らすための公式なのですが、現在では、コンピュータや統計ソフトが普通に発達しているので、分散の公式を使わなくても、普通に定義通り計算しても問題ないし、むしろ、そちらの方がいい気がしますね。
一方、教科書によく書いている分散公式は、「まず、データを二乗し、その和をデータ数で割ってから、平均の二乗をひく。」というものです。
どうやら、生産管理とかで統計が流行った時代は、まだ、紙と鉛筆で計算をしていた時代でした。
そのため、計算の回数を減らすための公式なのですが、現在では、コンピュータや統計ソフトが普通に発達しているので、分散の公式を使わなくても、普通に定義通り計算しても問題ないし、むしろ、そちらの方がいい気がしますね。
決定係数がマイナスになる場合とは? [データサイエンス、統計モデル]
回帰分析を実行すると、決定係数R2が0から1の間で表示されます。
R2と書くくらいなので、二乗というのが頭に残り、マイナスの値なんて取らない!と思ってしまう人も多い。
(実際に、自分もそう思っていましたw)
ただ、ゼロ点回帰(回帰分析で切片がなく、原点を通る回帰分析)を行ったら、決定係数がマイナスになる場合が数学的に証明されます。
ゼロ点回帰は、説明変数が0の場合、必ず目的変数も0となる場合、切片項は0のはずなので、最初から0にしてしまう回帰です。
実際のところ、データには揺らぎがあって、理論的には回帰係数は0であっても、計算で求めた切片は、0.001みたいに限りなく0に近いけど、0でないケースがほとんどです。
実際に、誤差を計算すると、0にしてしまう方が誤差は大きくなってしまいます。
で、話を戻すと、決定係数は、R2=Sr/Syyで計算できます。
Sr=Syy-Se
なのですが、対象データに対してゼロ点回帰のあてはまりが悪い場合、
Syy < Seとなる場合があります。
つまり、Sr<0となり、R2=Sr/Syy < 0になってしまうのが理由です。
R2と書くくらいなので、二乗というのが頭に残り、マイナスの値なんて取らない!と思ってしまう人も多い。
(実際に、自分もそう思っていましたw)
ただ、ゼロ点回帰(回帰分析で切片がなく、原点を通る回帰分析)を行ったら、決定係数がマイナスになる場合が数学的に証明されます。
ゼロ点回帰は、説明変数が0の場合、必ず目的変数も0となる場合、切片項は0のはずなので、最初から0にしてしまう回帰です。
実際のところ、データには揺らぎがあって、理論的には回帰係数は0であっても、計算で求めた切片は、0.001みたいに限りなく0に近いけど、0でないケースがほとんどです。
実際に、誤差を計算すると、0にしてしまう方が誤差は大きくなってしまいます。
で、話を戻すと、決定係数は、R2=Sr/Syyで計算できます。
Sr=Syy-Se
なのですが、対象データに対してゼロ点回帰のあてはまりが悪い場合、
Syy < Seとなる場合があります。
つまり、Sr<0となり、R2=Sr/Syy < 0になってしまうのが理由です。
データサイエンスのテックリード [データサイエンス、統計モデル]
MLエンジニアやデータサイエンスのマネージャとしてやっているが、最近、いろいろなmtgが増えてきて忙しくなってきた。
冷静に分析をしてみると、ピープルマネージメントとしての業務、分析の設計やレビューなどの業務、後、政治的な組織のやりとりがある。
ジュニアなメンバーが多いと、どうしても分析の質を担保するためのレビューが必要なのだが、この部分の負荷が増えている。
テックリードみたいな人がいてくれると良いのだが。。。
あるいは、自分がデータサイエンスのリードをして、代わりにピープルマネージメントをしてくれる人がいたら嬉しい。。。
冷静に分析をしてみると、ピープルマネージメントとしての業務、分析の設計やレビューなどの業務、後、政治的な組織のやりとりがある。
ジュニアなメンバーが多いと、どうしても分析の質を担保するためのレビューが必要なのだが、この部分の負荷が増えている。
テックリードみたいな人がいてくれると良いのだが。。。
あるいは、自分がデータサイエンスのリードをして、代わりにピープルマネージメントをしてくれる人がいたら嬉しい。。。
KDD 2022, Washington DC, U.S. [データサイエンス、統計モデル]
自分のチームのメンバーがKDDのポスターセッションとワークショップに論文を投稿しました。
そして、2つも採択されたとの報告が!
流行りのアップリフトモデル+数理最適化というテーマなのですが、それなりに工夫もあります。
メンバー3人とも現地で発表しに行ってもらおうと思います。
(自分は日本からオンラインで見る予定です。)
そして、2つも採択されたとの報告が!
流行りのアップリフトモデル+数理最適化というテーマなのですが、それなりに工夫もあります。
メンバー3人とも現地で発表しに行ってもらおうと思います。
(自分は日本からオンラインで見る予定です。)
大学での授業 [データサイエンス、統計モデル]
昨日、某・社会人大学院で授業をする機会がありました。
「データサイエンス」関連の授業でしたが、いつも悩みます。w
統計とか数学に重点を置いた方が良いのか、実際の現場の感覚を伝えた方が良いのか。
どこまで伝わったかわかりませんが、授業自体は楽しかったです♪
「データサイエンス」関連の授業でしたが、いつも悩みます。w
統計とか数学に重点を置いた方が良いのか、実際の現場の感覚を伝えた方が良いのか。
どこまで伝わったかわかりませんが、授業自体は楽しかったです♪
データサイエンス100本ノック構造化データ加工編ガイドブック [データサイエンス、統計モデル]
データサイエンス100本ノック構造化データ加工編ガイドブック
- 出版社/メーカー: ソシム
- 発売日: 2022/04/01
- メディア: 単行本
研修用のデータとして良いかなと思い購入しました。
データを見ると、けっこうリアルに近いデータが入っています。
人の名前とか店舗とか。
もちろんダミーデータだと思いますが、複数の店舗(イオンとか)をイメージして作られたのかなと思いました。
本の中身は、SQL、R、Pythonについて書かれていて
こういう書き方もあるんだなって参考になりました。
マハラノビス・タグチ(MT)システムのはなし [データサイエンス、統計モデル]
マハラノビス・タグチ(MT)システムのはなし (Best selected Business Books JUSEビジ)
- 作者: 長谷川 良子
- 出版社/メーカー: 日科技連出版社
- 発売日: 2022/05/17
- メディア: 単行本
「マハラノビス・タグチ(MT)システムのはなし」を買って読みました。
もう少しきちんと数式が書かれている本も買ったのですが、まずは、ざっくり理解したかったので、こちらから。
ほとんど数式が出てこないので、読みやすい。
1,2日もあれば読み終わります。
割と応用事例についてページが割かれているので、これから「マハラノビス・タグチ(MT)システム」を勉強・研究しようとする第一歩的な書物かなと。
主成分分析の候補 [データサイエンス、統計モデル]
統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
prcomp関数で作成したPCAの表について、分析する要素が多すぎると、PC1,PC2,PC3, ..... PC50, PC51などのように、PCが多く表示されすぎてしまうことがありますが、これを例えばPC4まで表示、といったように指定することはできますか。
【回答】
主成分の候補はいくつか方法があり、
1.スクリープロットを書いて固有値が1以上を採択する
screeplot(pca, main="Screeplot")
2.fa.parallel(X)を使う
library(psych)
fa.parallel(dat)
因子分析をする場合の因子数
the number of factors =
主成分分析をする場合の主成分数
the number of components =
の候補が出てきます。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
prcomp関数で作成したPCAの表について、分析する要素が多すぎると、PC1,PC2,PC3, ..... PC50, PC51などのように、PCが多く表示されすぎてしまうことがありますが、これを例えばPC4まで表示、といったように指定することはできますか。
【回答】
主成分の候補はいくつか方法があり、
1.スクリープロットを書いて固有値が1以上を採択する
screeplot(pca, main="Screeplot")
2.fa.parallel(X)を使う
library(psych)
fa.parallel(dat)
因子分析をする場合の因子数
the number of factors =
主成分分析をする場合の主成分数
the number of components =
の候補が出てきます。
主成分分析のバイプロット [データサイエンス、統計モデル]
統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
主成分分析でbiplotを書く際に、PC1とPC2以外の軸を書くことができますか?
【回答】
デフォルトは、PC1とPC2となります。
例えば、PC1とPC3を描く場合、choicesのオプションで変更できます。
biplot(princomp(output), choices=c(1,3))
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
主成分分析でbiplotを書く際に、PC1とPC2以外の軸を書くことができますか?
【回答】
デフォルトは、PC1とPC2となります。
例えば、PC1とPC3を描く場合、choicesのオプションで変更できます。
biplot(princomp(output), choices=c(1,3))
Welchのt検定 [データサイエンス、統計モデル]
統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
t検定で等分散とは何ですか?
【回答】
先日、t検定を解説していたときに、ぽろっと等分散という言葉を使ったのですが、知らない人がけっこう多かったです。
少し前は、等分散かどうかを検定して、その後、t検定をするという流れでした。
最近では、多重検定の観点から、いきなり等分散を仮定しないt検定をするという方が良いだろうということになっています。
では、rでどうすればいいか?
A.sales <- c(1000, 980, 1200, 1260, 1500, 1005, 820, 1490, 1500, 960)
B.sales <- c(880, 1080, 1580, 2180, 1900, 1950, 1200, 910, 2100, 1890)
t.test(A.sales, B.sales)
↑
デフォルトでは、等分散を仮定しない結果になります。
# t分散を仮定する場合
t.test(A.sales, B.sales, var.equal=T)
# t分散を仮定しない場合(Welchのt検定)
t.test(A.sales, B.sales, var.equal=F)
というオプションを付けます。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
t検定で等分散とは何ですか?
【回答】
先日、t検定を解説していたときに、ぽろっと等分散という言葉を使ったのですが、知らない人がけっこう多かったです。
少し前は、等分散かどうかを検定して、その後、t検定をするという流れでした。
最近では、多重検定の観点から、いきなり等分散を仮定しないt検定をするという方が良いだろうということになっています。
では、rでどうすればいいか?
A.sales <- c(1000, 980, 1200, 1260, 1500, 1005, 820, 1490, 1500, 960)
B.sales <- c(880, 1080, 1580, 2180, 1900, 1950, 1200, 910, 2100, 1890)
t.test(A.sales, B.sales)
↑
デフォルトでは、等分散を仮定しない結果になります。
# t分散を仮定する場合
t.test(A.sales, B.sales, var.equal=T)
# t分散を仮定しない場合(Welchのt検定)
t.test(A.sales, B.sales, var.equal=F)
というオプションを付けます。
95%信頼区間とは [データサイエンス、統計モデル]
統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
rnormという乱数を使って何度かシミュレーションしているが、毎回同じ平均と分散になるのは違和感がある。
なぜか?
【回答】
これはなかなか良い質問だなと思いました。
母集団があって、そこからランダムサンプルするたびに、平均と分散(標準偏差)は異なります。
これが統計検定のややこしいところ。
95%信頼区間とは「95%の確率で真のパラメータ(母数)がその区間に入る」と解釈できるわけではない。
正しくは、「同じ状況において、観測を複数回繰り返し95%信頼区間を求めた場合、95%はその区間に真のパラメータを含む」と、やや不自然な解釈となります。
つまり、毎回、サンプリングするたびに、平均と分散(標準偏差)が変わるということは、平均値の位置も信頼区間の長さも変わることを理解することがとても大切。
話を戻して、なぜ、同じ結果になるのかコードを見てみると
set.seed(12345)
となっていました。
ということで、そこをコメントアウトしてもらうことで、解決できました。
せっかくなので、その中からピックアップして紹介できればと思います。
【質問】
rnormという乱数を使って何度かシミュレーションしているが、毎回同じ平均と分散になるのは違和感がある。
なぜか?
【回答】
これはなかなか良い質問だなと思いました。
母集団があって、そこからランダムサンプルするたびに、平均と分散(標準偏差)は異なります。
これが統計検定のややこしいところ。
95%信頼区間とは「95%の確率で真のパラメータ(母数)がその区間に入る」と解釈できるわけではない。
正しくは、「同じ状況において、観測を複数回繰り返し95%信頼区間を求めた場合、95%はその区間に真のパラメータを含む」と、やや不自然な解釈となります。
つまり、毎回、サンプリングするたびに、平均と分散(標準偏差)が変わるということは、平均値の位置も信頼区間の長さも変わることを理解することがとても大切。
話を戻して、なぜ、同じ結果になるのかコードを見てみると
set.seed(12345)
となっていました。
ということで、そこをコメントアウトしてもらうことで、解決できました。
GitHub Training [データサイエンス、統計モデル]
エンジニアリング・マネージャーなのですが、あまりGitHubを使ったことがなく・・・(^^;
改めて仕組みや概念のトレーニングを受けてきました。
よし明日からGitHubを使うぞという仕事よりかは、マネージメントの仕事が多いのですが、個人の分析に関して、遊んでみたいと思います。
実際に使っていかないと身につかないし、すぐに忘れそう。。。w
改めて仕組みや概念のトレーニングを受けてきました。
よし明日からGitHubを使うぞという仕事よりかは、マネージメントの仕事が多いのですが、個人の分析に関して、遊んでみたいと思います。
実際に使っていかないと身につかないし、すぐに忘れそう。。。w
Doing Bayesian Data Analysis [データサイエンス、統計モデル]
Amazonでクチコミが高かったので、ポチッと買いました。
海外からの発送なので、少し時間がかかりましたが、、、
届いてみると、角とか凹んでいました。
まぁ、そうですよね。
ということで、こちらも想定内。
ただ、ものすっごく分厚い本でした。
ハードカバー : 776ページ
寸法 : 19.81 x 4.32 x 23.62 cm
と書いています。(^^;
個人的には、JAGSとか使ったことないけど、少し前に流行った言語だと思います。
RとStanについても書かれているので、細かい理論を確認する際に役に立ちそう。
頑張って読み進めたいと思います。
Doing Bayesian Data Analysis: A Tutorial with R, JAGS, and Stan
- 作者: Kruschke, John
- 出版社/メーカー: Academic Press
- 発売日: 2014/11/17
- メディア: ハードカバー
海外からの発送なので、少し時間がかかりましたが、、、
届いてみると、角とか凹んでいました。
まぁ、そうですよね。
ということで、こちらも想定内。
ただ、ものすっごく分厚い本でした。
ハードカバー : 776ページ
寸法 : 19.81 x 4.32 x 23.62 cm
と書いています。(^^;
個人的には、JAGSとか使ったことないけど、少し前に流行った言語だと思います。
RとStanについても書かれているので、細かい理論を確認する際に役に立ちそう。
頑張って読み進めたいと思います。
そのとき人工知能はどう考えたのか その2 [データサイエンス、統計モデル]
そのとき人工知能はどう考えたのか
https://skellington.blog.ss-blog.jp/2021-12-11
↑
この本を読んでいて、
・LIMEとGrad-CAMによる画像データの局所説明
・LIMEとIntegrated Gradientsによるテキスト分類の局所説明
を読んだ。
正直、画像もテキストもほとんどやったことがなく・・・(^^;
RNNとかCNNはなんとなく分かっていた程度。
でもRNNってすでに古いんですね。
この辺りの技術の進歩について行けていない。
この本の場合は、サンプルコードがついているから、それを追いかけながら、本に出てくる概念を頭に叩き込んでいきながら勉強してました。
せっかくなので、自分でテキストとか画像とかいじりながら、どう出力が変わるかをみてみると理解が深まります。
この辺り実際に手を動かしみてることが重要だなと改めて思います。
https://skellington.blog.ss-blog.jp/2021-12-11
↑
この本を読んでいて、
・LIMEとGrad-CAMによる画像データの局所説明
・LIMEとIntegrated Gradientsによるテキスト分類の局所説明
を読んだ。
正直、画像もテキストもほとんどやったことがなく・・・(^^;
RNNとかCNNはなんとなく分かっていた程度。
でもRNNってすでに古いんですね。
この辺りの技術の進歩について行けていない。
この本の場合は、サンプルコードがついているから、それを追いかけながら、本に出てくる概念を頭に叩き込んでいきながら勉強してました。
せっかくなので、自分でテキストとか画像とかいじりながら、どう出力が変わるかをみてみると理解が深まります。
この辺り実際に手を動かしみてることが重要だなと改めて思います。
[stan]階層ベイズモデルの書き方 その2 階層モデルの書き方 [データサイエンス、統計モデル]
y = β0i + β1i*x1 + ... + e
β0i = α01*w1 + α02*w2 + ...
β1i = α11*w1 + α12*w2 + ...
↑
この様な構造を持つ場合、どう書けば良いか?
まずは、
y = β0i + β1i*x1 + ... + e, e~N(0, σi)
→ y~N(β0i + β1i*x1 + ..., σi)
と変形できます。
この形を利用すると・・・
β0i = α01*w1 + α02*w2 + ...
β1i = α11*w1 + α12*w2 + ...
↑
この様な構造を持つ場合、どう書けば良いか?
まずは、
y = β0i + β1i*x1 + ... + e, e~N(0, σi)
→ y~N(β0i + β1i*x1 + ..., σi)
と変形できます。
この形を利用すると・・・
transformed parameters {
vector[K] mu_b0;
vector[K] mu_b1;
for (k in 1:K) {
mu_b0[k] = w00*iota[k]+w01*z1[k];
mu_b1[k] = w10*iota[k]+w11*z1[k];
}
}
model {
// 階層モデル
for (k in 1:K) {
b0[k] ~ normal(mu_b0[k], s_b1);
b1[k] ~ normal(mu_b1[k], s_b2);
}
// 観測モデル
for (n in 1:N)
y[n] ~ normal(b0[id[n]] + b1[id[n]]*x1[n], s_Y);
}
[stan]階層ベイズモデルの書き方 その1 切片項だけのモデル [データサイエンス、統計モデル]
通常、階層ベイズモデルといえば、
y = β0i + β1i*x1 + ... + e
β0i = α01*w1 + α02*w2 + ...
β1i = α11*w1 + α12*w2 + ...
といった構造を持つ。
stanの本とかをみても、この辺りの書き方があまり載っていなかったので、備忘録として書いておきます。
まずは、階層部分の変数を持たずに、シンプルに切片項だけのモデルの場合。
y = β0i + β1i*x1 + ... + e
β0i, β1iは、個人ごとに異質性を持つけれど、それを回帰する階層部分の変数がない場合の書き方になります。
こちらはいろいろな本に載っているので、書かなくても良いのですが。w
y = β0i + β1i*x1 + ... + e
β0i = α01*w1 + α02*w2 + ...
β1i = α11*w1 + α12*w2 + ...
といった構造を持つ。
stanの本とかをみても、この辺りの書き方があまり載っていなかったので、備忘録として書いておきます。
まずは、階層部分の変数を持たずに、シンプルに切片項だけのモデルの場合。
y = β0i + β1i*x1 + ... + e
β0i, β1iは、個人ごとに異質性を持つけれど、それを回帰する階層部分の変数がない場合の書き方になります。
こちらはいろいろな本に載っているので、書かなくても良いのですが。w
model {
// 階層モデル
for (k in 1:K) {
b0[k] ~ normal(a0, s_b0);
b1[k] ~ normal(a1, s_b1);
}
// 観測モデル
for (n in 1:N)
y[n] ~ normal(b0[id[n]] + b1[id[n]]*x1[n], s_Y);
}