小编Jef*_*een的帖子

试图用ggplot2的geom_smooth()显示原始数据和拟合数据(nls + dnorm)

我正在探索一些数据,所以我想要做的第一件事就是尝试将正态(高斯)分布拟合到它.这是我第一次在R中尝试这个,所以我一步一步.首先我预先分类我的数据:

myhist = data.frame(size = 10:27, counts = c(1L, 3L, 5L, 6L, 9L, 14L, 13L, 23L, 31L, 40L, 42L, 22L, 14L, 7L, 4L, 2L, 2L, 1L) )

qplot(x=size, y=counts, data=myhist)
Run Code Online (Sandbox Code Playgroud)

plot1

由于我需要计数,我需要添加一个归一化因子(N)来扩大密度:

fit = nls(counts ~ N * dnorm(size, m, s), data=myhist, start=c(m=20, s=5, N=sum(myhist$counts)) )   
Run Code Online (Sandbox Code Playgroud)

然后我创建适合显示的数据,一切都很好:

x = seq(10,30,0.2)
fitted = data.frame(size = x, counts=predict(fit, data.frame(size=x)) )
ggplot(data=myhist, aes(x=size, y=counts)) + geom_point() + geom_line(data=fitted)
Run Code Online (Sandbox Code Playgroud)

plot2

当我发现这个线程谈到使用geom_smooth()一步完成所有这一切时,我很兴奋,但我无法让它工作:

这是我尝试的......以及我得到的:

ggplot(data=myhist, aes(x=size, y=counts)) + geom_point() + geom_smooth(method="nls", formula = counts ~ N * …
Run Code Online (Sandbox Code Playgroud)

r curve-fitting ggplot2 least-squares model-fitting

12
推荐指数
1
解决办法
3065
查看次数

标签 统计

curve-fitting ×1

ggplot2 ×1

least-squares ×1

model-fitting ×1

r ×1