Я использую ggplot для построения графика приведенных ниже данных и пытаюсь подобрать более сглаженное изображение, которое улавливает гауссовский характер кривых. Я пробовал стандартные сглаживатели лесса и сплайна, но они приводят к огромным провалам на линии фронта, которых там нет (я пытался прикрепить изображение результата stat_smooth(), но у меня нет 10 очков репутации, поскольку я m новичок в stackoverflow).
Теперь я пытаюсь принудительно сгладить гауссову функцию, создав формулу (MyFormula) с гауссовой формой и используя ее в функции stat_smooth, но я получаю следующую ошибку, которая, как мне кажется, происходит из-за того, что уравнение MyFormula не разделяется от FrontBack:
"Ошибка в model.frame.default (формула = C$mean_Dye ~ max(C$mean_Dye) +: различаются длины переменных (найдено для 'max(C$mean_Dye)')"
Есть ли более простой способ подогнать гауссову форму (или любого другого представителя) к этим данным как для передней, так и для задней линии?
MyFormula=C$mean_Dye~max(C$mean_Dye)*exp(-0.5*((C$Meters-mean(C$Meters))/sd(C$Meters))^2)
ggplot(C, aes(x=Meters, y=mean_Dye, color=FrontBack)) + geom_point(pch=19, size = 6, alpha=1/4) + geom_errorbar(aes(ymin=mean_Dye-seDye, ymax=mean_Dye+seDye), width=0.1) + coord_cartesian(ylim=c(-100,100), xlim=c(16,50)) + stat_smooth(method="gam", formula=MyFormula, group=C$FrontBack, se=F)
Meters mean_Dye seDye FrontBack
17.0 -0.005 0.05 Front
29.0 0.036 0.05 Front
31.5 50.78 14.3 Front
32.5 69.82 8.04 Front
33.0 58.53 5.72 Front
33.5 50.93 5.29 Front
34.5 43.15 3.70 Front
37.0 15.51 4.02 Front
49.0 0.069 0.03 Front
17.0 0.111 0.023 Back
23.0 1.92 0.278 Back
26.0 5.98 0.743 Back
28.0 12.13 1.186 Back
30.0 18.99 1.419 Back
31.0 19.04 0.916 Back
32.0 18.17 1.416 Back
33.0 16.51 2.143 Back
34.0 13.99 2.178 Back
35.0 11.85 2.136 Back
36.0 6.63 1.751 Back
38.0 0.97 0.689 Back
40.0 0.099 0.116 Back
43.0 0.004 0.039 Back
49.0 0.041 0.040 Back