Нормализующая константа от плотности ядра в R
Как я могу получить нормализующую константу из нестандартного распределения. Пример:
x <- c(rnorm(500,10,1),rnorm(500,20,2),rnorm(500,35,1))
после использования плотности в R
dens<-density(x,n=length(x),adjust=0.4)
1 ответ
Решение
Результат плотности () должен быть правильной функцией плотности вероятности, поэтому площадь под кривой, возвращаемая плотностью (), уже должна быть 1.
Ваш пример:
set.seed(1)
x <- c(rnorm(500,10,1), rnorm(500,20,2), rnorm(500,35,1))
dens <- density(x, n=length(x), adjust=0.4)
Мы можем получить аппроксимацию площади под PDF, численно интегрировав ее:
install.packages("sfsmisc")
library(sfsmisc)
integrate.xy(dens$x, dens$y)
Который дает
[1] 1.000241
Площадь действительно довольно близка к 1.
Однако существуют проблемы с числовой точностью, которые могут привести к значительному отклонению этой области от 1. Они обсуждаются здесь, например.