Расчет вероятности покрытия интервала прогнозирования (PICP)
В цифровом картографировании почв (DSM) мы делаем прогнозы пространственного распределения свойств почвы, которое сопряжено с неопределенностями / ошибками. Для количественной оценки точности мы разбиваем данные на обучающий и тестовый наборы, где мы обучаем модель машинного обучения (например, случайный лес, аддитивные модели, сплайны и т. д.) на обучающем наборе и оцениваем модель на тестовом наборе. Затем мы предсказываем ковариаты, чтобы составить непрерывную карту, а также предсказываем неопределенности (например, стандартное отклонение, стандартная ошибка, предельный диапазон предсказания и т. д.). Но как мы оцениваем оценки неопределенности, которые мы только что предсказали? Одним из вариантов является расчет вероятности покрытия интервала прогнозирования (PICP), который измеряет, насколько хорошо прогнозы попадают в сформулированный интервал прогнозирования (PI). PI похожи на доверительные интервалы, но используют прогнозируемые данные для определения интервалов.
Эта функция будет в пакете rafikisol R, однако я еще не загрузил ее, так как есть еще несколько функций, которые я хочу добавить. Тем не менее, мы превратим его в функцию под названием calcPICP(), которая была в основном взята из книги «Использование R для цифрового картирования почвы» Malone et al., (2017).
Функция принимает 3 параметра: x = a data frame of the data, response = the vector of the measured data (e.g., data$response), and pred = the predicted value (e.g., data$predicted).
#We чем сделать ряд квантилей из нормального кумулятивного распределения.
#Then составляем матрицу с длиной строки данных и столбцов qp
#Now мы должны обойти квантили и умножить его на стандартное отклонение, чтобы получить серию стандартных ошибок с разными интервалами предсказания.
}
#Make другую матрицу, такую же, как и раньше, для верхних пределов
#We вычислить верхние пределы, добавив ряд стандартных ошибок к предсказаниям модели.
uMat[, i] <- pred + vMat[, i]
}
#We составляем еще одну матрицу для нижних пределов #We вычисляем нижние пределы
, вычитая ряд из предсказанных значений.
lMat[, i] <- pred - vMat[, i] }
#Now мы хотим увидеть, какие интервалы прогнозирования охватывают измеренные данные, создавая матрицу из 1 и 0.
bMat[, i]<-as.numeric(response <= uMat[, i] &
response >= lMat[, i])
}
#To вычисляем PICP, берем colsums/nrow*100 для матрицы 0s и 1s
#Make вектор уровней достоверности
#Make имя правильно
#must добавить значения осей для построения
ccc$y = 90 #y axis
мы можем построить график PICP в CI, добавить линию 1:1 и CCC geom_point()+
geom_point()+ #add points
geom_text(data = ccc,aes(x= x, y =y, label = paste("CCC = ",round(CCC, 2))))+ #add CCC value
geom_abline(slope = 1, intercept = 0, linetype = "dashed", color = 'red')+ #add 1:1 line
labs(x = ‘Confidence level’, y = “PICP”, title = “PICP to confidence level”)+ #labels
theme_bw() #make it look good
, #Now мы хотим вернуть список графика, а также кадр данных общих результатов.
Теперь постройте данные.
Комментарии
Отправить комментарий