全文下载链接:http://tecdat.cn/?p=21317
最近咱们被客户要求撰写对于散布滞后非线性模型(DLNM)的钻研报告,包含一些图形和统计输入。
本文提供了运行散布滞后非线性模型的示例,同时形容了预测变量和后果之间的非线性和滞后效应,这种互相关系被定义为裸露-滞后-反馈关联
数据集蕴含1987-2000年期间每日死亡率(CVD、呼吸道),天气(温度,相对湿度)和净化数据(PM10和臭氧)。数据是由衰弱影响研究所资助的《国家发病率,死亡率和空气污染钻研》(NMMAPS)的一部分[Samet et al.,2000a,b]。
该钻研是对于随工夫变动的职业裸露与癌症之间的关系。该钻研包含250个危险集,每个危险集都有一个病例和一个对照,并与年龄相匹配。裸露数据以15岁至65岁之间的5岁年龄区间收集。
数据集药物蕴含模仿数据,来自一个假如的随机对照试验,对随工夫变动剂量的药物的影响。该钻研包含200名随机受试者,每人每天承受药物剂量,继续28天,每周都有变动。每隔7天报告一次。
DLNM办法
在这里,我提供了一个简短的摘要来介绍概念和定义。
裸露-滞后-反馈关联
DLNM的建模类用于形容关联,在该关联中,裸露和后果之间的依赖关系会在工夫上滞后。能够应用两个不同且互补的观点来形容此过程。咱们能够说,在工夫t处的裸露事件确定了在工夫t +l处的将来危险。应用后向视角,工夫t的危险由过来在工夫t-l经验的一系列危险确定。这里的l是滞后,示意裸露和测得的后果之间的滞后。
DLNM统计模型
DLNM类提供了一个概念和剖析框架,用于形容和预计裸露-滞后-反馈关联。DLNM的统计倒退基于以下抉择:DLNM类为形容和预计裸露-滞后-反馈关联提供了一个概念和剖析框架。DLNM的统计倒退基于该抉择。
裸露-滞后-反馈关联的一个简略状况是,预测变量空间中的关系(即裸露-滞后关系)是线性的。能够通过DLM对这种类型的关系进行建模。在这种状况下,关联仅取决于滞后反馈函数,该函数模仿线性危险如何随滞后变动。滞后反馈函数的不同抉择(样条曲线,多项式,档次,阈值等)导致指定了不同的DLM,并暗示了滞后反馈关系的代替假如。
DLNM解释
DLNM的后果能够通过应用3-D绘图提供沿两个维度变动的关联,通过为每个滞后和预测变量的拟合值构建预测网格来解释。
第一是与特定裸露值相关联的滞后反馈曲线,定义为预测变量特定性关联。这被解释为与工夫t危险相干的工夫t +l的危险奉献序列。
第二是与特定滞后值相关联的裸露-反馈曲线,该特定滞后值定义为滞后特定关联。这被解释为与在工夫t处产生的裸露值相关联的在工夫t +l处的裸露-反馈关系。
第三个也是最重要的是与在思考的滞后期内经验的整个裸露历史相干的裸露反馈曲线,定义为总体累积关联。应用正向视角,这被解释为示意工夫t产生的给定裸露期间[t,t+L]期间经验的净危险的裸露反馈关系。
工夫序列之外的利用
散布滞后模型首先是在很久以前的计量经济工夫序列剖析中提出的[Almon,1965],而后在环境流行病学Schwartz [2000]的工夫序列数据中从新提出。DLNM的扩大是由Armstrong [2006]构想的。Gasparrini等人对工夫序列数据的建模框架进行了从新评估。[2010]。乏味的是,曾经在不同的钻研畛域中提出了这种裸露-滞后-反馈关联的模型。个别的想法是通过特定函数加权过来的裸露,这些函数的参数由数据估算。在癌症流行病学[Hauptmann等,2000;Langholz等,1999;Richardson,2009;Thomas,1983;Vacek,1997]和药物流行病学[Abrahamowicz等]中,阐明了相似于DLM的线性-裸露-反馈关系模型。
根本函数
指定规范裸露反馈和滞后反馈关系的根本函数,例如多项式,分层或阈值函数。例如,样条线由举荐的包样条线中蕴含的函数ns()和bs()指定。多项式是通过函数poly()取得的。这是一个简略向量的转换示例:
poly(1:5,degree=3)1 2 3[1,] 0.2 0.04 0.008[2,] 0.4 0.16 0.064[3,] 0.6 0.36 0.216[4,] 0.8 0.64 0.512[5,] 1.0 1.00 1.000attr(,"degree")[1] 3attr(,"scale")[1] 5attr(,"intercept")[1] FALSEattr(,"class")[1] "poly" "matrix"
第一个未命名的参数x指定要转换的向量,而参数度设置多项式的度。定义分层函数是通过strata()指定的。
strata(1:5,breaks=c(2,4))[,]1 2[1,] 0 0[2,] 1 0[3,] 1 0[4,] 0 1[5,] 0 1
后果是带有附加类别“层”的根底矩阵。转换是定义比照的虚构参数化。参数break定义了层的右凋谢区间的下边界。
阈值函数通过thr()指定。一个例子:
thr(1:5,thr.value=3,side="d")[,]1 2[1,] 2 0[2,] 1 0[3,] 0 0[4,] 0 1[5,] 0 2
后果是具备附加类别“ thr”的根底矩阵。参数thr.value定义一个带有一个或两个阈值的向量,而side用于指定高(“ h”,默认值),低(“ l”)或双精度(“ d”)阈值参数化。
点击题目查阅往期内容
【视频】R语言中的散布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
左右滑动查看更多
01
02
03
04
根本转换
此函数代表以dlnm为单位进行根本转换的次要函数,实用于指定裸露-反馈和滞后-反馈关系。它的作用是利用选定的转换并以实用于其余函数(例如crossbasis()和crosspred())的格局生成根本矩阵。以下示例复制了该局部中显示的多项式变换:
onebasis(1:5,fun="poly",degree=3)b1 b2 b3[1,] 0.2 0.04 0.008[2,] 0.4 0.16 0.064[3,] 0.6 0.36 0.216[4,] 0.8 0.64 0.512[5,] 1.0 1.00 1.000attr(,"fun")[1] "poly"attr(,"degree")[1] 3attr(,"scale")[1] 5attr(,"intercept")[1] FALSEattr(,"class")[1] "onebasis" "matrix"attr(,"range")[1] 1 5
后果是带有附加类“ onebasis”的根底矩阵。同样,第一个未命名参数x指定要转换的向量,而第二个参数fun将字符转换定义为利用转换而调用的函数的名称。具体来说,根本矩阵包含fun和range属性,以及定义转换的被调用函数的参数。如前所述,onebasis()还能够依据特定要求调用用户定义的函数。一个简略的例子:
> mylog <- function(x) log(x)> onebasis(1:5,"mylog")b1[1,] 0.0000000[2,] 0.6931472[3,] 1.0986123[4,] 1.3862944[5,] 1.6094379attr(,"fun")[1] "mylog"attr(,"range")[1] 1 5attr(,"class")[1] "onebasis" "matrix"
穿插基
这是dlnm软件包中的次要函数。它在外部调用onebasis()来生成裸露-反馈和滞后-反馈关系的基矩阵,并通过非凡的张量积将它们组合起来,以创立穿插基,该穿插基在模型中同时指定了裸露-滞后-反馈关联性。它的第一个参数x的类定义如何解释数据。能够应用第二个变量lag批改滞后期。
作为一个简略的示例,我模仿了2-5个滞后期内3个对象的裸露历史矩阵:它们中的每一个都将传递给onebasis()来别离构建裸露-反馈和滞后-反馈关系的矩阵。仅用于工夫序列数据的附加参数组定义了被视为独自无关序列的察看组,例如在季节性剖析中可能有用。作为一个简略的示例,我模仿了2-5个滞后期内3个对象的裸露历史矩阵:它们中的每一个都将传递给onebasis()来别离构建裸露-反馈和滞后-反馈关系的矩阵。作为一个简略的示例,我模仿了2-5个滞后期内3个对象的裸露历史矩阵:
> histlag2 lag3 lag4 lag5sub1 1 3 5 6sub2 7 8 9 4sub3 10 2 11 12
而后,我利用穿插基参数化,将二次多项式作为裸露反馈函数,并将分层函数2-3和4-5定义为滞后反馈函数的分层函数:
lag=c(2,5),argvar=list(fun="poly",degree=2),arglag=list(fun="strata",breaks=4))[,]v1.l1 v1.l2 v2.l1 v2.l2sub1 1.250000 0.9166667 0.4930556 0.4236111sub2 2.333333 1.0833333 1.4583333 0.6736111sub3 2.916667 1.9166667 2.5625000 1.8402778
该函数返回“ crossbasis”类的矩阵对象。它首先应用argvar和arglag列表中的参数调用onebasis(),以建设裸露反馈空间和滞后反馈空间的矩阵根底。在另一个示例中,我将crossbasis()利用于数据集中的变量temp,该数据集示意1987-2000年期间日平均温度序列:
> summary(cb)CROSSBASIS FUNCTIONSobservations: 5114range: -26.66667 to 33.33333lag period: 0 30total df: 10BASIS FOR VAR:fun: thrthr.value: 10 20side: dintercept: FALSEBASIS FOR LAG:fun: nsknots: 1 4 12intercept: TRUEBoundary.knots: 0 30
此处,将裸露反馈建模为阈值为10和20的双阈值函数。滞后工夫设置为0到30。滞后反馈函数留给默认的天然三次样条(fun =“ ns”),其滞后值为1、4和12。
预测
crossbasis()生成的穿插基矩阵须要蕴含在回归模型公式中能力拟合模型。关联通过函数crosspred()进行汇总,该函数针对默认值或用户间接抉择的预测值和滞后值的组合的网格进行预测。例如,我应用创立的穿插基矩阵cb,应用数据集工夫序列数据来钻研温度与心血管疾病死亡率之间的关联。首先,我将一个简略的线性模型与模型公式中蕴含的穿插基矩阵拟合。而后,我通过应用cross-basis和回归模型对象作为前两个参数调用crosspred()来取得预测:
crosspred(cb,model,at=-20:30)
后果是“ crosspred”类的列表对象,其中的存储预测和无关模型的其余信息,例如系数和与穿插基参数无关的关联(协)方差矩阵的一部分。能够为特定的预测器-滞后组合抉择预测的网格。例如,我提取温度为-10°C且滞后5的预测和置信区间,而后提取25°C的整体累积预测:
> pred$allfit["25"]251.108262
第一个结果表明,在给定的一天中,-20°C的温度会在五天后导致0.95例心血管死亡的减少,或者在给定的一天中,温度为-6摄氏度时,心血管死亡的数目减少0.95。其余类型的预测能够通过crosspred()取得。特地是,如果模型链接等于log或logit,则将主动返回取幂的预测。如果参数cum设置为TRUE,则是累积预测的矩阵cum。
crosspred()的另一种用法是预测特定的裸露历史记录集的影响。这能够通过输出裸露历史矩阵作为参数来实现。例如,咱们能够从拟合模型中预测出,在过来10天裸露于30°C和在滞后期的其余工夫裸露于22°C之后,心血管死亡的总体累积减少:如果参数cum设置为TRUE,则包含增量累积预测的矩阵cum,并将其存储在组件cum中。crosspred()的另一种用法是预测特定的裸露历史记录集的影响。这能够通过输出裸露历史矩阵作为参数来实现。例如,咱们能够从拟合模型中预测出,在过来10天裸露于30°C和在滞后期的其余工夫裸露于22°C之后,心血管死亡的总体累积减少:
> crosspred(cb,model,at=histpred)$allfit15.934992
dlnm软件包的次要长处之一是,用户能够应用规范回归函数执行DLNM,只需在模型公式中包含穿插基矩阵即可。函数crosspred()主动解决来自回归函数lm()和glm(),gam()(软件包mgcv),coxph()的模型。
降维
DLNM的拟合度能够升高到预测变量或滞后的一个维度,仅以诸如总累积裸露反馈表白。该计算通过函数crossreduce()进行,该函数的工作原理与crosspred()十分类似。前两个自变量base和model指定穿插基矩阵和须要对其执行计算的模型对象。缩小的类型由类型定义,带有选项“ overall”-“ lag”-“ var”,用于汇总总体累积裸露反馈,滞后特异性裸露反馈或预测变量特异性滞后反馈。
绘图
一维或二维关联的解释通过图形示意来辅助。通过办法函数plot(),lines()和points()为类“ crosspred”和“ crossreduce”提供高级和低级绘图性能。例如,我应用对象pred中的预测。plot()办法能够通过参数ptype为“ crosspred”对象生成不同类型的图。具体来说,它会生成整个二维裸露-滞后-反馈关联的图形。二维关联能够绘制为3-D或等高线图,例如:
> plot(pred,ptype="3d",main="3D plot"
能够通过抉择不同的ptype取得定义的关联的摘要。
> plot(pred,"overall"
在这种状况下,办法函数plot()在外部调用函数plot.default(),如下面的示例所示,能够将其余特定参数增加到函数调用中。通过设置ptype =“ slices”,能够将滞后特异性和预测因子特异性关联别离绘制为裸露-反馈和滞后-反馈关系,因为它们是在3-D曲面中沿特定维度切割的切片。例如:
> plot(pred,"slices",lag=5
这两个图别离代表了滞后5的裸露反馈和特定于25°C温度的滞后反馈。参数lag和var指定必须别离绘制lag和特定于预测变量的关联的值。
点击文末 “浏览原文”
获取全文残缺代码数据资料。
本文选自《R语言散布滞后非线性模型(DLNM)钻研发病率,死亡率和空气污染示例》。
点击题目查阅往期内容
R语言散布滞后线性和非线性模型(DLM和DLNM)建模
散布滞后线性和非线性模型(DLNM)剖析空气污染(臭氧)、温度对死亡率工夫序列数据的影响
R语言中的散布滞后非线性模型DLNM与发病率和空气污染示例
【视频】R语言中的散布滞后非线性模型(DLNM)与发病率,死亡率和空气污染示例
R语言散布滞后线性和非线性模型(DLNM)剖析空气污染(臭氧)、温度对死亡率工夫序列数据的影响
R语言散布滞后线性和非线性模型(DLMs和DLNMs)剖析工夫序列数据
R语言散布滞后非线性模型(DLNM)空气污染钻研温度对死亡率影响建模利用R语言散布滞后非线性模型(DLNM)钻研发病率,死亡率和空气污染示例
R语言散布滞后线性和非线性模型(DLM和DLNM)建模
R语言狭义相加模型 (GAMs)剖析预测CO2工夫序列数据
Python | ARIMA工夫序列模型预测航空公司的乘客数量
R语言中生存分析模型的工夫依赖性ROC曲线可视化
R语言ARIMA,SARIMA预测道路交通流量工夫序列剖析:季节性、周期性
ARIMA模型预测CO2浓度工夫序列-python实现
R语言基于递归神经网络RNN的温度工夫序列预测
R语言用多元ARMA,GARCH ,EWMA, ETS,随机稳定率SV模型对金融工夫序列数据建模
R语言神经网络模型预测车辆数量工夫序列
卡尔曼滤波器:用R语言中的KFAS建模工夫序列
在Python中应用LSTM和PyTorch进行工夫序列预测
R语言从经济工夫序列中用HP滤波器,小波滤波和教训模态合成等提取周期性成分剖析
应用PYTHON中KERAS的LSTM递归神经网络进行工夫序列预测
Python中的ARIMA模型、SARIMA模型和SARIMAX模型对工夫序列预测
R语言k-Shape工夫序列聚类办法对股票价格工夫序列聚类
R语言多元Copula GARCH 模型工夫序列预测