Итак, я хочу вычислить регрессию с использованием 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
Это, вероятно, больше статистики вопрос, чем программирование вопрос R, но то, что о добавлении крошечное значение для p? например +0,000000000000000000001? –
Это не проблема кодирования. Проведите некоторое исследование того, как обрабатывать нули с преобразованиями журналов на сайте stackexchange, подходящем для статистического совета: CrossValidated.com. –
@ user2633645 или просто добавить 1, это уже закодировано в функции 'log1p' – Gregor