Làm thế nào tôi có thể chồng lên một phân bố tham số tùy ý trên biểu đồ bằng ggplot?Làm thế nào tôi có thể chồng lên một phân phối tham số tùy ý trên biểu đồ bằng ggplot?
Tôi đã thực hiện một nỗ lực dựa trên một số Quick-R example, nhưng tôi không hiểu yếu tố mở rộng đến từ đâu. Phương pháp này có hợp lý không? Làm thế nào tôi có thể sửa đổi nó để sử dụng ggplot?
Một ví dụ overplot sự phân phối chuẩn và lognormal sử dụng phương pháp này sau:
## Get a log-normalish data set: the number of characters per word in "Alice in Wonderland"
alice.raw <- readLines(con = "http://www.gutenberg.org/cache/epub/11/pg11.txt",
n = -1L, ok = TRUE, warn = TRUE,
encoding = "UTF-8")
alice.long <- paste(alice.raw, collapse=" ")
alice.long.noboilerplate <- strsplit(alice.long, split="\\*\\*\\*")[[1]][3]
alice.words <- strsplit(alice.long.noboilerplate, "[[:space:]]+")[[1]]
alice.nchar <- nchar(alice.words)
alice.nchar <- alice.nchar[alice.nchar > 0]
# Now we want to plot both the histogram and then log-normal probability dist
require(MASS)
h <- hist(alice.nchar, breaks=1:50, xlab="Characters in word", main="Count")
xfit <- seq(1, 50, 0.1)
# Plot a normal curve
yfit<-dnorm(xfit,mean=mean(alice.nchar),sd=sd(alice.nchar))
yfit <- yfit * diff(h$mids[1:2]) * length(alice.nchar)
lines(xfit, yfit, col="blue", lwd=2)
# Now plot a log-normal curve
params <- fitdistr(alice.nchar, densfun="lognormal")
yfit <- dlnorm(xfit, meanlog=params$estimate[1], sdlog=params$estimate[1])
yfit <- yfit * diff(h$mids[1:2]) * length(alice.nchar)
lines(xfit, yfit, col="red", lwd=2)
này tạo ra cốt truyện sau:
Để làm rõ, tôi muốn có đếm trên trục y , thay vì ước tính mật độ.
lưu ý rằng một phân phối chuẩn không có ý nghĩa như tất cả các từ có> 0 chữ cái, và các giá trị là số nguyên rời rạc; bình thường là liên tục. –
Đồng ý - đây là ví dụ về đồ chơi có số liệu tiện dụng. Và một đường cong bình thường có lẽ là không phù hợp. – fmark