Объедините результаты и результаты тестов многих моделей регрессии в одном файле CSV - PullRequest
0 голосов
/ 07 января 2019

Я сделал многократную регрессию в цикле для различных комбинаций регрессоров (всего 25 моделей). Сводные результаты каждой из этих моделей были сохранены в списке списков. Каждый компонент списка представляет собой сводный результат одной регрессии, которая сама по себе является списком.

Для каждой из этих регрессионных моделей я выполнил тест Дурбина Уотсона, тест Бреуша Годфри, тест Бреуша Пагана и тест Шапиро Уилка. Сводка результатов и результатов этих испытаний была сохранена в их отдельных файлах CSV, причем каждый из этих файлов CSV содержит полные результаты теста для всех 25 моделей одна за другой.

На самом деле я бы предпочел хранить итоговые результаты и результаты всех тестов для каждой из этих моделей вместе, один за другим, в одном файле, например так: -

Сводная информация о модели - для модели 1

тест Дурбина-Ватсона - для модели 1

Тест на нормальность Шапиро-Вилка - для модели 1

и т.д.

Сводная информация о модели - для модели 2

тест Дурбина-Ватсона - для модели 2

Тест на нормальность Шапиро-Вилка - для модели 2

и т.д.

Эти команды генерируют соответствующие файлы, содержащие результаты соответствующего теста для всех 25 моделей

filename1 <- "mytestfileFinal.csv"
for (i in 1:length(modelfits1)) {
    testoutput <- summary(modelfits1[[(i)]])
    capture.output(testoutput, file = filename1, append = TRUE)
}

Вывод так: -

регрессия временных рядов с данными "zoo": Start = 2016-10-03, End = 2017-03-31

Вызов: dynlm (формула = as.formula (modelformula1))

Остаточные: Мин 1Q Медиана 3Q Макс -5308,9 -1110,4 -29,1 1130,9 6036,2

Коэффициенты: Оценка Станд. Значение ошибки t Pr (> | t |) (Перехват) -4,51086 141,70680 -0,032 0,9746 as.zoo (dtempxts_1610_1703) -168,43261 41,65874 -4,043 7,89e-05 * L (as.zoo (dusagexts_1610_1703), 1: 1) -0,12407 0,07438 -1,668 0,0971. L (as.zoo (dtempxts_1610_1703), 1: 1) 26,23201 44,00455 0,596 0,5519 as.zoo (cointresL1)
-0,21260 0,05154 -4,125 5,73e-05
--- знак коды: 0 ‘’ 0,001 ‘’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘’ 1

Остаточная стандартная ошибка: 1901 на 175 степенях свободы Несколько R-квадрат: 0,1812, скорректированный R-квадрат: 0,1625 F-статистика: 9,68 вкл. 4 и 175 DF, значение p: 4,275e-07

регрессия временного ряда с данными "зоопарка": начало = 2016-10-04, конец = 2017-03-31

Вызов: dynlm (формула = as.formula (modelformula1))

Остаточные: Мин 1Q Медиана 3Q Макс -5358,0 -1130,5 -48,5 1138,8 6016,9

Коэффициенты: Оценка Станд. Значение ошибки t Pr (> | t |) (Перехват) -2.05255 142.86944 -0,014 0,988554 as.zoo (dtempxts_1610_1703) -163,37609 44,66815 -3,658 0,000338 * L (as.zoo (dusagexts_1610_1703), 1: 1) -0,12522 0,07515 -1,666 0,097504. L (as.zoo (dtempxts_1610_1703), 1: 2) 1 30,06316 46,02972 0,653 0,514543
L (as.zoo (dtempxts_1610_1703), 1: 2) 2 12,47362 45,30022 0,275 0,783373 as.zoo (cointresL1) -0,21473 0,05245 -4,094 6,5e-05
--- знак коды: 0 ‘’ 0,001 ‘’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘’ 1

Остаточная стандартная ошибка: 1911 на 173 степенях свободы R-квадрат: 0,1818, скорректированный R-квадрат: 0,1581 F-статистика: 7,687 в 5 и 173 DF, значение p: 1,501e-06

filename1 <- "mytestfile_st.csv"
for (i in 1:length(modelfits1)) {
    stoutput <- shapiro.test(modelfits_res[[i]]$residuals)
    capture.output(stoutput, file = filename1, append = TRUE)
}

Вывод примерно так: - тест нормальности Шапиро-Вилка

данные: modelfits_res [[i]] $ остаток W = 0,99192, p-значение = 0,4316

Тест на нормальность по Шапиро-Вилку

data: modelfits_res [[i]] $ residuals W = 0,98642, p-значение = 0,07991

filename1 <- "mytestfile_dwt.csv"
for (i in 1:length(modelfits1)) {
    dwtoutput <- dwtest(modelfits1[[i]])
    capture.output(dwtoutput, file = filename1, append = TRUE)
}

Вывод так: - тест Дурбина-Ватсона

данные: modelfits1 [[i]] DW = 2,094, p-значение = 0,7247, альтернатива гипотеза: истинная автокорреляция больше 0

тест Дурбина-Ватсона

данные: modelfits1 [[i]] DW = 2,0239, p-значение = 0,5517, альтернатива гипотеза: истинная автокорреляция больше 0

Я попробовал приведенный ниже код (только для 1 модели для тестирования), чтобы добиться того, что я пытался сделать, но это не сработало.

filename1 <- "mytestfile_alltest.csv"
for (i in 1: 1)) {
    stoutput <- shapiro.test(modelfits_res[[i]]$residuals)
    dwtoutput <- dwtest(modelfits1[[i]])
    fulloutput <- cat(stoutput, dwtoutput, sep = "\n")
    capture.output(fulloutput, file = filename1, append = TRUE)
}

Фактический вывод из моего кода, который не работает: -

Вывод вышеприведенного кода выглядит так: -

[1] "c (W = 0,986424495866567) \ nc (DW = 2.09395526077259)"
«0.0799081371360976 \ n тест Дурбина-Ватсона»
[3] «Тест нормальности Шапиро-Вилька \ ntrue автокорреляция больше, чем 0 "" modelfits_res [[i]] $ residuals \ n0.724719582360738 "
[5] "c (W = 0,986424495866567) \ nmodelfits1 [[i]]"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...