请考虑以下数据框示例
library('ggplot2')
library('sm')
original<-c(1:100,1)
a<-sample(original,100)
b<-rep(1:4,25)
lala<-data.frame(a,b)
我的目标是根据lala $ b中定义的每个组(1,2,3,4),为lala $ a中的值生成密度图。
要在ggplot2中这样做,我可以执行以下操作
plotDensityggplot<-ggplot()+
geom_density(data = lala, aes(a, colour=factor(b)))+
theme_classic()
print(plotDensityggplot)
产生这个:
但是,当我使用“ sm”包绘制相同的数据以使用以下代码对密度进行形式比较时:
sm.density.compare(lala$a,as.numeric(lala$b),model = "equal")
尽管lala $ a中没有低于零的值,但密度曲线在X轴上延伸超过零。
这是怎么回事? -请注意,这会影响沿y轴报告的密度。
从sm.density.compare获得的相等性置换检验的p值是否可靠? -谢谢!
答案 0 :(得分:3)
对于它的价值,您可以(通过使用基数R的sm
预先计算密度(或多或少)来复制ggplot
中的density
输出(我对{ {1}},但我想sm
也会在某个时刻调用基数R的sm.density
。
density
我不确定library(tidyverse)
lala %>%
group_by(b) %>%
summarise(tmp = list(map_dfc(c("x", "y"), ~density(a)[.x]))) %>%
unnest() %>%
ggplot(aes(x, y, colour = as.factor(b))) +
geom_line()
(或geom_density
)如何调整内核密度估计参数,但与基本R的stat_density
相比,您似乎对它们的控制较少。