excel如何拟合s形曲线
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel如何拟合s形曲线相关的知识,希望对你有一定的参考价值。
1、把实验数据输入excel中,两个变量的最好做成两个竖排。选中所有数据,注意不要把文字也选上了。
2、在菜单栏中点“插入”,然后选择“散点图”下面的下拉菜单。
3、平滑曲线:从菜单中选择自己需要的类型,一般选择既有数据点,又有平滑曲线的散点图。就能得到平滑曲线。
4、然后这样就完成操作了。
参考技术A把实验数据输入excel中,两个变量的最好做成两个竖排。选中所有数据,注意不要把文字也选上了。
在菜单栏中点“插入”,然后选择“散点图”下面的下拉菜单。
平滑曲线:
从菜单中选择自己需要的类型,一般选择既有数据点,又有平滑曲线的散点图。就能得到平滑曲线。
多项式拟合(线性,指数,幂,对数也类似):
选取数据;
插入,散点图;
选择只有数据点的类型;
就能得到第二张图所示的数据点。
点击一个点,会选中所有数据点,然后点右键,在弹出的菜单中选择“添加趋势线”。
在这里可以选择需要你和的曲线类型,如线性,指数,幂,对数,多项式。。选择多项式。
再把下面的“显示公式”,“显示R平方”的复选框里打√,就能得到需要的曲线,公式,和相对误差。
图形格式设置:
生成图形后还有一些问题,比如没有坐标轴名称,没有刻度等。
打开菜单中的设计,点图标布局中的下拉菜单。
会看到有很多布局类型的图标,选择自己需要的。比如,图中选的布局是常见的有标题,坐标轴名称的。
坐标轴还需要设置:用鼠标点击坐标轴附近的区域,右键,选择“设置坐标轴格式”。
- 在这里可以进行详细地设置。具体操作根据自己需要进行。
在 r 中的 S 形曲线上找到一个点
【中文标题】在 r 中的 S 形曲线上找到一个点【英文标题】:finding a point on a sigmoidal curve in r 【发布时间】:2020-02-13 20:34:28 【问题描述】:这是一个数据集:
df <- data.frame('y' = c(81,67,54,49,41,25), 'x' =c(-50,-30,-10,10,30,50))
到目前为止,我知道如何拟合 sigmoidal 曲线并将其显示在屏幕上:
plot(df$y ~ df$x)
fit <- nls(y ~ SSlogis(x, Asym, xmid, scal), data = df)
summary(fit)
lines(seq(-100, 100, length.out = 100),predict(fit, newdata = data.frame(x = seq(-100,100, length.out = 100))))
我现在想在 y = 50 时在 S 型曲线上找到一个点。我该怎么做?
【问题讨论】:
“我现在想在 y = 50 时在 S 形曲线上找到一个点”。也许我误解了,但这不正是xmid
的估计值吗?这是x
的值,其中 sigmoidal 响应为最大值的 50%。
我可能遗漏了一些东西,但 xmid = -38.10,如果我在视觉上估计 y = 50 时的 x 值,它似乎在 +5 左右。
@MauritsEvers - 好点。但是,y = 50,与 Asym 的 50% 不同。因为 Asym 的拟合值可能不完全是 100。
@dww 啊,我明白了。我假设响应是正常化的。
【参考方案1】:
SSlogis适合的函数在函数帮助中给出如下:
Asym/(1+exp((xmid-input)/scal))
为简单起见,让我们将input
更改为x
,并将此函数设置为等于y
(在您的代码中为fit
):
y = Asym/(1+exp((xmid - x)/scal))
我们需要反转此函数以在 LHS 上单独获得 x
,以便我们可以从 y
计算 x
。这样做的代数在这个答案的末尾。
首先,让我们绘制你的原始拟合:
plot(df$y ~ df$x, xlim=c(-100,100), ylim=c(0,120))
fit <- nls(y ~ SSlogis(x, Asym, xmid, scal), data = df)
lines(seq(-100, 100, length.out = 100),predict(fit, newdata = data.frame(x = seq(-100,100, length.out = 100))))
现在,我们将创建一个函数来根据 y 值计算 x 值。再次,请参阅下面的代数来生成此函数。
# y is vector of y-values for which we want the x-values
# p is the vector of 3 parameters (coefficients) from the model fit
x.from.y = function(y, p)
-(log(p[1]/y - 1) * p[3] - p[2])
# Run the function
y.vec = c(25,50,75)
setNames(x.from.y(y.vec, coef(fit)), y.vec)
25 50 75 61.115060 2.903734 -41.628799
# Add points to the plot to show we've calculated them correctly
points(x.from.y(y.vec, coef(fit)), y.vec, col="red", pch=16, cex=2)
通过代数工作,让x
单独出现在左侧。注意下面代码中p[1]=Asym、p[2]=xmid、p[3]=scal(SSlogis
计算的三个参数)。
# Function fit by SSlogis
y = p[1] / (1 + exp((p[2] - x)/p[3]))
1 + exp((p[2] - x)/p[3]) = p[1]/y
exp((p[2] - x)/p[3]) = p[1]/y - 1
log(exp((p[2] - x)/p[3])) = log(p[1]/y - 1)
(p[2] - x)/p[3] = log(p[1]/y - 1)
x = -(log(p[1]/y - 1) * p[3] - p[2])
【讨论】:
完美运行 - 也有精彩的解释。感谢您的帮助。 因答案的卓越和清晰而受到支持。以上是关于excel如何拟合s形曲线的主要内容,如果未能解决你的问题,请参考以下文章