分布滞后非线性模型(DLNM)分层分析R语言代码

IMPORT DATA

data1 <- read.csvcsv",header=T

SORT DATA BY YEAR, MONTH

data1 <- data1[with(data1

该回答引用GPT

library(dlnm)
library(tidyverse)

# 读取数据
data0 <- read.csv("data0.csv")
data1 <- read.csv("data1.csv")

# 计算每个县区平均人口密度
adensity <- data0 %>%
  group_by(ZONECODE) %>%
  summarize(adensity = mean(den2015, den2016, den2017, den2018, den2019))

# 将adensity和data1按ZONECODE关联
data <- left_join(data1, adensity, by = "ZONECODE")

# 计算第1四分位和第4四分位
q1 <- quantile(data$adensity, 0.25)
q4 <- quantile(data$adensity, 0.75)

# 多元DLNM
mdl <- dlnm(data = data, formula = PM25 ~ s(time, k = 5) + s(tmp, k = 5) + s(wind, k = 5) + s(adensity, k = 5), 
            cross = c("adensity"), lag = 3, season = "ns", timeSlices = 10)

# 可视化
plot(mdl, var = "adensity", lag = 3, q1 = q1, q4 = q4, main = "DLNM for adensity")

# Z检验
ztest <- dlnm:::dl.ztest(mdl, var1 = "adensity", var2 = NULL, lag = 3, q1 = q1, q4 = q4, maxLag = 7, df = Inf)
ztest

我看到以下几个问题:

  1. library(dlnm) 应该在其他 library() 调用之前,按字母顺序排列,如:

r
library(dlply)
library(dplyr)
library(dlnm)
library(imputeTS)
library(splines)

  1. write.csv(data1,"D:/DLNM_cumulative/cumulative.csv") 这一行注释掉了,要么删除要么取消注释

  2. mutate(lag.value1 = dplyr::lag(rate, n = 1, default = NA)) 中 rate 应该改为 number,例如:

r
data1<-data1 %>% group_by(ZONECODE) %>% mutate(lag.value1 = dplyr::lag(number, n = 1, default = NA))

  1. glm() 模型中的 number ~cb1.HTEM +cb1.RHU+cb1.PRS+cb1.PRE 中的 number 应该改为 rate 以匹配其他变量,例如:

r
model1 = glm(rate ~cb1.HTEM +cb1.RHU+cb1.PRS+cb1.PRE +ns(ID.month,5*1)+factor(region)+offset(log(population/10))+lag.value1,family=quasipoisson(), data1)

  1. 其他一些地方出现的 number 也应改为 rate,如 crall <- crossreduce(cb1.HTEM,model1,cen=round(median(data1$number))) 中的 number

  2. 考虑将 Babesiosis 全称写出,如: Babesiosis incidence