裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

この件は余りがんばらなくてもいいです

2013年07月30日 | ブログラミング

t 検定(対応のない場合)」pdf ファイルだけど...

以前にも,「for で処理すると,処理対象の変数名が出ないのがイヤだ」というのに対して,mapply などというつまらないものを勧めたのだけど,今回は,もっとつまらないものを紹介してみよう。

> まとめて一気にやりたいなら,以下のように for を使ってやることもできます。
> でも,やはり変数名が a と表示されてしまうので,間違えてしまいそう...
> for(a in 26:28) {
>     print(t.test(xx[,a] ~ xx$
性別))
> }

これを,以下のようにします。

# 以下の 3 行は,テストデータ作り
xx ← data.frame(matrix(rnorm(100), 20))
colnames(xx) ← LETTERS[1:5]
xx$性別 ← factor(rep(c("male", "female"), each=10))
# かなりトリッキーに
lapply(colnames(xx)[2:5], function(a) {
    eval(parse(text=sprintf(
        "t.test(xx$%s ~ xx$性別)"
    , a)))})

こうすれば,変数名が出ますが,そこまでしなくても,for ループの中で,cat などで対象変数名を書き出しておくだけで十分でしょう。

for (a in 26:28) {
    cat("Variable:", colnames(xx)[a], "\n")
    print(t.test(xx[,a] ~ xx$性別)
}


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:使うべき関数を使おう

2013年07月30日 | ブログラミング

「尺度作成(α係数など)」pdf ファイルなんだけど...

まあ,うっかりということではあるのだろうけど,

> なお,合計を項目数で割ったものを合計得点にしたければ...
> to.f1 ← rowSums(x[,l.f1]) / 8

> などとしておけばよいです。

当然のことではあるが,ここは rowMeans を使う。幾つで割るかなんてのをそのまま数字を書くとろくなことはない。多くて数えるのが大変だったり,間違って数えたり,あとで変更があったりと,不都合なことが起きる原因は枚挙にいとまがない。

to.f1 ← rowMeans(x[, l.f1])

和をデータの個数で割るのは,平均の定義だけど,うっかり mean を使うのを忘れること(人)がけっこういる。

例えば,TRUE/FALSE を返す n 回のシミュレーション結果のまとめで,TRUE の確率を求めるとき,TRUE/FALSE も 1/0 と扱われて四則演算の対象になるよというのを思い出すためか sum(result)/n とする人が多いが これは mean(result) でよい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

もっとがんばりましょう:3次元因子空間の描画

2013年07月30日 | ブログラミング

因子分析(2)」pdf ファイルなんだけど...

ページの最後に,Mac の場合にのみということで,Grapher を使って3 因子を 3 次元空間に描く方法を紹介している。

この著者は,何でも R でやってみようという心意気がうすくて,Excel なんかもよく使うのだけど,これだって,ちゃんと R でやれる。R でやれば,Windows ユーザもできるのだから。

やり方は簡単で,loadings に 3 因子の因子負荷行列が入っているとして,以下のようにするだけ。

library(rgl)
plot3d(loadings, size=10)
text3d(loadings, texts=rownames(loadings), adj=rep(1.2, 2))

マウスでグリグリ動かせる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村