裏 RjpWiki

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

懐かしのライフゲーム

2012年12月21日 | ブログラミング

昔,BASIC で組んで喜んでいたものだ

10分ほどで組んで,チューニング

for を使っているけど,速すぎる。

ただ,図を描くのは一気呵成でないといけないので,rect で引数にベクトルを与えた。

life <- function(xy, step = 100, nrow = 100, ncol = nrow, sleep = 0) {
    a <- matrix(0, nrow, ncol)
    a[xy] <- 1
    nrow1 <- nrow - 1
    ncol1 <- ncol - 1
    old <- par(mar = c(0, 0, 0, 0))
    for (l in seq_len(step)) {
        b <- a
        plot(1, 1, type = "n", xlim = c(1, nrow), ylim = c(1, ncol), bty = "n", axes = FALSE, xlab = "", ylab = "")
        i0 <- j0 <- numeric(nrow * ncol)
        n <- 0
        for (i in 2:nrow1) {
            for (j in 2:ncol1) {
                if (a[i, j] == 0 && sum(a[(i - 1):(i + 1), (j - 1):(j + 1)]) == 3) {
                  b[i, j] <- 1
                } else if (a[i, j] == 1 && (sum(a[(i - 1):(i + 1), (j - 1):(j + 1)]) <= 2 || sum(a[(i - 1):(i + 1), (j -
                  1):(j + 1)]) >= 5)) {
                  b[i, j] <- 0
                }
                if (b[i, j]) {
                  n <- n + 1
                  i0[n] <- i
                  j0[n] <- j
                }
            }
        }
        i0 <- i0[1:n]
        j0 <- j0[1:n]
        rect(i0 - 0.5, j0 - 0.5, i0 + 0.5, j0 + 0.5, col = "red", border = "red")
        Sys.sleep(sleep)
        a <- b
    }
    par(old)
}
x <- rbind(cbind(rep(49, 11), 45:55), cbind(rep(50, 11), 45:55), cbind(rep(51, 11), 45:55))
life(x, step = 25)
x <- cbind(sample(100, 5000, replace = TRUE), sample(100, 5000, replace = TRUE))
life(x, step = 400)
x <- matrix(c(18, 11, 18, 29, 18, 30, 18, 31, 19, 12, 19, 29, 20, 10, 20, 11, 20, 12, 20, 31), byrow = TRUE, ncol = 2)
life(x + 30, step = 200)

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

ダメ出し:結果をもっとよく見よう

2012年12月21日 | ブログラミング

社会調査士のためのこれからの因子分析 on Rpubs

お詫びと訂正とやったね にて

訂正があったので,それはよしと

> mirtパッケージのconfmirt.model()関数で,カンマが含まれている複数行のモデルを書いていて,knitrするとエラーが生じるのは回避できませんでした。ので,Rpubsの方には載ってません。ご容赦ください。

これは,confmirt.model 関数の file 引数を使うことによって解決できる問題。

結果をよく見ようというのは,

result.mirt <- mirt(Science.n, 3, itemtype = "graded", rotate = "promax")
summary(result.mirt)

##
## Rotation:  promax
##
## Rotated factor loadings:
##
##                F_1    F_2    F_3    h2
## Comfort      0.293 -0.218  0.347 0.421
## Environment -0.113 -0.665 -0.039 0.429
## Work        -0.148  0.048  0.705 0.390
## Future       0.049  0.038  0.747 0.591
## Technology   0.077 -0.679 -0.141 0.449
## Industry    -0.069 -0.680  0.107 0.487
## Benefit      1.000  0.068  0.011 0.996

の部分。

Benefit の因子負荷量が 1.000 となっている(実際には 1 に限りなく近い値であるはず)。本当に 1 なのではなくて,収束計算中に因子負荷量が 1 より大きくなったので直前の会を使ったか,強制的に 1 にして収束計算を打ち切ったかであろう。
しかし,その実態は,不適切解(ヘイウッドケース)。そのまま解釈を進めるのでなく,何とか対処しなくては。

そのほか,grm についても,「Warning: 計算結果が NaN になりました」がたくさん出る。

RStudio,knitr, knitToHTML, RPubs 関連で,R のコードと結果を含む HTML 文書が氾濫しているが,本当に R のコードと結果のみというものが多い。そういうものは,文書とはいえない。他人も参考にしにくい(参考にならない)。コードや結果について何か書くという過程があれば,間違いや問題点に気づくのではないかなあとも思う。

 

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

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

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