クラスタリング
SVDと組み合わせることでよりクラスに分かれているクラスタリングを実行できる。
- 散布図でクラスタリングする変数を探す
- クラスタリング
- SVDを実行する
- SVDの結果をクラスタリングに取り込む
- k-meansクラスタリングの実施
- クラスタセンターを確認する
- 寄与度が大きい変数を見つける
SVD(特異値分解)
主成分分析に使われる。主成分分析は説明変数から新しい数が少なり目的変数をもとめる。因子分析は逆に目的変数の背後にはる説明変数をもとめる。
回帰分析の目的
- 分布の記述
- 2変数の関連の記述
- 分布と関連について推測
Jitterプロットを使ってみる
Inference
- 回帰分析もinferenceにつかう
- サンプル集団から回帰分析
- モデルからランダムに大量集団を作成
- サンプリングして回帰分析
- モデルのサンプリング
- interceptとslopeをヒストグラムにする
- interceptとslolpeをRで計算し誤差を導く
Standardize
- わかりやすい
- 比較できる
信頼空間
モデルを作るとかならずそれは母集団の推測になっているのでエラーを定量化する必要がある。
P-Value 偶然だとして発生する確率は xx%
回帰分析における検定
- 説明変数と、、変数には関連性がないという仮説
離散変数を使った回帰分析 カテゴラル
重回帰分析
- 説明変数と目的変数を決める
- 目的変数をパターンによって切り分ける
- 回帰分析をする ←各パターンについて
- 残りのデータで検証をしてみる
- 相関係数を求める
- 信頼空間を求める
- 解釈する
リアルな回帰分析
- confounder
- skew
- outlier, not fit trend
- line is not always the best summary
- variance change
- units, absolute or relative
- overloading
- correlation and causation
Population of 1million families
newGalton <- data.frame(parent=rep(NA,1e6),child=rep(NA,1e6))
// NAを使ってデータフレームの箱を作る
newGalton$parent <- rnorm(1e6,mean=mean(galton$parent),sd=sd(galton$parent))
// galtonの親データを1e6個作成する
// データはオリジナルデータの平均と標準偏差の正規分布から取得される。
newGalton$child <- lm1$coeff[1] + lm1$coeff[2]*newGalton$parent + rnorm(1e6,sd=sd(lm1$residuals))
// galtonの子データを作成する。
// データは回帰分析の結果を使う。ただし、residualのノイズを入れ込む。
/// ノイズは平均0でresitualsの標準偏差に従う。
smoothScatter(newGalton$parent,newGalton$child)
abline(lm1,col="red",lwd=3)
リストを作成する方法
sampleLm <- vector(100,mode="list")
for(i in 1:100){
sampleGalton <- newGalton[sample(1:1e6,size=50,replace=F),]
sampleLm[[i]] <- lm(sampleGalton$child ~ sampleGalton$parent)
}
sampleLmにlistを代入しているが、lmの結果をclass()でみるとlmになる。”list”はdata.frameで用いるらしい。とりあえずややこしい計算の結果はdata.frameで戻されることを覚えておく。data.frameのがらは”list”で作る。
回帰分析におけるt値についての説明
係数および切片はt値をもつ。回帰分析におけるt検定は帰無仮説をこれらの値を0としている。tが小さいほど0に近いことを意味する。よって棄却されるときには0以外となり、係数がついている項目が有効であることがわかる。棄却されなければその項目の係数は0であるから回帰モデルには貢献していないことが予測される。
一般化すると平均0の母集団からとられた係数とサンプルとしてとられた係数の平均についてt検定をしていることになる。
傾きが同じになるグループの回帰分析を実行する
第二パラメータに変数名を “+”でつなげていく
> hunger1.lmBoth <- lm(hunger1$Numeric ~ hunger1$Year + hunger1$Sex) > hunger1.lmBoth Call: lm(formula = hunger1$Numeric ~ hunger1$Year + hunger1$Sex) Coefficients: (Intercept) hunger1$Year hunger1$SexMale 615.3730 -0.2993 1.9175
coeffi[1]はintercept, coeffi[2]はYearの係数, coeffi[3]はSex=Maleの時の追加interceptとなる。
同じ傾き、異なった傾きで回帰モデルを作成
重回帰モデルで同じ傾きで異なった切片、異なった傾きで異なった切片の直線を計算する方法が出ている。回帰モデルに入力する値を変えるのだが、よくわからなかったので参考になりそうなページを探した。
- http://wiener.math.csi.cuny.edu/Statistics/R/simpleR/stat015.html
- https://www.zoology.ubc.ca/~schluter/R/fit-model/
- http://stackoverflow.com/questions/3017049/in-r-draw-two-lines-with-slopes-double-and-half-the-value-of-the-best-fit-line
- http://r-eco-evo.blogspot.jp/2011/08/comparing-two-regression-slopes-by.html
交互作用がない変数を追加するためには”+”で変数をつなげていけばよい。交互作用がある場合には”*”を使う。一見すると足し算や掛け算に見えるが、算術計算とは関係なく、変数をパラメータとして追加していくための記述方法だと考えればわかりやすい。
回帰分析を分散分析で検定
- http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197781346
- http://www.ab.auone-net.jp/~biology/regline/regline.htm
- http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1288680497
- http://www4.ocn.ne.jp/~murakou/anova.htm
- http://www.slideshare.net/logics-of-blue/1-4-25564403
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/71.html
- http://homepage2.nifty.com/nandemoarchive/toukei_hosoku/anova_kaiki.htm