2012-03-13 3 views
-1

Кажется, что функция lm не работает должным образом в любых столбцах, которые имеют 0 в качестве значения данных. Вот мой код:R линейная модель не может обрабатывать значения 0

project.lm = lm(SalePrice ~Lot.Area + Year.Built + Year.Remod.Add + Gr.Liv.Area + 
       Yr.Sold + Bsmt.Unf.SF, project.table) 

Но когда я делаю резюме из project.lm, я буквально тысячи переменных в моей линейной модели, по сути одной переменной для каждого значения Bsmt.Unf.SF. Это происходит для всех столбцов, где есть значение 0; в противном случае все работает нормально. Есть идеи?!?

+4

Ваши переменные, вероятно, не сохраняются как числа, а как символы или факторы. Проверьте, выполнив 'str (project.table)'. Проблема не в 'lm', а в коде, который вы использовали для импорта ваших данных. – joran

+0

аххх это точно! как бы я прочитал его по-другому? Я просто сделал project.table = read.csv (url, header = T) – user983567

+2

это зависит от того. R будет пытаться получить тип данных правильно, но это зависит от чистоты файла данных. Убедитесь, что числовые столбцы не содержат в них никаких символов. Вы можете преобразовать столбцы после факта с чем-то вроде dat $ newcol <- as.numeric (as.character (dat $ oldcol)) –

ответ

0

См. Документацию для read.csv и read.table: есть аргумент stringsAsFactors, который по умолчанию имеет значение ИСТИНА. Установите его в ЛОЖЬ, и вы можете быть счастливее :-)

+0

Но строки все равно нужно будет квантовать, прежде чем перейти в lm. – smci