剂量反应模型系数
Dose-Response Model Coefficients
我一直在努力使我的数据符合逻辑曲线。我遇到过我一直在使用的 2 个不同的包。 DRM
和 NLS
,所以从 drm
开始,我能够拟合如下图所示的模型。
现在我的问题是模型摘要。
Text
:
Formula: percent_farm_tractor ~ SSlogis(year, Asym, xmid, scal)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 2.265 2.527 0.896 0.4207
xmid 1975.306 17.589 112.305 3.77e-08 ***
scal 9.575 2.674 3.580 0.0232 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.03798 on 4 degrees of freedom
Number of iterations to convergence: 0
Achieved convergence tolerance: 5.703e-06
除非我对此有错误的解释,否则 b
系数表示斜率。当模型拟合图随着年份的增加甚至显示出积极趋势时,这怎么可能是负面的?
nls 模型 return slope
的正数,但我无法让 nls 包与我的其余数据一起使用。
谢谢
编辑:
我用split
获得了多个data.frames,每个都包含与一个县有关的多个记录,每个记录都是不同的年份。例如,这里有 2 个不同的 data.frame 代表 2 个不同的县:
`样本县 1
year state county name percent_farm_tractor stateAbb fips colorID
2 1925 1 3 BALDWIN 0.06760000 AL 1003 1
69 1930 1 3 BALDWIN 0.08679707 AL 1003 2
136 1940 1 3 BALDWIN 0.19938885 AL 1003 3
203 1950 1 3 BALDWIN 0.44627821 AL 1003 7
270 1954 1 3 BALDWIN 0.56669298 AL 1003 9
337 1964 1 3 BALDWIN 0.75094340 AL 1003 12
404 1969 1 3 BALDWIN 0.89988623 AL 1003 14
Sample County 2
:
year state county name percent_farm_tractor stateAbb fips colorID
476 1925 5 13 CALHOUN 0.000000000 AR 5013 1
551 1930 5 13 CALHOUN 0.006680027 AR 5013 1
626 1940 5 13 CALHOUN 0.027145359 AR 5013 1
701 1950 5 13 CALHOUN 0.187435633 AR 5013 3
776 1954 5 13 CALHOUN 0.333333333 AR 5013 5
851 1964 5 13 CALHOUN 0.530150754 AR 5013 8
926 1969 5 13 CALHOUN 0.929824561 AR 5013 14
我正在将 drm
应用到这些 data.frames 中的每一个,如下所示:
j <- 1
params <- data.frame()
for(j in 1:length(split_df)){
if(nrow(split_df[[j]]) != 1){
mL <- drm(percent_farm_tractor ~ year, data =
as.data.frame(split_df[[j]]), fct = L.3(), type = "continuous")
params <- rbind(params, coef(mL))
}
}
基本上每个县都有一个负斜率值,这似乎非常违反直觉,因为基本上每个县也随着年份的增加而呈现正趋势。
tl;dr 只需翻转标志;这是一个不寻常的参数化,其中负 b
对应于 increasing 函数。 (我不知道为什么我以前从未注意到这一点;也许是因为我通常关注 intercept/ED50 参数 ...)
这是?drc::logistic
中给出的广义逻辑表达式:
f(x) = c + \frac{d-c}{(1+\exp(b(x - e)))^f}
对于三参数logistic,c=0,f=1,所以我们有
f(x) = \frac{d}{(1+\exp(b(x - e)))}
很容易看出d
是上渐近线,e
是半极大值(当x=e
时,方程化为\frac{d}{(1+\exp(0)} = d/2
)。 b
确实是一个斜率,但关键是x>e
的分母是b
的递增函数;这意味着整个表达式是 b
.
的 递减 函数
这与更标准的逻辑参数化形成对比,后者在斜率之前添加负号,例如来自 plogis
:
F(x) = 1 / (1 + exp(-(x-m)/s))
注意(x-m)/s
前的-
!这里s
是尺度,m
是半最大值,1/s
是斜率...
我一直在努力使我的数据符合逻辑曲线。我遇到过我一直在使用的 2 个不同的包。 DRM
和 NLS
,所以从 drm
开始,我能够拟合如下图所示的模型。
现在我的问题是模型摘要。
Text
:
Formula: percent_farm_tractor ~ SSlogis(year, Asym, xmid, scal)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 2.265 2.527 0.896 0.4207
xmid 1975.306 17.589 112.305 3.77e-08 ***
scal 9.575 2.674 3.580 0.0232 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.03798 on 4 degrees of freedom
Number of iterations to convergence: 0
Achieved convergence tolerance: 5.703e-06
除非我对此有错误的解释,否则 b
系数表示斜率。当模型拟合图随着年份的增加甚至显示出积极趋势时,这怎么可能是负面的?
nls 模型 return slope
的正数,但我无法让 nls 包与我的其余数据一起使用。
谢谢
编辑:
我用split
获得了多个data.frames,每个都包含与一个县有关的多个记录,每个记录都是不同的年份。例如,这里有 2 个不同的 data.frame 代表 2 个不同的县:
`样本县 1
year state county name percent_farm_tractor stateAbb fips colorID
2 1925 1 3 BALDWIN 0.06760000 AL 1003 1
69 1930 1 3 BALDWIN 0.08679707 AL 1003 2
136 1940 1 3 BALDWIN 0.19938885 AL 1003 3
203 1950 1 3 BALDWIN 0.44627821 AL 1003 7
270 1954 1 3 BALDWIN 0.56669298 AL 1003 9
337 1964 1 3 BALDWIN 0.75094340 AL 1003 12
404 1969 1 3 BALDWIN 0.89988623 AL 1003 14
Sample County 2
:
year state county name percent_farm_tractor stateAbb fips colorID
476 1925 5 13 CALHOUN 0.000000000 AR 5013 1
551 1930 5 13 CALHOUN 0.006680027 AR 5013 1
626 1940 5 13 CALHOUN 0.027145359 AR 5013 1
701 1950 5 13 CALHOUN 0.187435633 AR 5013 3
776 1954 5 13 CALHOUN 0.333333333 AR 5013 5
851 1964 5 13 CALHOUN 0.530150754 AR 5013 8
926 1969 5 13 CALHOUN 0.929824561 AR 5013 14
我正在将 drm
应用到这些 data.frames 中的每一个,如下所示:
j <- 1
params <- data.frame()
for(j in 1:length(split_df)){
if(nrow(split_df[[j]]) != 1){
mL <- drm(percent_farm_tractor ~ year, data =
as.data.frame(split_df[[j]]), fct = L.3(), type = "continuous")
params <- rbind(params, coef(mL))
}
}
基本上每个县都有一个负斜率值,这似乎非常违反直觉,因为基本上每个县也随着年份的增加而呈现正趋势。
tl;dr 只需翻转标志;这是一个不寻常的参数化,其中负 b
对应于 increasing 函数。 (我不知道为什么我以前从未注意到这一点;也许是因为我通常关注 intercept/ED50 参数 ...)
这是?drc::logistic
中给出的广义逻辑表达式:
f(x) = c + \frac{d-c}{(1+\exp(b(x - e)))^f}
对于三参数logistic,c=0,f=1,所以我们有
f(x) = \frac{d}{(1+\exp(b(x - e)))}
很容易看出d
是上渐近线,e
是半极大值(当x=e
时,方程化为\frac{d}{(1+\exp(0)} = d/2
)。 b
确实是一个斜率,但关键是x>e
的分母是b
的递增函数;这意味着整个表达式是 b
.
这与更标准的逻辑参数化形成对比,后者在斜率之前添加负号,例如来自 plogis
:
F(x) = 1 / (1 + exp(-(x-m)/s))
注意(x-m)/s
前的-
!这里s
是尺度,m
是半最大值,1/s
是斜率...