2016-01-11 4 views
0

Когда я бег multinom(), скажет Y ~ X1 + X2 + X3, если для одной конкретной строки X1 является NA (т.е. отсутствует), но Y, X2 и X3 все они имеют значение, что вся эта строка будет выброшена (как это делает в SAS)? Как отсутствуют значения, обработанные в multinom()?Как multinom() обрабатывает значения NA по умолчанию?

ответ

0

Вы можете задать поведение

- na.omit and na.exclude: returns the object with observations removed if they contain any missing values; differences between omitting and excluding NAs can be seen in some prediction and residual functions 
- na.pass: returns the object unchanged 
- na.fail: returns the object only if it contains no missing values 

http://www.ats.ucla.edu/stat/r/faq/missing.htm

1

Вот простой пример (из ?multinom из nnet пакета), чтобы исследовать различные na.action:

> library(nnet) 
> library(MASS) 
> example(birthwt) 
> (bwt.mu <- multinom(low ~ ., bwt)) 

Преднамеренно создать NA значение:

> bwt[1,"age"]<-NA # Intentionally create NA value 
> nrow(bwt) 
[1] 189 

Тест 4 отличается na.action:

> predict(multinom(low ~ ., bwt, na.action=na.exclude)) # Note length is 189 
# weights: 12 (11 variable) 
initial value 130.311670 
iter 10 value 97.622035 
final value 97.359978 
converged 
    [1] <NA> 0 0 0 0 0 0 0 0 0 0 0 1 1 0 
[16] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
.... 

> predict(multinom(low ~ ., bwt, na.action=na.omit)) # Note length is 188 
# weights: 12 (11 variable) 
initial value 130.311670 
iter 10 value 97.622035 
final value 97.359978 
converged 
    [1] 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 
[38] 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 
..... 

> predict(multinom(low ~ ., bwt, na.action=na.fail)) # Generates error 
Error in na.fail.default(list(low = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : 
    missing values in object 

> predict(multinom(low ~ ., bwt, na.action=na.pass)) # Generates error 
Error in qr.default(X) : NA/NaN/Inf in foreign function call (arg 1) 

Так na.exclude генерирует в предсказания в то время как NAna.omit опускает его полностью. na.pass и na.fail не создадут модель. Если na.action не указано, это показывает значение по умолчанию:

> getOption("na.action") 
[1] "na.omit" 
Смежные вопросы