- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想拟合一个线性平台 (nls) 模型,该模型将高度描述为年龄的函数,并且我想测试区域间模型的任何参数是否存在显着差异。
这是我目前所拥有的:
# Create data
df1 <- cbind.data.frame (height = c (0.5, 0.6, 0.9, 1.3, 1.5, 1.6, 1.6,
0.6, 0.6, 0.8, 1.3, 1.5, 1.6, 1.5,
0.6, 0.8, 1.0, 1.4, 1.6, 1.6, 1.6,
0.5, 0.8, 1.0, 1.3, 1.6, 1.7, 1.6),
age = c (0.5, 0.9, 3.0, 7.3, 12.2, 15.5, 20.0,
0.4, 0.8, 2.3, 8.5, 11.5, 14.8, 21.3,
0.5, 1.0, 5.1, 11.1, 12.3, 16.0, 19.8,
0.5, 1.1, 5.5, 10.2, 12.2, 15.4, 20.5),
region = as.factor (c (rep ("A", 7),
rep ("B", 7),
rep ("C", 7),
rep ("D", 7))))
> head (df1)
height age region
1 0.5 0.5 A
2 0.6 0.9 A
3 0.9 3.0 A
4 1.3 7.3 A
5 1.5 12.2 A
6 1.6 15.5 A
# Create linear-plateau function
lp <- function(x, a, b, c){
ifelse (x < c, a + b * x, a + b * c)
} # Where 'a' is the intercept, 'b' the slope and 'c' the breakpoint
# Fit the model ignoring region
m1 <- nls (height ~ lp (x = age, a, b, c),
data = df1,
start = list (a = 0.5, b = 0.1, c = 13))
> summary (m1)
Formula: height ~ lp(x = age, a, b, c)
Parameters:
Estimate Std. Error t value Pr(>|t|)
a 0.582632 0.025355 22.98 <2e-16 ***
b 0.079957 0.003569 22.40 <2e-16 ***
c 12.723995 0.511067 24.90 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.07468 on 25 degrees of freedom
Number of iterations to convergence: 2
Achieved convergence tolerance: 5.255e-09
我想拟合相同的模型,但考虑到 region
,并测试 a
、b
和 c
> 不同地区的估计不同。
我相信this post可能有用,但我不知道如何将它应用于此数据/函数。
这是数据的样子:
也欢迎不使用 nls 的解决方案
最佳答案
用相同的参数为每个区域拟合模型,给出 fm1 并再次用不同的参数给出 fm2,并使用方差分析来测试差异。
我们对 fm1 使用 plinear
算法,因为它不需要线性参数的起始值。在这种情况下,RHS 应该是一个矩阵,其第一列乘以截距,第二列乘以斜率。这两个线性参数将被命名为 .lin1
和 .lin2
。我们使用重复 4 次的 fm1 的系数作为 fm2 拟合的起始值。
fm1 <- nls(height ~ cbind(1, pmin(age, c)), df1, start = list(c = mean(df1$age)),
algorithm = "plinear")
co <- as.list(coef(fm1))
fm2 <- nls(height ~ a[region] + b[region] * pmin(age, c[region]), df1,
start = list(a = rep(co$.lin1, 4), b = rep(co$.lin2, 4), c = rep(co$c, 4)))
anova(fm1, fm2)
给予:
Analysis of Variance Table
Model 1: height ~ cbind(1, pmin(age, c))
Model 2: height ~ a[region] + b[region] * pmin(age, c[region])
Res.Df Res.Sum Sq Df Sum Sq F value Pr(>F)
1 25 0.13944
2 16 0.11895 9 0.020483 0.3061 0.9617
因此我们不能拒绝跨区域参数相同的假设。
如果我们希望测试不同的 c 值但我们可以使用常见的截距和斜率
fm3 <- nls(height ~ cbind(1, pmin(age, c[region])), df1,
start = list(c = rep(co$c, 4)), algorithm = "plinear")
anova(fm1, fm3)
虽然我们不能拒绝 c 的值在下面的视觉区域中相同的假设,但我们看到高原值的截止年龄看起来确实有些不同,所以我们可能想要使用 fm3,即使它与 fm1 没有显着差异.我们可能希望以与此处的应用程序相关的其他因素为指导,而不仅仅是适合。
下面我们展示了 fm2 的个体拟合和 fm1 的整体拟合。
library(ggplot2)
df1$Everything <- "Everything"
ggplot(df1, aes(age, fitted(fm2), col = region)) +
geom_line() +
geom_point() +
geom_line(aes(age, fitted(fm1), col = Everything), lty = 2, lwd = 2)
关于r - 用分类变量拟合 nls 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720110/
在 Eclipse 中运行我的程序时出现错误ORA-12705:无法访问 NLS 数据文件或指定的环境无效。 到目前为止我尝试过的事情: 我已经尝试在注册表的\HKEY_LOCAL_MACHINE\S
在 R 中工作,我正在尝试使用 nls() 将一些数据拟合到以下模型: y ~ c - a * exp(-b * x) 我的数据: x <- c(8, 8, 10, 10, 10, 10, 12, 1
我尝试搜索有关此主题的其他线程,但没有一个修复对我有用。我有一个自然实验的结果,我想显示符合指数分布的事件连续发生的次数。我的 R shell 粘贴在下面 f x [1] 1 2 3 4
对于这个数据集: dat = structure(list(x = c(5L, 5L, 5L, 5L, 10L, 10L, 10L, 10L, 15L, 15L, 15L, 15L, 17L, 17L
我正在使用 NLS.initializeMessages(BUNDLE_NAME, XYZ.class) 加载常量。 当“BUNDLE_NAME”和“XYZ.class”存在于同一个项目中时,它可以工
使用线性模型函数 lm() 多项式公式可以包含这样的快捷符号: m <- lm(y ~ poly(x,3)) 这是一个快捷方式,可以让用户不必创建 x^2 和 x^3 变量或将它们输入到公式中,例如
想象这两个列表如下: seq<-seq(1,16) L1<-list(A=seq, B=seq, C=seq, D=seq) v1=c(11,15,17,19,21,22,24,25,26,27,28
我想拟合一个线性平台 (nls) 模型,该模型将高度描述为年龄的函数,并且我想测试区域间模型的任何参数是否存在显着差异。 这是我目前所拥有的: # Create data df1 head (df1
我有一个输入日期(比如 sysdate),我想获取上一个星期一的日期。我试过 select trunc(sysdate, 'D') from dual; 但它依赖于 NLS。此外,我不想通过名称检查结
我正在尝试使用 R 中的 nls 拟合矩形双曲线。 curve.nlslrc = nls(photolrc ~ (1/(2*theta))*(AQY*PARlrc+Am-sqrt((AQY*PARlr
我正在使用 nls 拟合一些指数数据. 我正在使用的代码是: fit <- nls(y ~ expFit(times, A, tau, C), start = c(A=100, tau=-3, C=0
尝试拟合我的数据时遇到问题。 这是数据: x = c(1, 1.071519305, 1.148153621, 1.230268771, 1.318256739, 1.412537545, 1.513
我正在尝试制作 nls适合一个有点复杂的表达式,其中包括两个积分,其中两个拟合参数在其上限中。 我得到了错误 "Error in nlsModel(formula, mf, start, wts) :
有没有办法限制 NLS 系数在 R 中的取值范围?我知道我的数据应该存在的曲线形状;然而,NLS 无法通过产生 < 1 的功率系数来产生这样的曲线。 从本质上讲,我正在尝试为一组幼树茎(树苗)数据生成
我想将以下函数拟合到我的数据中: f(x) = Offset+Amplitudesin(FrequencyT+Phase), 或根据 Wikipedia : f(x) = C+alphasin(ome
我不明白为什么我不能为这些数据使用 nls 函数。 我尝试了很多不同的起始值,但总是出现相同的错误。 这是我一直在做的事情: expFct2 = function (x, a, b,c) { a*
我一直在研究一个曲线拟合脚本,该脚本将 3 个指数修改的高斯 (EMG) 拟合到卷积曲线。我的基函数类似于高斯分布,但包括第三个参数(前两个是 mu 和 sigma ),它确定函数的指数分量的权重。
我们的 java 类调用 PLSQL proc,它以由 NLS_DATE_FORMAT 定义的默认格式返回日期。我们的应用程序为国际化设置了自己的语言环境,但我希望日期格式保持为“DD-MON-RR”
谁能给我一个很好的解释,说明参数“算法”在 R 中的 nls 函数中的作用? 另外,公式是如何工作的?我知道它使用了 tilda,但我真的找不到对它的实际解释。 另外,起始值有多重要?我是否需要尝试多
我正在尝试使用 nls 将高斯峰拟合到 R 中的密度图.当我使用以下等式时: fit :2:0: unexpected end of input 1: ~ ^ 谁能指出我哪里出错了? 最佳答案 试
我是一名优秀的程序员,十分优秀!