2013-06-14 3 views
1

Как вы знаете, существует методика, называемая точной логистической регрессией. Idre из UCLA обеспечивает отличный пример анализа. (http://www.ats.ucla.edu/stat/r/dae/exlogit.htm) Когда я упражняюсь с примером анализа, я сталкиваюсь с ошибкой для knitr (+ lyx).knitr + lyx: ошибка в практике точной логистической регрессии

В середине списка синтаксиса на веб-странице синтаксис ниже приводит к ошибке. Кажется, что Книтр хорошо интерпретирует кусок, но лиза вызывает ошибку, связанную с выходом в PDF.

<<>>= 
## model with female predictor only' 
m.female <- elrm(formula = admit/ntrials ~ female, interest = ~female, iter = 22000, dataset = cdat, burnIn = 2000) 
@ 

LYX выдает сообщение об ошибке, как это:

Running: pdflatex "logistics.regression.tex" > /dev/null 
11:50:28.071: Error while exporting format: pdf2../../../src/support/Systemcall.cpp(270): Systemcall: 'pdflatex "logistics.regression.tex"' finished with exit code 1 

Между тем, в поле ошибки LyX, я вижу следующее сообщение:

\end{verbatim}      
You need to provide a definition with \DeclareInputText or \DeclareInputMath before using this key 

Синтаксис выше в куске , однако, хорошо работает в терминале R без каких-либо проблем. Должен ли я добавить опцию knitr для куска? Тогда что это? Заранее спасибо.

Йонг Хва

require(knitr) 
require(elrm) 
dat <- read.table(text = " 
female apcalc admit  num 
0  0  0   7 
0  0  1   1 
0  1  0   3 
0  1  1   7 
1  0  0   5 
1  0  1   1 
1  1  0   0 
1  1  1   6", 
    header = TRUE) 
dat 
summary(dat) 
dat <- dat[rep(1:nrow(dat), dat$num), -4] 
summary(dat) 
xtabs(~ female + apcalc, data=dat) 
xtabs(~ female + admit, data=dat) 
xtabs(~ apcalc + admit, data=dat) 
xtabs(~ female + apcalc + admit, data=dat) 
x <- xtabs(~admit + interaction(female, apcalc), data = dat) 
x # view cross tabs 
cdat <- data.frame(female = rep(1:0, 2), apcalc = rep(1:0, each = 2), admit = x[1, ], ntrials = colSums(x)) 
cdat # view collapsed data set 
## model with female predictor only 
m.female <- elrm(formula = admit/ntrials ~ female, interest = ~female, iter = 22000, dataset = cdat, burnIn = 2000) 
####### the last syntax causes an error in lyx (+ knitr) 
+1

1. Пожалуйста, пост минимальный пример, если это возможно; 2. Также опубликуйте вывод 'library (knitr); sessionInfo() '. –

+0

от Чен Хва: R версии 2.15.2 (2012-10-26) Платформа: i686-PC-Linux-гну (32-битный) локали: [1] LC_CTYPE = ko_KR.UTF-8 LC_NUMERIC = С [3] LC_TIME = ko_KR.UTF-8 LC_COLLATE = ko_KR.UTF-8 [5] LC_MONETARY = ko_KR.UTF-8 LC_MESSAGES = ko_KR.UTF-8 [7] LC_PAPER = С = С lc_name [9 ] LC_ADDRESS = C LC_TELEPHONE = C [11] LC_MEASUREMENT = ko_KR.UTF-8 LC_IDENTIFICATION = C – user2484516

ответ

2

Проблема возникла из бара прогресса (в частности Забой \b). Два возможных решения:

  1. Связаться с автором elrm и запросить аргумент progress = TRUE/FALSE в elrm(), так что вы можете подавить прогресс бар с, например, elrm(..., progress = FALSE);
  2. Перемещение вызова elrm() в отдельный кусок и скрыть вывод строки состояния, например,

    <<>>= 
    require(elrm) 
    dat <- read.table(text = " 
    female apcalc admit  num 
    0  0  0   7 
    0  0  1   1 
    0  1  0   3 
    0  1  1   7 
    1  0  0   5 
    1  0  1   1 
    1  1  0   0 
    1  1  1   6", 
        header = TRUE) 
    dat 
    summary(dat) 
    dat <- dat[rep(1:nrow(dat), dat$num), -4] 
    summary(dat) 
    xtabs(~ female + apcalc, data=dat) 
    xtabs(~ female + admit, data=dat) 
    xtabs(~ apcalc + admit, data=dat) 
    xtabs(~ female + apcalc + admit, data=dat) 
    x <- xtabs(~admit + interaction(female, apcalc), data = dat) 
    x # view cross tabs 
    cdat <- data.frame(female = rep(1:0, 2), apcalc = rep(1:0, each = 2), admit = x[1, ], ntrials = colSums(x)) 
    cdat # view collapsed data set 
    ## model with female predictor only 
    @ 
    
    <<results='hide'>>= 
    m.female <- elrm(formula = admit/ntrials ~ female, interest = ~female, iter = 22000, dataset = cdat, burnIn = 2000) 
    @ 
    
    <<>>= 
    summary(m.female) 
    @ 
    
+0

Благодарим вас за любезный совет. Опция 'results =' hide '' и разделение summary() от нее очень полезны, когда я встречаю некоторые функции с индикатором выполнения. Огромное спасибо. – user2484516