Verileriniz, ayrıktan uzak görünüyor. Sürekli verilerle çalışırken bir olasılık beklemek yanlıştır. density()
, gerçek yoğunluk işlevine yaklaşan ampirik yoğunluk işlevi sunar. doğru bir yoğunluğudur kanıtlamak için, biz eğri altında kalan alan hesaplamak: Bazı yuvarlama hatası Verilen
energy <- rnorm(100)
dens <- density(energy)
sum(dens$y)*diff(dens$x[1:2])
[1] 1.000952
. Eğri altındaki alan bire kadar toplanır ve dolayısıyla density()
'un sonucu bir PDF'nin gereksinimlerini karşılar.
hist
ait probability=TRUE
seçeneği veya işlevi density()
(veya her ikisi)
örneğin kullanın: Eğer gerçekten bir ayrık bir olasılık gerekiyorsa
hist(energy,probability=TRUE)
lines(density(energy),col="red")
verir
değişken, kullanırsınız:
x <- sample(letters[1:4],1000,replace=TRUE)
prop.table(table(x))
x
a b c d
0.244 0.262 0.275 0.219
Düzenleme: naif count(x)/sum(count(x))
bir çözüm değildir neden illüstrasyon. Gerçekten de, bidonların değerleri bire, çünkü eğrinin altındaki alanın yaptığıdır. Bunun için 'kutuların' genişliği ile çarpmanız gerekir. PDF'yi dnorm()
kullanarak hesaplayabildiğimiz normal dağılımı yapın. Aşağıdaki kod, normal bir dağılım oluşturur yoğunluğu hesaplar ve saf çözelti ile karşılaştırılmaktadır:
x <- sort(rnorm(100,0,0.5))
h <- hist(x,plot=FALSE)
dens1 <- h$counts/sum(h$counts)
dens2 <- dnorm(x,0,0.5)
hist(x,probability=TRUE,breaks="fd",ylim=c(0,1))
lines(h$mids,dens1,col="red")
lines(x,dens2,col="darkgreen")
verir:
kümülatif dağılım fonksiyonu
olarak case @Iterator haklıydı, kümülatif dağılımı kurmak oldukça kolay yoğunluktan ribution fonksiyonu. CDF, PDF'nin bir parçasıdır. Ayrık değerler durumunda, sadece olasılıkların toplamı.Sürekli değerler için, ampirik yoğunluğunun tahmini için aralıkları eşit olduğu gerçeğini kullanabilir ve hesaplamak:
cdf <- cumsum(dens$y * diff(dens$x[1:2]))
cdf <- cdf/max(cdf) # to correct for the rounding errors
plot(dens$x,cdf,type="l")
verir:
Orada
"olasılık yoğunluk fonksiyonu" would sadece yoğunluk verilerinin varsaydığı değil, ayrık veri ile bir olasılık olabilir. –
Yani, ampirik CDF istiyorsun? – Iterator