我希望拟合以下广义非线性模型:
如何在
Probit(G)=K+1/Sigma*(Temp-T0)*Time
。作为Naive Model,我通过qnorm(G)
创建了Probits(G)
,之后拟合了非线性模型
。但是我想用logit
链接来拟合R
中的glm
函数类似于Nonlinear Model
。如何在
R
中使用logit
链接拟合这样的广义非线性模型?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, 192L), G = c(15,
25.5, 27, 28, 28.5, 39.5, 41.5, 43, 13, 21.5, 29.5, 30.5, 32.5,
35, 13.5, 28, 32.5, 33.5, 35, 39.5, 42, 6.5, 30, 39.5, 57, 58.5
)), .Names = c("Temp", "Time", "G"), class = "data.frame", row.names = c(NA,
-26L))
Data$GermRate <- 1/Data$Time
Data$Probits <- qnorm(p=Data$G/100) # Get Probits
fm1 <-
nls(
formula= Probits ~ K+1/Sigma*(Temp-T0)*Time
, data=Data
, start=list(K=1, Sigma=2, T0=2)
#, algorithm= "port"
)
fm1Summary <- summary(fm1)
fm1Coef <- summary(fm1)$coef
nls
没有链接函数属性,您只需要在模型公式中包含转换即可(假设您使用了有意义的转换)。或者也许我误解了您在这里想要使用链接函数的意思。您能否更明确地指定您想要拟合的模型? - MrFlickData $ G / 100
,我从中创建了Probits
。 作为统计学的学生,我知道可以通过使用linking
来避免这种transformation
。 - MYaseen208nls
(非线性最小二乘)通常不允许这样做。链接通常与glm
相关联。在R中,您模型的响应是公式中~
左侧的内容。您是想要进行probit
还是logit
链接?听起来您可能需要更多的统计建议而不是编程建议。如果是这样,您可以考虑发布到[stats.se]。 - MrFlickGermRate ~ pnorm(K+1/Sigma*(Temp-T0)*Time)
-- 第一次尝试没有成功,但这是我会采取的方向。 - Ben BolkerI
,就像这样:Probits ~ I(K+1/Sigma*(Temp-T0)*Time)
。否则,它将尝试使用公式语法解析它(将*
解释为交互作用),而不是使用正常的数学语法。 - shadowtalker