Lojistik regresyon modeli manipülasyonu


12

Aşağıdaki kodun ne yaptığını anlamak istiyorum. Kodu yazan kişi artık burada çalışmıyor ve neredeyse tamamen belgelenmemiş. Benden " bayesli bir lojistik regresyon modeli " olduğunu düşünen biri tarafından araştırmam istendi.

bglm <- function(Y,X) {
    # Y is a vector of binary responses
    # X is a design matrix

    fit <- glm.fit(X,Y, family = binomial(link = logit))
    beta <- coef(fit)
    fs <- summary.glm(fit)
    M <- t(chol(fs$cov.unscaled))
    betastar <- beta + M %*% rnorm(ncol(M))
    p <- 1/(1 + exp(-(X %*% betastar)))
    return(runif(length(p)) <= p)
}

Lojistik bir modele uyduğunu, tahmin edilen kovaryans matrisinin Cholseky faktorizasyonunun devralmasını aldığını, bunu den gelen bir çekiliş vektörü ile çarpar ve sonra model tahminlerine eklenir. Bu daha sonra tasarım matrisi ile çarpılır, bunun ters logiti U ( 0 , 1 ) ' den bir çekiliş vektörü ile karşılaştırılır ve sonuçtaki ikili vektör geri döndürülür. Fakat bütün bunlar istatistiksel olarak ne anlama geliyor ?N(0,1)U(0,1)


Muhtemelen bunun hangi alanda kullanıldığını bilmek çok yardımcı olacaktır ..
naught101

2
Temel olarak, işlev, verilerinizin (frekanslı) modelinden veri üretir ve gerçek parametreler hakkında belirsizlik içerir. Bir Bayes MCMC rutininin parçası olabilir, ancak simülasyon tabanlı güç analizinde de kullanılabilir (nb, belirsizliği dikkate almayan önceki verilere dayanan güç analizleri genellikle iyimserdir ).
gung - Monica'yı eski durumuna döndürün

Bir şey değil, @PSellaz. Kimse cevap vermediğinden, bunu 'resmi' bir cevaba dönüştüreceğim.
gung - Monica'yı eski durumuna getirin

Yanıtlar:


7


YX

1X

Bu işlevin amacı neydi:
Dürüst olmak gerekirse bilmiyorum. Bir Bayes MCMC rutininin parçası olabilirdi, ama sadece tek bir parça olurdu - bir Bayes analizi yapmak için başka yerlerde daha fazla koda ihtiyacınız olacak. Bu konuda kesin yorum yapmak için Bayesian yöntemleri konusunda yeterince uzman hissetmiyorum, ancak işlev bana tipik olarak kullanılan şey gibi 'hissetmiyor'.

Simülasyon tabanlı güç analizlerinde de kullanılabilirdi. (Buradaki cevabım bölümüne bakın: Lojistik regresyon güç analizinin simülasyonu - bu tür bir şey hakkında bilgi için tasarlanmış deneyler .) Parametre tahminlerinin belirsizliğini hesaba katmayan önceki verilere dayanan güç analizlerinin sıklıkla olduğunu belirtmek gerekir. iyimser. (Bu noktayı burada tartışıyorum: İstenen etki büyüklüğü ile beklenen etki büyüklüğü arasındaki fark .)


Y

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))
}

4
+1. Bana göre, garip olan kısım, uydurma ve simüle edilmiş tahminlerin hepsinin tek bir fonksiyonun gövdesi içinde yapılmasıdır. Normalde, bunun gibi işlemler önce uyumun hesaplanması (geri dönüş betave M) ve daha sonra bu uyum temelinde çok sayıda iid simülasyonu yaratılmasıyla yapılır. (Bunları aynı fonksiyona koymak gereksiz yere her seferinde tekrarlanmasına neden olur ve hesaplamaları büyük ölçüde yavaşlatır.) Bu simülasyonlardan, yanıtların doğrusal olmayan veya çok karmaşık kombinasyonları için tahmin aralıkları ( diğerlerinin yanı sıra ) kurtarılabilir .
whuber

@whuber, katılıyorum. Aslında, simulasyon için kullanılmadan önce fonksiyonun 2 farklı fonksiyona bölüneceğini öne sürmeyi düşünüyordum, ama bu sorunun bir parçası gibi görünmüyordu.
gung - Monica'yı eski durumuna getirin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.