- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个稍微进入饱和状态的外部校准曲线。所以我拟合了一个二阶多项式和一个测量样本的数据框,我想知道其中的浓度。
df_calibration=structure(list(dilution = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,
0.8, 0.9, 1, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1),
area = c(1000, 2000, 3000, 4000, 5000, 6000, 7000, 7800,
8200, 8500, 1200, 2200, 3200, 4200, 5200, 6200, 7200, 8000,
8400, 8700), substance = c("A", "A", "A", "A", "A", "A",
"A", "A", "A", "A", "b", "b", "b", "b", "b", "b", "b", "b",
"b", "b")), row.names = c(NA, 20L), class = "data.frame")
df_samples=structure(list(area = c(1100, 1800, 2500, 3200, 3900, 1300, 2000,
2700, 3400, 4100), substance = c("A", "A", "A", "A", "A", "b",
"b", "b", "b", "b")), row.names = c(NA, 10L), class = "data.frame")
df_fits=df_calibration %>% group_by(substance) %>%
do(fit = lm(area ~ poly(dilution,2), data = .))%>%
tidy(fit) %>%
select(substance, term, estimate) %>%
spread(term, estimate)
df_fits=df_fits %>% rename(a=`poly(dilution, 2)2`,b=`poly(dilution, 2)1`,c=`(Intercept)`)
#join parameters with sample data
df_samples=left_join(df_samples,df_fits)
#calculate with general solution for polynomial 2nd order
df_samples$dilution_calc=
(df_samples$b*(-1)+sqrt(df_samples$b^2-(4*df_samples$a*(df_samples$c-df_samples$area))))/(2*df_samples$a)
stat_smooth()
的曲线上.附加的虚线与物质“A”的图形中方程的参数(与数据框中的数字匹配)一起放置。所以我的计算应该是正确的(或不正确?)为什么会有差异?我究竟做错了什么?我如何从
stat_smooth()
完成的拟合中获取参数?
my.formula=y ~ poly(x,2)
ggplot(df_calibration, aes(x = dilution, y = area)) +
stat_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_function(fun=function(x){5250+(7980*x)+(-905*x^2)},
inherit.aes = F,linetype="dotted")+
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point(shape=17)+
geom_point(data=df_samples,
aes(x=dilution_calc,y=area),
shape=1,color="red")+
facet_wrap(~substance,scales = "free")
最佳答案
默认情况下,poly
计算正交多项式。您可以使用 raw=TRUE
关闭正交化。争论。
请注意,该公式有两次出现:一次在拟合回归时使用原始变量名称,然后在 stat_smooth
中使用。使用通用变量名 x
和 y
.但否则它应该是相同的公式,与raw=TRUE
.
library("tidyverse")
# Define/import your data here....
df_fits <- df_calibration %>%
group_by(substance) %>%
do(fit = lm(area ~ poly(dilution, 2, raw = TRUE), data = .)) %>%
broom::tidy(fit) %>%
select(substance, term, estimate) %>%
spread(term, estimate) %>%
# It is simpler to rename the coefficients here
setNames(c("substance", "c", "b", "a"))
# join parameters with sample data
df_samples <- left_join(df_samples, df_fits)
# calculate with general solution for polynomial 2nd order
df_samples <- df_samples %>%
mutate(dilution_calc = (b * (-1) + sqrt(b^2 - (4 * a * (c - area)))) / (2 * a))
my.formula <- y ~ poly(x, 2, raw = TRUE)
df_calibration %>%
ggplot(aes(x = dilution, y = area)) +
stat_smooth(method = "lm", se = FALSE, formula = my.formula) +
geom_point(shape = 17) +
geom_point(
data = df_samples,
aes(x = dilution_calc, y = area),
shape = 1, color = "red"
) +
facet_wrap(~substance, scales = "free")
关于r - 为什么 do(lm...) 和 geom_smooth(method ="lm") 之间有区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437248/
我觉得 for(int i = 0; i < 2; i++) 和 for(int i = 0; i < 2; ++i) 不应该做同样的事情。对于第二个例子,从循环开始 i 应该等于 1 对我来说更符合
我试图牢牢掌握异常情况,以便改进我的conditional loop implementation .为此,我进行了各种实验,扔东西,看看会被抓到什么。 这个让我惊喜不已: % cat X.hs mo
我只是想回答一个问题,但我遇到了一些我不明白的事情!为什么如果我在文件中使用内联 CSS 或 CSS,如本例中的颜色,结果就不一样! 代码相同,但第一段是绿色,第二段是红色! 我真的不明白为什么? 谢
我目前正在学习 CSS 并进行试验,我偶然发现了输出中的这种差异。所以这是代码: .red-text { color: red;
"""module a.py""" test = "I am test" _test = "I am _test" __test = "I am __test" ============= ~ $ p
在向 Firestore 写入文档时,我经常看到 serverTimestamp() 标记和 new Date() 对象之间的差异不为零。 差异范围从几 秒到几十 分钟。 他们不是在做同样的事情吗?
据我了解,2.675 和 numpy.float64(2.675) 都是相同的数字。然而,round(2.675, 2) 给出 2.67,而 round(np.float64(2.675), 2) 给
问题本身的描述很简单。我正在测试 C++11 中 std::thread 库和 boost::thread 库的区别。 这些的输出: #include #include #include int
我只是想将文本文件读入 pyspark RDD,我注意到 sqlContext.read.load 之间的巨大差异和 sqlContext.read.text . s3_single_file_inp
SC.exe 和 InstallUtil 都可以安装/卸载 Windows 服务。但它们的工作方式似乎并不相同。 有什么区别? 例如,InstallUtil 失败(找不到某些文件或依赖项错误),而 S
我认为Thread对象就像是带有名称和静态Thread.CurrentThread()的抽象对象,就像访问Thread对象的方式一样。显然,这是错误的假设。。是这样的吗?
我认为Thread对象就像是带有名称和静态Thread.CurrentThread()的抽象对象,就像访问Thread对象的方式一样。显然,这是错误的假设。。是这样的吗?
我是一名优秀的程序员,十分优秀!