【问题标题】:Fit sigmoidal curve to data in R将 S 形曲线拟合到 R 中的数据
【发布时间】:2018-01-09 01:01:30
【问题描述】:

我想为我的数据拟合一个 sigmoidal 函数,我已经尝试过类似这里的事情: Using R to fit a Sigmoidal Curve 问题是我的曲线太平了,所以它没有到达我数据的上点(我希望它在 y 轴上至少达到 2 或 2.3,然后离开图表)。你有什么提示我必须在我的代码中进行更改吗?

提前致谢!

这里的数据(实际上是更多的点,所以如果拟合曲线刚好达到 1.5 的 y 值,它会看起来很连贯):

T<- c(1.45151262, 1.23861251, 2.25986937, 1.50269889, 1.96593223, 1.25365243, 1.98465413, 1.96593223, 0.98585134, 1.45151262,  1.23861251, 2.25986937, 1.96593223, 1.96593223, 2.53257897, 0.53892040, 0.39919629,  0.49431555, 0.37490131,  0.61959698,  1.30069888,  0.34356933,  0.32231250,  0.60307860,  0.46739360,  0.23849933,  0.22491460, 0.18751264,  0.43795313,  0.35338655,  0.44306278, -0.04577398,  0.23924335,  0.36656968,  0.17550798,  0.39912386, 0.86993214,  0.70492281,  1.09849071,  1.49913528,  0.99460365,  0.48011272,  0.73764538,  2.04877202,  0.88241166,1.08291537,  1.58361191,  1.20293826,  1.37084470)

W<-c(-1.100000, -1.150000, -0.850000, -0.850000, -0.650000, -0.700000, -0.650000, -0.650000, -0.700000, -1.100000, -1.150000, -0.850000, -0.650000, -0.650000, -0.750000, -1.250000, -1.350000, -1.200000, -1.266667, -0.950000, -1.000000, -1.150000, -1.100000, -1.150000, -1.200000, -2.000000, -1.700000, -1.550000, -2.150000, -1.850000, -1.600000, -1.500000, -1.500000, -1.550000, -1.700000, -0.650000, -0.550000, -1.100000, -0.500000, -0.950000,       -0.950000, -0.800000, -1.050000, -0.600000, -0.750000, -1.200000, -0.700000, -0.600000, -0.950000)

我使用的代码:

plot(T~W)

M1 <- nls(T ~a/(1 + exp(-b * (W-c)) ), start=list(a=2.5,b=1,c=-1))

lines(seq(-6,0, length.out = 100), predict(M1, newdata = data.frame(W = seq(-6,0, length.out = 100))))

【问题讨论】:

  • 如果你的数据不一致,你想要的就不是很相关。为什么你认为你应该换个合适的?
  • 似乎更像是一个关于数据建模而不是编程的问题。如果您有模型要求,或许您应该咨询Cross Validated 的统计学家,以找到更适合您要求的统计模型。
  • 感谢您的 cmets!好吧,根据我的数据,我应该能够得到一个 S 形曲线,但也许我可以汇集我的数据以获得更好的拟合。

标签: r curve-fitting


【解决方案1】:

这可能不足以满足您的需求,但我能够将 Lomolino sigmoidal 方程与下面的图和参数统计数据拟合:

T = a / (1.0 + pow(b, ln(c/W))) + Offset

Fitting target of lowest sum of squared absolute error = 1.0217387563792354E+01

a =  1.2760743831471755E+00
b =  2.8233200470290357E-05
c = -1.1164548271725272E+00
Offset =  2.4350187846845511E-01

【讨论】:

  • 谢谢,我会尝试调整参数。这条曲线看起来更像我想要的!
猜你喜欢
  • 2016-01-07
  • 2019-09-07
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多