如帮助(predict.nls)中所述,当se.fit = TRUE时,应计算预测的标准误差.但是,我在下面的代码不显示,而只显示预测.
alloy <- data.frame(x=c(10,30,51,101,203,405,608,810,1013,2026,4052,6078,
8104,10130),
y=c(0.3561333,0.3453,0.3355,0.327453,0.3065299,0.2839316,
0.2675214,0.2552821,0.2455726,0.2264957,0.2049573,
0.1886496,0.1755897,0.1651624))
model <- nls(y ~ a * x^(-b), data=alloy, start=list(a=.5, b=.1))
predict(model, se=TRUE)
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?谢谢!
我想用r平方值比较三个模型的曲线拟合.我使用nls和drc包运行模型.但是,似乎这些包都没有计算r平方值; 但它们给出了"残差标准误差"和"残差平方和".
这两个可以用来比较模型拟合吗?
我想拟合以下广义非线性模型:Probit(G)=K+1/Sigma*(Temp-T0)*Time.作为天真的模特,我创造Probits(G)了qnorm(G)然后适合了Nonlinear Model.但我想,以适应Nonlinear Model与logit链接类似glm的功能R.如果有人帮我配合带logit链接的广义非线性模型,我将非常感激R.在此先感谢您的帮助.
Data <-
structure(list(Temp = c(23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L,
27L, 27L, 27L, 27L, 27L, 27L, 33L, 33L, 33L, 33L, 33L, 33L, 33L,
35L, 35L, 35L, 35L, 35L), Time = c(144L, 168L, 192L, 216L, 240L,
264L, 288L, 312L, 120L, 144L, 168L, 192L, 216L, 240L, 72L, 96L,
120L, 144L, 168L, 192L, 216L, 96L, 120L, 144L, 168L, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Boltzmann sigmoid 拟合1/(1+exp((x-p1)/p2))到这个小型实验数据集:
xdata <- c(-60,-50,-40,-30,-20,-10,-0,10)
ydata <- c(0.04, 0.09, 0.38, 0.63, 0.79, 1, 0.83, 0.56)
Run Code Online (Sandbox Code Playgroud)
我知道这很简单。例如,使用nls:
fit <-nls(ydata ~ 1/(1+exp((xdata-p1)/p2)),start=list(p1=mean(xdata),p2=-5))
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
Formula: ydata ~ 1/(1 + exp((xdata - p1)/p2))
Parameters:
Estimate Std. Error t value Pr(>|t|)
p1 -33.671 4.755 -7.081 0.000398 ***
p2 -10.336 4.312 -2.397 0.053490 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1904 on 6 degrees of freedom
Number of …Run Code Online (Sandbox Code Playgroud) 我无法找到适合我数据的正确曲线.如果比我更了解情况的人有更好的拟合曲线的想法/解决方案,我将非常感激.
数据:目的是从y预测x
dat <- data.frame(x = c(15,25,50,100,150,200,300,400,500,700,850,1000,1500),
y = c(43,45.16,47.41,53.74,59.66,65.19,76.4,86.12,92.97,
103.15,106.34,108.21,113) )
Run Code Online (Sandbox Code Playgroud)
这是我走了多远:
model <- nls(x ~ a * exp( (log(2) / b ) * y),
data = dat, start = list(a = 1, b = 15 ), trace = T)
Run Code Online (Sandbox Code Playgroud)
哪个不合适:
dat$pred <- predict(model, list(y = dat$y))
plot( dat$y, dat$x, type = 'o', lty = 2)
points( dat$y, dat$pred, type = 'o', col = 'red')
Run Code Online (Sandbox Code Playgroud)
谢谢,F
有没有办法限制NLS系数在R中可以采用的值范围?我知道我的数据应该存在的曲线形状; 然而,NLS未能通过产生<1的功率系数来产生这样的曲线.
本质上,我正在尝试为一组幼树干(幼树)数据产生茎高度与地上生物量的关系.树木的高度受到场地寒冷天气的阻碍,因此它们接近高度限制......但是随着年龄的增长,周长和生物量继续增长.
问题是我只有一定范围树高的数据,并且缺少高度<1.3米的茎的值.我到目前为止的代码是:
#Plot the raw data
plot(AC$Height.m, AC$ag.biomass, xlim=c(0,2.5), ylim=c(0,40))
#Generate a NLS fit and plot curve on the raw data to show misfit
bg.nls = nls(ag.biomass ~ B0*Height.m^B1, data=AC, start=list(B0=8,B1=2))
curve(coef(bg.nls)[1]*x^coef(bg.nls)[2], col="red", add=TRUE)
#Provide example of appropriate growth curve given biological understanding
curve(6*x^1.7, col="blue", add=TRUE)
Run Code Online (Sandbox Code Playgroud)
这产生了以下情节.红线表示失配NLS(主要是由于B1 <1),而蓝线表示生物学上合适的拟合.
我知道有很多统计问题与这种生成模型拟合的方法有关 - 但是我在这里并不关心它们.相反,我只是对将B1值限制为大于1的值的技术问题感兴趣.有没有办法这样做?
将此参数化用于增长曲线逻辑模型
我创建了一些点:K = 0.7; y0 = 0.01; r = 0.3
df = data.frame(x= seq(1, 50, by = 5))
df$y = 0.7/(1+((0.7-0.01)/0.01)*exp(-0.3*df$x))
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如果用模型启动器创建数据我怎么能有一个拟合错误?
fo = df$y ~ K/(1+((K-y0)/y0)*exp(-r*df$x))
model<-nls(fo,
start = list(K=0.7, y0=0.01, r=0.3),
df,
nls.control(maxiter = 1000))
Error in nls(fo, start = list(K = 0.7, y0 = 0.01, r = 0.3), df, nls.control(maxiter = 1000)) :
number of iterations exceeded maximum of 1000
Run Code Online (Sandbox Code Playgroud) 我一直试图在一张图上绘制不同的指数衰减曲线。最初我认为这会很容易,但结果却令人沮丧。
我想得到什么:

nlsplot(k_data_nls, model = 6, start = c(a= 603.3, b= -0.03812), xlab = "hours", ylab = "copies")
nlsplot(r4, model=6, start=c(a=25.5487,b=-0.5723), xlab = "hours", ylab = "copies")
Run Code Online (Sandbox Code Playgroud)
以下是数据的一些附加代码:
df4 <- data.frame(hours=c(0,1,3,5,12,24,48,96,168,336,504,720), copies=c(603.3,406,588,393.27,458.47,501.67,767.53,444.13,340.6,298.47,61.42,51.6))
nlsfit(df4, model=6, start=c(a=603.3,b=-0.009955831526))
d4plot <- nlsplot(df4, model=6, start=c(a=603.3,b=-0.009955831526))
r4 <- data.frame(hours=c(0,1,3,5,12,24,48,96,168,336,504,720), copies=c(26,13.44,4.57,3.12,6.89,0.71,0.47,0.47,0,0,0.24,0.48))
nlsLM(copies ~ a*exp(b*hours), data=r4, start=list(a=26,b=-0.65986))
r4plot <- nlsplot(r4, model=6, start=c(a=25.5487,b=-0.5723))
Run Code Online (Sandbox Code Playgroud)
本质上,我希望能够在一张图上获得这两个图。我是 R 的新手,所以我不太确定我可以从哪里开始。谢谢 !
我正在寻找来自nlsin的收敛消息的定义R。特别是,relative convergence (4)和之间有什么区别both X-convergence and relative convergence (5)。
我想使用 nls 包检查非线性模型。
power<- nls(formula= agw~a*area^b, data=calibration_6, start=list(a=1, b=1))
summary(power)
Run Code Online (Sandbox Code Playgroud)
这是关于模型的参数。
它说 y= 0.85844 x^1.37629
但是,在 Excel 中(下图)。它说 y= 0.7553 x^1.419
如果我在 R 中绘制图形,则图形是相同的。为什么同一个模型产生不同的参数?
我需要更信任哪个方程式?你能回答我吗?
非常感谢。
ggplot(data=calibration_6, aes(x=area, y=agw)) +
geom_point (shape=19, color="cadetblue" ,size=2.5) +
stat_smooth(method = 'nls', formula= y~a*x^b, start = list(a = 0, b=0), se=FALSE, color="Dark Red",level=0.95) +
scale_x_continuous(breaks = seq(0,25,5),limits = c(0,25)) +
scale_y_continuous(breaks = seq(0,80,10), limits = c(0,80)) +
theme_bw() +
theme(panel.grid = element_blank())
Run Code Online (Sandbox Code Playgroud)
nls ×10
r ×10
constraints ×1
convergence ×1
gnm ×1
graphics ×1
message ×1
parameters ×1
predict ×1
regression ×1