Страница 1 из 1
Реализация линейной регрессионной функции
Добавлено: 13 дек 2013, 18:23
Greenwind
Доброго времени суток.
Суть вопроса заключается в следующем.
Нужно используя тест Колмогорова-Смирнова, проверить гипотезу о том, что population_log и f(area_ log), где f ( ) — построенная регрессионная функция, относятся к одному непрерывному распределению, причем f() необходимо построить как линейную регрессионную функцию (используя lm) для зависимости population_log от
area_log. Каким образом её нужно построить?
Код: Выделить всё
my_frame <- read.table(file="...//allcountries.txt", header=TRUE)
my_frame <-my_frame[!(my_frame[,3])<10,] // условие выбора стран по площади
my_frame <-my_frame[!is.na((my_frame[,4])),] // условие выбора стран по населению
area_log =log10(log10(my_frame[,3]))
population_log = log10(log10(my_frame[,2]))
Ссылка на текстовый файл:
https://drive.google.com/file/d/0B12xlV ... sp=sharing
Re: Реализация линейной регрессионной функции
Добавлено: 13 дек 2013, 18:50
gamm
домашние задания нужно делать самостоятельно. Хотя сама постановка задачи впечатлила своей бессмысленной заковыристостью
P.S. да, линейную регрессию строит функция lm(), как и написано. Колмогорова-Смирнова проверяет ks.test()
P.P.S. а зачем два раза log10() - для надежности?
Re: Реализация линейной регрессионной функции
Добавлено: 14 дек 2013, 10:19
Greenwind
gamm писал(а):
P.S. да, линейную регрессию строит функция lm(), как и написано. Колмогорова-Смирнова проверяет ks.test()
Да, но когда строю такую регрессионную функцию
y <-lm(population_log~area_log) и когда пытаюсь проводить ks.test(population_log, y), возникает такая ошибка:
"Ошибка в ks.test(population_log, y) :
'y' должен быть числовым или функцией или строкой именующей правильную функцию".
Каким образом можно избежать её?
Re: Реализация линейной регрессионной функции
Добавлено: 15 дек 2013, 21:32
Иван Стрельников
Проблема в том, что Вы пытаетесь применить ks.test к объектам, один из которых имеет класс lm -- т.е. к результату подгонки линейной модели, который не есть вектором с числами. Попробуйте сами посмотреть, что содержится в вашем "y":
Дальше, пусть меня поправят если ошибусь. Насколько я понял Ваша задача -- проверить гипотезу о том, что эмпирические population_log и предсказанный по модели population_log относятся к одному и тому же распределению. В таком случае Вам, банально, нужно получить предсказания по модели. Это можно сделать стандартной функцией predict(x), где х -- это ваш объект класса lm. На всякий случай почитайте хелп по этой функции. Отсюда, Ваша задача решается следующим образом:
Re: Реализация линейной регрессионной функции
Добавлено: 16 дек 2013, 13:30
Greenwind
Иван Стрельников писал(а):Проблема в том, что Вы пытаетесь применить ks.test к объектам, один из которых имеет класс lm -- т.е. к результату подгонки линейной модели, который не есть вектором с числами. Попробуйте сами посмотреть, что содержится в вашем "y":
Дальше, пусть меня поправят если ошибусь. Насколько я понял Ваша задача -- проверить гипотезу о том, что эмпирические population_log и предсказанный по модели population_log относятся к одному и тому же распределению. В таком случае Вам, банально, нужно получить предсказания по модели. Это можно сделать стандартной функцией predict(x), где х -- это ваш объект класса lm. На всякий случай почитайте хелп по этой функции. Отсюда, Ваша задача решается следующим образом:
Огромное вам спасибо, я почитаю подробно на эту тему, так как только начал осваивать систему R.