从退款 R 包中的拟合 pfr 对象中提取系数函数
Extract coefficient functions from a fitted pfr-object from refund R package
我正在尝试从拟合的 pfr
对象中提取系数。
我适合以下形式的函数广义线性模型 (FGLM):
E[Y_i] = X_i' \beta + \int_T f[t, Z_i(t)] dt
、
然后我尝试通过 coef(fit_FGAM, n = c(n_1,n_2))
提取系数,其中 fit_FGAM
是拟合模型对象。
我从文档中读到:n
- 表示每个参数的等距坐标数的整数向量。如果长度为 1,则每个参数使用相同的数字。否则,长度必须匹配 object$smooth[[select]]$dim
.
我不清楚:
例如,二元向量 n = c(n_1,n_2)
的哪个元素对应参数 t
,哪个元素对应参数 Z_i
?
我假设(猜测)默认情况下,参数 t
(时间)的 坐标范围 是 (min(t), min(t))
,鉴于所有 t
坐标对于所有观察都是相同的 - 是这种情况吗?
坐标Z_i
的范围是怎么定义的? 所有(标量)值的范围是否存在于所有时间点和所有观测值的 Z_i
内的数据集中?
天哪,帮助页面太糟糕了...
n
的第一个参数是 t
,第二个参数是 Z
(见示例
下)
- 是的
- 是的。请参阅下面的示例,了解使用
coords
-argument 定义您自己的评估网格
```
library(refund)
data(DTI)
DTI1 <- DTI[DTI$visit==1 & complete.cases(DTI),]
par(mfrow=c(1,2))
# Fit FGAM:
(fit_af <- pfr(pasat ~ sex + case + af(cca, k=c(5, 8), bs="ps"), data=DTI1))
#>
#> Family: gaussian
#> Link function: identity
#>
#> Formula:
#> pasat ~ sex + case + te(z = cca.tmat, x = cca.omat, by = L.cca,
#> k = c(5, 8), bs = "ps")
#>
#> Estimated degrees of freedom:
#> 2.71 total = 4.71
#>
#> REML score: 232.6839 rank: 40/42
all.equal(
coefficients(fit_af, n = c(100, 10)),
coefficients(fit_af,
coords = list(cca.argvals = seq(0, 1, l = 100),
cca = modelr::seq_range(DTI1$cca, n = 10)))
)
#> [1] TRUE
```
我正在尝试从拟合的 pfr
对象中提取系数。
我适合以下形式的函数广义线性模型 (FGLM):
E[Y_i] = X_i' \beta + \int_T f[t, Z_i(t)] dt
、然后我尝试通过
coef(fit_FGAM, n = c(n_1,n_2))
提取系数,其中fit_FGAM
是拟合模型对象。我从文档中读到:
n
- 表示每个参数的等距坐标数的整数向量。如果长度为 1,则每个参数使用相同的数字。否则,长度必须匹配object$smooth[[select]]$dim
.
我不清楚:
例如,二元向量
n = c(n_1,n_2)
的哪个元素对应参数t
,哪个元素对应参数Z_i
?我假设(猜测)默认情况下,参数
t
(时间)的 坐标范围 是(min(t), min(t))
,鉴于所有t
坐标对于所有观察都是相同的 - 是这种情况吗?坐标
Z_i
的范围是怎么定义的? 所有(标量)值的范围是否存在于所有时间点和所有观测值的Z_i
内的数据集中?
天哪,帮助页面太糟糕了...
n
的第一个参数是t
,第二个参数是Z
(见示例 下)- 是的
- 是的。请参阅下面的示例,了解使用
coords
-argument 定义您自己的评估网格
```
library(refund)
data(DTI)
DTI1 <- DTI[DTI$visit==1 & complete.cases(DTI),]
par(mfrow=c(1,2))
# Fit FGAM:
(fit_af <- pfr(pasat ~ sex + case + af(cca, k=c(5, 8), bs="ps"), data=DTI1))
#>
#> Family: gaussian
#> Link function: identity
#>
#> Formula:
#> pasat ~ sex + case + te(z = cca.tmat, x = cca.omat, by = L.cca,
#> k = c(5, 8), bs = "ps")
#>
#> Estimated degrees of freedom:
#> 2.71 total = 4.71
#>
#> REML score: 232.6839 rank: 40/42
all.equal(
coefficients(fit_af, n = c(100, 10)),
coefficients(fit_af,
coords = list(cca.argvals = seq(0, 1, l = 100),
cca = modelr::seq_range(DTI1$cca, n = 10)))
)
#> [1] TRUE
```