×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
全てRjpwikiの記事から。感謝。
# たくさんのグラフを一度に書くときに画面を自動的に分割する。元記事リンク
par (mfrow=n2mfrow(N)) # Nはグラフの数を入れる
# データフレームの変数名を短くする。元記事リンク
abbreviate(names(iris))
tolower(abbreviate(names(iris))) # 小文字にするにはtolower関数を使う。大文字はtoupper
# Na, NaN, Infも集計する。元記事リンク
summary(x) で集計できる。利用例
# たくさんのグラフを一度に書くときに画面を自動的に分割する。元記事リンク
par (mfrow=n2mfrow(N)) # Nはグラフの数を入れる
# データフレームの変数名を短くする。元記事リンク
abbreviate(names(iris))
tolower(abbreviate(names(iris))) # 小文字にするにはtolower関数を使う。大文字はtoupper
# Na, NaN, Infも集計する。元記事リンク
summary(x) で集計できる。利用例
PR
dat <- read.table("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1255449130",header = T)
## 普通の重回帰
dat$college <- factor(dat$college,levels=c("LA","E","BUS"))
dat$cGPA <- dat$GPA - mean(dat$GPA) # 連続変量の中心化
res.idv <- lm(salary ~ cGPA+college, dat) # 交互作用なしモデル
res.int <- lm(salary ~ cGPA * college, dat) # 交互作用ありモデル
summary(res.idv)
summary(res.int)
## 標準化偏回帰係数を求める。ダミー変数をつくり、
# ダミー変数の作成。青木先生のコードを参考にさせていただいた。感謝。
lvs <- levels(dat$college) # 水準名を確認し、オブジェクトに格納する
la.dm <- as.integer(dat$college==lvs[1])
e.dm <- as.integer(dat$college==lvs[2])
bus.dm <- as.integer(dat$college==lvs[3])
dat2 <- data.frame(la.dm, e.dm, bus.dm, dat[3:5])
dat3 <- data.frame(scale(dat2)) # 変数の標準化
## 交互作用なしモデルの標準化偏回帰係数
res.idv2 <- lm(scale(salary)~scale(GPA)+e.dm+bus.dm+la.dm, dat2)
res.idv3 <- lm(salary~GPA+e.dm+bus.dm+la.dm, dat3)
summary(res.idv2) # ダミー変数以外を標準化
summary(res.idv3) # 全て標準化
### 参考: ダミー変数での普通の重回帰
res.int.dm <- lm(salary~cGPA+e.dm+bus.dm+cGPA:e.dm+cGPA:bus.dm, dat2)
summary(res.int.dm) ## summary(res.int) と同じ
### これでも同じ
###res.int.dm2 <- lm(salary~cGPA*(e.dm+bus.dm), dat2)
res.int.dm <- lm(salary~cGPA+e.dm+bus.dm+cGPA:e.dm+cGPA:bus.dm, dat2)
summary(res.int.dm) ## summary(res.int) と同じ
### これでも同じ
###res.int.dm2 <- lm(salary~cGPA*(e.dm+bus.dm), dat2)
## 交互作用ありモデルの標準化偏回帰係数
# ダミー変数以外を標準化する。ただし、この場合ダミー変数以外の係数が1を超えることがある
summary(lm(scale(salary)~scale(cGPA)*(e.dm+bus.dm), dat2))
summary(lm(salary~GPA*(e.dm+bus.dm), dat3))# dat3は全て標準化したもの
これは間違いらしい
gpa.la <- la.dm*dat$cGPA # ここは"cGPA"にしておく。GPAだと間違い(?)
gpa.e <- e.dm*dat$cGPA
gpa.bus <- bus.dm*dat$cGPA
dat3.1 <- data.frame(dat2, gpa.la, gpa.e, gpa.bus)
dat4 <- data.frame(scale(dat3.1))
res.int2 <- lm(salary~GPA+e.dm+bus.dm+gpa.e+gpa.bus, dat4)
summary(res.int2)
リンクだけ。そのうち調べよう
Loftus, G. R., & Masson, M. E. J. (1994). Using confidence intervals in within-subject designs. Psychonomic Bulletin & Review, 1, 476-490.
Cousineau, D. (2007). Confidence intervals in within-subjects designs: A simpler solution to Loftus and Masson's method. Tutorials in Quantitative Methods for Psychology, 1, 42-45.
Masson, M. E. J. & Loftus, G. R. (2003). Using confidence intervals for graphically based data interpretation. Canadian Journal of Experimental Psychology, 57, 203-220.
S-PLUSで計算する関数があった。Rのことも書いてある。親切な人がいるものである
Wright, D. B. (2007). Graphing within-subjects confidence intervals using SPSS and S-Plus. Behavior Research Methods, 39, 82-85.
解説HP: http://www.fiu.edu/~dwright/WSCI/wscihome.htm
## HP内のサンプルコードはURL部分が少し違うので修正したものをメモしておく
dat <- data.frame(sec1=c(10,6,11,22,16,15,1,12,9,8), sec2=c(13,8,14,23,18,17,1,15,12,9), sec5=c(13,8,14,25,20,17,4,17,12,12))
library(boot)
library(Hmisc)
source("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1267850065")
wsci(dat,meth=2,diff=1)
library(boot)
library(Hmisc)
source("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1267850065")
wsci(dat,meth=2,diff=1)
Rコード (上記著者HPから感謝)
source("http://www.fiu.edu/~dwright/WSCI/wsci.R")
source("https://blog.cnobi.jp/v1/blog/user/89d80905c7038b4121822249e9062fba/1267850065") # 上のを自分用に保存しただけ
複数の質問紙を実施して、全部のデータをまとめるときに便利
青木先生の本にも、Rjiwikiにもあったが、昨日知った
知らないことが多いものだ
dat1 <- data.frame(id=c("id001", "id005", "id006", "id007", "id009"), item1=c(1,1,5,4,3), item2=c(2,3,1,5,2), item3=c(2,1,2,4,4))
dat1
dat2 <- data.frame(id=c("id001", "id002", "id003", "id007"), nitem1=c(3,3,3,3), nitem2=c(2,2,NA,2), nitem3=c(1,1,1,4))
dat2
# dat1とdat2を結合する
dat3 <- merge(dat1, dat2, all=T)
dat3
# 一致させる変数名 (id) をそろえておく。各データフレームの項目の変数名は違うものにしておく。all=Tとしておかないと、同じidのものしか抽出しない
dat3.1 <- merge(dat1, dat2)
青木先生の本にも、Rjiwikiにもあったが、昨日知った
知らないことが多いものだ
dat1 <- data.frame(id=c("id001", "id005", "id006", "id007", "id009"), item1=c(1,1,5,4,3), item2=c(2,3,1,5,2), item3=c(2,1,2,4,4))
dat1
dat2 <- data.frame(id=c("id001", "id002", "id003", "id007"), nitem1=c(3,3,3,3), nitem2=c(2,2,NA,2), nitem3=c(1,1,1,4))
dat2
# dat1とdat2を結合する
dat3 <- merge(dat1, dat2, all=T)
dat3
# 一致させる変数名 (id) をそろえておく。各データフレームの項目の変数名は違うものにしておく。all=Tとしておかないと、同じidのものしか抽出しない
dat3.1 <- merge(dat1, dat2)
いまさらながら…
1,2,3,4,5のいずれか、という感じで反応が分かっているとき
# データの用意
## 60項目の質問紙に200人が答えた、という仮想データ
dat <- data.frame(matrix(data=sample(x=5, size=12000, replace=T), nrow=200, ncol=60))
dat[,61] <- sample(x=c(6,8,NA,NaN,Inf), size=200, replace=T) ## 変なデータをつけてみる
# table関数を利用するやりかた。マジお勧め。NAとかもわかる
#datx <- factor(as.table(as.matrix(dat))) # データフレームを行列にしてtableにしてfactorにする
summary(factor(as.matrix(dat))) # 集計。as.tableはいらない
## NaNの数がわからない。Rjpwikiの記事のときとは使用が変わったようだ
sum(sapply(dat, is.nan)) # これで調べる。使わんと思うけど
# プロットして調べる
plot(as.vector(as.matrix(dat))) # 行列にしてベクトルにしてプロット。これが一番楽かも
## どのへんのデータから表示する。これはExcelの方が楽かも
sapply(dat, function(x) which(x==6))
# 他のやりかた1
sapply(dat, table, exclude=NULL)
# 他のやりかた2
cdat <- na.omit(dat)
cdat[cdat!=5&cdat!=4&cdat!=3&cdat!=2&cdat!=1]
1,2,3,4,5のいずれか、という感じで反応が分かっているとき
# データの用意
## 60項目の質問紙に200人が答えた、という仮想データ
dat <- data.frame(matrix(data=sample(x=5, size=12000, replace=T), nrow=200, ncol=60))
dat[,61] <- sample(x=c(6,8,NA,NaN,Inf), size=200, replace=T) ## 変なデータをつけてみる
# table関数を利用するやりかた。マジお勧め。NAとかもわかる
summary(factor(as.matrix(dat))) # 集計。as.tableはいらない
## NaNの数がわからない。Rjpwikiの記事のときとは使用が変わったようだ
sum(sapply(dat, is.nan)) # これで調べる。使わんと思うけど
# プロットして調べる
plot(as.vector(as.matrix(dat))) # 行列にしてベクトルにしてプロット。これが一番楽かも
## どのへんのデータから表示する。これはExcelの方が楽かも
sapply(dat, function(x) which(x==6))
# 他のやりかた1
sapply(dat, table, exclude=NULL)
# 他のやりかた2
cdat <- na.omit(dat)
cdat[cdat!=5&cdat!=4&cdat!=3&cdat!=2&cdat!=1]