Что ж, хотя ответ, предоставленный Джораном, не сработал так, как предполагалось, и Джоран потратил довольно много времени, пытаясь его отладить, что я ценю, в конечном итоге я не смог заставить это решение работать, и я недействительно знаю почему, но он не давал результатов, сравнимых с кодом Matlab.После возни я нашел это решение (которое может быть неоптимальным, но работает как положено)
loesscontrol=loess.control(surface="interpolate", statistics="approximate", trace.hat="exact", iterations=1)
spanNe=100/Ne
spanT=50/nsteps
spanNi=30/Ni
for (i in 1:nsteps){
x<-1:Ne
y<-spike_sum[1:Ne,i]
smoothingNe<-loess.smooth(x, y, span=spanNe, degree=1, family="gaussian", evaluation=Ne)
smooth_sumNe[1:Ne,i]<-smoothingNe$y
}
for (i in 1:Ne){
x<-1:nsteps
y<-smooth_sumNe[i,1:nsteps]
smoothingT<-loess.smooth(x, y, span=spanT, degree=1, control=loesscontrol, family="gaussian", evaluation=nsteps)
smoother_sumNe[i,1:nsteps]<-smoothingT$y
}
Я хочу упомянуть, что одним из ключей здесь было установить оценку = Ne в первом сглаживании,потому что в противном случае результат был нулевым.Я не знаю, почему это так, но, возможно, потому, что данные были редкими и очень прерывистыми.