함수의 기능 :
본질적으로 함수는 데이터 모델에서 새로운 의사 난수 응답 (예 : ) 데이터를 생성 합니다. 사용되는 모델은 표준 상용주의 모델입니다. 관례와 마찬가지로 * 데이터는 알려진 상수 라고 가정합니다 . 어떤 방식으로도 샘플링되지 않습니다. 이 함수의 중요한 기능으로 보는 것은 추정 된 매개 변수에 대한 불확실성을 통합한다는 것입니다. 와이엑스
* 인터셉트 (일반적으로 좋은 생각은 아님)를 억제하지 않으려면 함수에 입력하기 전에 행렬 의 가장 왼쪽 열로 의 벡터를 수동으로 추가해야합니다 .1엑스
이 기능의 요점은 무엇입니까?
솔직히 모르겠습니다. Bayesian MCMC 루틴의 일부일 수도 있지만 실제로는 베이지안 분석을 실행하기 위해 더 많은 코드가 필요합니다. 나는 이것을 베이지안 방법에 대해 충분히 전문적으로 느끼지 못하지만이 기능은 일반적으로 사용되는 것과 같은 느낌을주지 않습니다.
또한 시뮬레이션 기반 전력 분석에도 사용될 수있었습니다. ( 이 유형의 것에 대한 정보 는 로지스틱 회귀 전력 분석 시뮬레이션 설계 실험 에서 내 대답을 참조하십시오 .) 모수 추정치의 불확실성을 고려하지 않은 이전 데이터를 기반으로 한 전력 분석은 종종 가치가 있습니다. 낙관적입니다. (여기서 요점 : 원하는 효과 크기 대 예상 효과 크기 )
이 기능을 사용하려는 경우 :
@whuber가 주석에서 언급 한 것처럼이 기능은 비효율적입니다. 이 기능을 사용하여 (예를 들어) 전력 분석을 수행하려면 함수를 두 개의 새로운 함수로 나눕니다. 첫 번째는 데이터를 읽고 매개 변수와 불확실성을 출력합니다. 두 번째 새로운 함수는 새로운 의사 난수 데이터를 생성합니다 . 다음은 예입니다 (더 개선 할 수는 있지만). 와이
simulationParameters <- function(Y,X) {
# Y is a vector of binary responses
# X is a design matrix, you don't have to add a vector of 1's
# for the intercept
X <- cbind(1, X) # this adds the intercept for you
fit <- glm.fit(X,Y, family = binomial(link = logit))
beta <- coef(fit)
fs <- summary.glm(fit)
M <- t(chol(fs$cov.unscaled))
return(list(betas=beta, uncertainties=M))
}
simulateY <- function(X, betas, uncertainties, ncolM, N){
# X <- cbind(1, X) # it will be slightly faster if you input w/ 1's
# ncolM <- ncol(uncertainties) # faster if you input this
betastar <- betas + uncertainties %*% rnorm(ncolM)
p <- 1/(1 + exp(-(X %*% betastar)))
return(rbinom(N, size=1, prob=p))
}