首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R给定系数和协方差矩阵中指定一个模型

在R给定系数和协方差矩阵中指定一个模型
EN

Stack Overflow用户
提问于 2022-10-27 21:22:44
回答 1查看 27关注 0票数 1

我正在尝试从一个出版物见此处参考实现一个预测模型

本文详细说明了从先前的临床研究中得出的预测模型,并给出了每个模型的系数和协方差矩阵。

我非常熟悉将模型拟合到R中的数据--但我从未指定过一个模型。

具体来说,我希望创建模型,以便在考虑模型的可变性的同时,利用预测()为不同的一组患者生成预测结果。

为了方便起见,我提供了两个模型中的一个以及相关的系数和协方差矩阵,它们都是类似的形式。任何帮助都是非常感谢的:

代码语言:javascript
复制
# Model 1
# TKV model
#  
# delta_TKV = exp(intercept + a x age + b x Ln(TKV_t) + c x female + d x age x Ln(TKV_t)) - 500

# delta_TKV - the change in total kidney volume (TKV) over a period of time in years
# age       - age of patient in years
# Ln(TKV_t) - natural log of total kidney volume at time t
# female    - boolean value for gender
# age:Ln(TKV_t) - interaction term between age and Ln(TKV)
 
# Coefficients         Estimate      SE
#  intercept            0.7889     1.1313    
#  age                  0.1107     0.0287 
#  Ln(TKV)              0.8207     0.1556 
#  Female              -0.0486     0.0266
#  Age:Ln(TKV)         -0.0160     0.0039

# Covariance           intercept        age        Ln(TKV)        Female      Age:Ln(TKV)
#  intercept            1.279758     -0.031790    -0.175654      -0.001306      0.004362
#  age                 -0.031790      0.00823      0.004361      -0.000016     -0.000113
#  Ln(TKV)             -0.175651      0.004361     0.024207      -0.000155     -0.000601
#  Female              -0.001306     -0.000016     0.000155       0.000708      0.000002
#  Age:Ln(TKV)          0.004362     -0.000113    -0.000601       0.000002      0.000016
EN

回答 1

Stack Overflow用户

发布于 2022-10-27 22:24:00

我不知道您是否可以生成一个模型,以便与自定义系数的predict一起使用。但是,您可以使用model.framemodel.matrix来根据公式生成设计矩阵。

代码语言:javascript
复制
data = data.frame(delta_TKV = 1:3 , TKV_t = 3.5, female = c(T,F,T), age = 40:42 )

model = model.frame(log(delta_TKV + 500) ~ age + log(TKV_t) + female + age:log(TKV_t),
                     data)
model 
#>   (Intercept) age log(TKV_t) femaleTRUE age:log(TKV_t)
#> 1           1  40   1.252763          1       50.11052
#> 2           1  41   1.252763          0       51.36328
#> 3           1  42   1.252763          1       52.61604
#> attr(,"assign")
#> [1] 0 1 2 3 4
#> attr(,"contrasts")
#> attr(,"contrasts")$female
#> [1] "contr.treatment"

coefs = c(
  intercept =           0.7889 ,
  age        =          0.1107 ,
  `log(TKV)`    =       0.8207 ,
  female      =        -0.0486 ,
  `Age:log(TKV)` =     -0.0160
)

model %*% coefs
#>       [,1]
#> 1 5.394674
#> 2 5.533930
#> 3 5.575986

我对公式进行了转换,使其类似于lm规范,因此响应是y+ 500的对数,如果要使用lm,则必须获得执行反向操作的y

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74228473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档