簡體   English   中英

直方圖上的密度曲線是平坦的

[英]Density curve on histogram is flat

我正在嘗試 plot 一條遵循我的數據直方圖趨勢的曲線,我環顧四周並嘗試了其他人的代碼,但我仍然得到一條平線。 這是我的代碼

hist(Ferr,xlab = "Ferritin Plasma Concentration", ylab = "Frequency", main = "Histogram of Ferritin 
Plasma Concentration", xlim = c(0,250), ylim = c(0,50), cex.axis=0.8, cex.lab=0.8,cex.main = 1)
curve(dnorm(x, mean = mean(Ferr), sd = sd(Ferr)), col="blue", add=TRUE)
lines(density(Ferr), col="red")

如果有人可以幫助我看看我哪里出錯了,那將非常感謝。

與直方圖不同,密度 function 在整個空間上的積分等於 1:

sum(density(x)*dx) = 1

要將密度 function 縮放到直方圖,可以將其乘以直方圖 bin 的最大值,然后除以點之間的距離。

我們以mtcars$mpg為例:

Ferr <- mtcars$mpg
d <- density(Ferr)
dx <- diff(d$x)[1] 

sum(d$y)*dx
[1] 1.000851

h <- hist(Ferr)
lines(x=d$x,y=max(h$counts)*d$y/dx)

在此處輸入圖像描述

您需要設置freq = FALSE (並刪除對ylimxlim的約束並將"Frequency"更改為"Density" ):

hist(Ferr,
     freq= FALSE, 
     xlab = "Ferritin Plasma Concentration", ylab = "Density", 
     main = "Histogram of Ferritin Plasma Concentration", 
     cex.axis=0.8, cex.lab=0.8,cex.main = 1)
curve(dnorm(x, mean = mean(Ferr), sd = sd(Ferr)), col="blue", add=TRUE)
lines(density(Ferr), col="red")

玩具數據:

Ferr <-  rnorm(1000)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM