2015-04-08 5 views
1

Итак, я хочу вычислить регрессию с использованием R. Проблема заключается в том, что я хочу вычислить регрессию с преобразованными в журнал переменными. Вот то, что я пытаюсь сделать:Обработка Na/NaNs в регрессии

reg1 <- lm(y~x+z+u+log(p)) 

Теперь, так как вы не можете взять логарифм 0, следующее сообщение выскакивает:

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
    NA/NaN/Inf in 'x' 

Как я могу вычислить регрессии, даже если есть NaNs (в моем случае они производятся только для первых наблюдений переменной р)? Большое спасибо

Date  y  x  z  u  p 
25.06.2009 0.582 1.145 0.603 26.36 0 
26.06.2009 0.604 1.12 0.61 25.93 0 
29.06.2009 0.647 1.108 0.647 25.35 0 
30.06.2009 0.597 1.099 0.669 26.35 0 
01.07.2009 0.604 1.085 0.633 26.22 0 
02.07.2009 0.54 1.072 0.63 27.95 0 
06.07.2009 0.543 1.048 0.57 29  0 
07.07.2009 0.512 1.044 0.567 30.85 0 
08.07.2009 0.496 1.029 0.533 31.3 0 
09.07.2009 0.487 1.018 0.515 29.78 23 
10.07.2009 0.482 1.007 0.504 29.02 66 
13.07.2009 0.473 0.996 0.503 26.31 162 
14.07.2009 0.471 0.985 0.503 25.02 235 
15.07.2009 0.472 0.979 0.492 25.89 585 
16.07.2009 0.441 0.969 0.486 25.42 668 
17.07.2009 0.431 0.954 0.461 24.34 1080 
20.07.2009 0.438 0.944 0.451 24.4 1883 
21.07.2009 0.435 0.937 0.451 23.87 2398 

EDIT Чтобы сделать себя более ясно, я просто хочу, чтобы опустить NaNs производится из журнала преобразования для моей регрессии. Потому что, если переменная p имеет нулевое значение, это фактически означает, что в этот день нет наблюдений. Я попробовал nan.action=nan.exclude. но эта работа, похоже, работает. Thx

+1

Это, вероятно, больше статистики вопрос, чем программирование вопрос R, но то, что о добавлении крошечное значение для p? например +0,000000000000000000001? –

+3

Это не проблема кодирования. Проведите некоторое исследование того, как обрабатывать нули с преобразованиями журналов на сайте stackexchange, подходящем для статистического совета: CrossValidated.com. –

+0

@ user2633645 или просто добавить 1, это уже закодировано в функции 'log1p' – Gregor

ответ

1

Если очень мало наблюдений, быстро бы исключить записи, где р = 0 , например

lm(y ~ log(p), train, subset = p>0) 
Смежные вопросы