씨는, 지금, 그룹의 지정된 번호, 대조의 집합 주어진 시뮬레이션 데이터를 생성 한 기능을 가지고 회귀 계수의 세트 셀당 지정된 N 및 소정 그룹 내 분산
sim.factor <- function(levels, contr, beta, perCell, errorVar){
# Build design matrix X
X <- cbind(rep(1,levels*perCell), kronecker(contr, rep(1,perCell)))
# Generate y
y <- X %*% beta + rnorm(levels*perCell, sd=sqrt(errorVar))
# Build and return data frame
dat <- cbind.data.frame(y, X[,-1])
names(dat)[-1] <- colnames(contr)
return(dat)
}
는 I는 회귀 계수, 셀당 N, 기수 세트 소정의 집합 함수를 작성 직교 반대로 STS 원하는 델타 R 관심 콘트라스트^2, 필요한 집단 내 분산 리턴로는 다음 몇 가지 테스트를 수행 한 후
ws.var <- function(levels, contr, beta, perCell, dc){
# Build design matrix X
X <- cbind(rep(1,levels), contr)
# Generate the expected means
means <- X %*% beta
# Find the sum of squares due to each contrast
var <- (t(means) %*% contr)^2/apply(contr^2/perCell, 2, sum)
# Calculate the within-conditions sum of squares
wvar <- var[1]/dc - sum(var)
# Convert the sum of squares to variance
errorVar <- wvar/(3 * (perCell - 1))
return(errorVar)
}
를 함수는 콘트라스트 C1의 원하는 델타 R^2를 생성하는 것 .
contr <- contr.helmert(3)
colnames(contr) <- c("c1","c2")
beta <- c(0, 1, 0)
perCell <- 50
levels = 3
dc <- .08
N <- 1000
# Calculate the error variance
errorVar <- ws.var(levels, contr, beta, perCell, dc)
# To store delta R^2 values
d1 <- vector("numeric", length = N)
# Use the functions
for(i in 1:N)
{
d <- sim.factor(levels=3,
contr=contr,
beta=beta,
perCell=perCell,
errorVar=errorVar)
d1[i] <- lm.sumSquares(lm(y ~ c1 + c2, data = d))[1, 2] # From the lmSupport package
}
m <- round(mean(d1), digits = 3)
bmp("Testing simulation functions.bmp")
hist(d1, xlab = "Percentage of variance due to c1", main = "")
text(.18, 180, labels = paste("Mean =", m))
dev.off()
패트릭