J'ai ajusté une courbe gaussienne aux données ci-dessous, et je voudrais calculer l'aire sous la courbe entre certaines valeurs de x (par exemple, de x = 6 à x = 18) . Le code ci-dessous produit l'erreur suivante: "Erreur dans f (x, c (m, s, a, b)): argument non utilisé (c (m, s, a, b))". En outre, j'ai quelques valeurs négatives et j'ai besoin de soustraire la zone négative du positif parce que je suis intéressé par la valeur 'nette'.intégrer la zone partielle sous la courbe dans R
x <- c(12.88, 12.9, 8.35, 10.52, 10.45, 8.44, 9.01, 9.96, 9.82, 9.83, 10.65, 10.69, 15.3, 15.33, 12.41, 12.43, 8.36, 8.43, 9.29, 9.25, 14.78, 14.87, 16.17, 16.23, 3.59, 4.37, 3.88, 19.88, 20.71, 20.33, 21.25, 22.09)
y<-c(10.8, 9.62, 11.76, 5.12, 9.63, 4.80, 11.09, 7.42, 7.79, 9.76, 9.71, 8.13, 14.4, 14.85, 12.84, 11.59, 7.0, 6.49, 5.94, 4.93, 6.43, 7.8, 3.81, 2.6, -0.93, 5.3, 1.08, 0.39, -0.59, 2.77, 3.5, -2.08)
df<-data.frame(x, y)
#Define a Gaussian function (Y=Amplitude*exp(-0.5*((X-Mean)/SD)^2) + Baseline)
f<-function(x, theta) {
m<-theta[1]; s<-theta[2]; a<-theta[3]; b<-theta[4];
a*exp(-0.5*((x-m)/s)^2) + b
}
fit<-nls(y~f(x,c(m,s,a,b)), data.frame(x,y), start=list(m=12, s=5, a=12, b=-2))
xs<-seq(0,24,l=1000)
f<-function(x) predict(fit,newdata=data.frame(x=xs))
integrate(f,6,18)
@BondedDust, je sais comment Bü Il a changé la mise en forme de ma question pour montrer que ... – Rebecca