2016-04-29 3 views
1

У меня есть логистическая регрессия для оценки успеха гнездования, вы найдете некоторые данные в этой ссылке:Извлечения коэффициентов из логистической регрессии с циклом

https://www.dropbox.com/s/okp2iudnace6fha/data1.csv?dl=0

Все мой объясняющие переменные являются непрерывным, чтобы получить линейный тренд , Я хочу, чтобы проанализировать, есть ли изменения с течением времени на сезонные колебания выживания гнезда:

год (как 0,1,2,3 ...)

прокладки даты (LD)

NestAge

Это моя модель:

glm(survive~LD+yr+yr^2+LD:yr+LD:yr^2+NestAge,family=binomial(link=logexp(data1$exposure)), data=data1) 

Это разоблачение ссылка Я использую:

library(MASS) 
    logexp <- function(exposure = 1) 
    { 
     linkfun <- function(mu) qlogis(mu^(1/exposure)) 
     ## FIXME: is there some trick we can play here to allow 
     ## evaluation in the context of the 'data' argument? 
     linkinv <- function(eta) plogis(eta)^exposure 
     mu.eta <- function(eta) exposure * plogis(eta)^(exposure-1) * 
     .Call(stats:::C_logit_mu_eta, eta, PACKAGE = "stats") 
     valideta <- function(eta) TRUE 
     link <- paste("logexp(", deparse(substitute(exposure)), ")", 
        sep="") 
     structure(list(linkfun = linkfun, linkinv = linkinv, 
        mu.eta = mu.eta, valideta = valideta, 
        name = link), 
       class = "link-glm") 
    } 

Чтобы получить коэффициенты, я создал цикл, который извлекает, но он не работает.

a<-as.matrix(coef(model)) 
intercept<-a[1,] 
slope<-a[2,] 
for (i in 1:6) { 
    i<-as.numeric(i) 
    sub<-subset(data1,data1$yr==i) 
    g<- intercept + slope*sub$yr[i] 
    dsr <-exp(g)/ (1+ exp(g)) 
} 

Не могли бы вы помочь мне исправить это? Заранее спасибо.

+1

что является Yra со ссылкой на в строке: 'суб <-подмножество (data1, data1 $ Yra == я)'? Это не одна из переменных данных1. –

+1

Также вы зацикливаете i 26 раз, когда ни одна из переменных в наборе данных не состоит из 26 уровней фактора. Проверено с помощью 'sapply (имена (data1), function (x) table (data1 [, x])%>% length)', который дает уровни для года, гнезда, yr, выдержки, выживания, судьбы, LD и NestAge как длины 6, 699, 6, 30, 2, 2, 33, 33. –

+0

Это правда! Простите, спасибо, что рассказала мне, я уже редактировал свой код. Это было 26, потому что это полный набор данных (я хочу сохранить пример данных в своем Dropbox). – MSS

ответ

0

Он работает сейчас:

dsr=0 
for (i in 1:6) { 
    i<-as.numeric(i) 
    sub<-subset(data1,data1$yr==i) 
    g<- intercept + slope*sub$yr[i] 
    dsr [i]<-plogis(g) 
}