Нормализующая константа от плотности ядра в 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. Они обсуждаются здесь, например.

Другие вопросы по тегам