如何绘制包络线
我有一些点,我想为这些点绘制一个包络曲线。
points <- data.frame(
x = c(11, 27, 17, 12, 9, 25, 19, 20, 18, 26, 13, 25, 17, 16, 10, 26, 15, 20, 8, 9, 18, 23,12, 11, 10, 22, 17, 14, 14, 9, 25, 25, 10, 15, 21, 16, 22, 24, 14, 15, 8, 16, 10, 9, 18, 11, 15, 27, 18, 25, 21, 10, 10, 21, 14, 22, 15, 8, 12, 24, 13, 17, 19, 15, 23, 14, 14, 8, 18, 10, 24, 27, 10, 21,12, 25, 15, 27, 17, 25, 24, 16, 10, 12, 23, 27, 10, 10, 20, 11, 22, 26, 20, 19, 27, 20, 20, 10, 27, 12),
y = c(0.381111868855587, 0.0838237523283757, 0.788015602115951, 0.289297121979849, 0.243435576501576, 0.0179307529448273, 0.192618962947527, 0.444227134765338, 0.850221087046239, 0.0941069518786012, 0.157630243011449, 0.444041953597897, 0.585977513271384, 0.249155542471953, 0.120641415412519, 0.127396734722332, 0.211056443011283, 0.0352479686231385, 0.122612293418972, 0.140328677772302, 0.000982702319064093, 0.581369763420019, 0.135530238337579, 0.270531693807102, 0.230583614098299, 0.748031956951352, 0.58541061649721, 0.434556020127234, 0.0614260215229884, 0.00714685332252459, 0.20146467249541,0.387529198758141, 0.276590646915711, 0.235046027783709, 0.162187598846242,0.485893796141666, 0.4207805492618, 0.419765448010793, 0.24189431062154, 0.616480720419257, 0.0342396773626109, 0.29665770620686, 0.288943669695432, 0.230502666122667, 0.0223445229059399, 0.254184864057741, 0.550656152570316,0.00767140728202284, 0.582068749936694, 0.0904894914380039, 0.679124084130482,0.264301548582526, 0.292120270554948, 0.439838439849556, 0.698859897988148, 0.252649893325842, 0.269867457301874, 0.064819707284815, 0.271966447637981, 0.570675891845524, 0.323597389439978, 0.484127758958201, 0.373434501582098,0.540390611105544, 0.566564831188159, 0.211220104046263, 0.268601584430518, 0.110393040921932, 0.247484868371001, 0.201113937979081, 0.0142088421218296, 0.104494588949813, 0.00930544057759283, 0.381664692249768, 0.451456214978851,0.217051098485763, 0.119942986310832, 0.0456219749174392, 0.248841126045584,0.260016360895873, 0.102184973932219, 0.147251765689716, 0.230060793004292,0.456361408179411, 0.639692847770599, 0.104494588949813, 0.173821980024442, 0.330874027070708, 0.739038437693541, 0.100734517142893, 0.0455088102832161,0.287357810261807, 0.364366233605388, 0.392954669876724, 0.069276461565398, 0.0445614890313696, 0.195148703951798, 0.0231449318265709, 0.02550975079362,0.303290900217823)
)
ggplot(points,aes(x,y))+
geom_point()+
theme_bw()

红线就是我想要的那条(我是用PowerPoint绘制的)。
我是R 的初学者。我想用这个函数来绘制包络曲线,但不知道如何用代码实现。
curve <- function(x) {
y = a * exp(b * x) * (1 - ((x - z) / w)^2)
}
此外,是否可以使用99分位数回归?
解决方案
此外,是否可以使用99分位数回归?
可以。我建议使用分位数加法模型。我以90% 分位数为例。
plot(y ~ x, data = points)
library(qgam)
fit <- qgam(y ~ s(x, bs="tp", k=20), data = points, qu = 0.9)
curve(predict(fit, newdata = data.frame(x)), add = TRUE, col = "red")
根据你对数据的了解,你还可以考虑其他类型的平滑器,请参阅mgcv包的文档。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。
