Я сделал многократную регрессию в цикле для различных комбинаций регрессоров (всего 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]]"