1. 安装gemtc包
使用的是Rstudio,如果Rstudio安装不成功,可以先用Rgui安装:
install.packages('code')
2. 载入程序包
library(gemtc)
library(code)
library(codetools)
library(testthat)
3. 导入数据
这里是一个gemtc包中的例子,命名为file:
file <- system.file('extdata/luades-smoking.gemtc', package='gemtc') #导入数据,并命名为file
net = read.mtc.network(file) #读取gemtc文件,并保存为net
4. 保存数据
write.csv(network$treatments, file = "D:\\Desktop\\network0001_treatments.csv")
write.csv(network$data.ab, file = "D:\\Desktop\\network0001_data.ab.csv")
5.读取数据
treatments<- read.csv("D:\\Desktop\\network0001_treatments.csv",header=T,sep = ",",skip=0,row.names = 1)
#header=T,表示文件存在,表示需要读取数据的数据头部,skip=0,表示数据中没有需要跳过的行,row.names = 1是第一列作为行名
#同样,把另外一个表也读取进来
data <- read.csv("D:\\Desktop\\network0001_data.ab.csv",header=T,sep = ",",row.names = 1)
6. 创建network对象,建立成network 单臂长数据格式
network<- mtc.network(data, description="Luades_smoking", treatments=treatments)
7. 构建模型,一致性模型
model <- mtc.model(network, type = 'consistency')
#其中, network 为 network 数据, type 为是否选取一致性模型
#这里提示没有安装slam包
8.运算结果
result <- mtc.run(model) #简单命令;需要电脑上安装jags,安装地址下载jags;
result <-mtc.run(model, sampler ="rjags", n.adapt = 5000, n.iter = 20000, thin = 1)
#复杂命令,通过sampler命令选取软件的调用方式;“n.adapt”为预迭代次数,“n.iter”为迭代运算次数,“thin”为步长。
9. 网状证据图等
plot(network) #模型网状图
#绘制tiff图片并保存
tiff(file="network.tiff")
plot(network)
dev.off()
#诊断收敛性
gelman.plot(result)
#收敛图导出
tiff(file="gelman.plot.tiff")
gelman.plot(result,auto.layout =F)
dev.off()
plot(result) #密度图
forest(result) #森林图
ranks <- rank.probability(result) #等级排名
print(ranks)
#堆积排序图
tiff(file="堆积排序图.tiff")
plot(ranks)
dev.off()
#单个排序图
tiff(file="单个排序图.tiff")
barplot(t(ranks), beside=TRUE)
dev.off()
# 相对影响森林图导出vsB
tiff(file="0109相对影响森林图导出vsB.tiff")
forest(relative.effect(result, "B"))
dev.off()
10. 残差
print(result$deviance)
11.异质性图
result.anohe <- mtc.anohe(network, n.adapt=1000, n.iter=5000)
summary.anohe <- summary(result.anohe)
plot(summary.anohe, xlim=log(c(0.2, 5)))
summary.anohe
summary.anohe$consEffects
summary.anohe$studyEffects
summary.anohe$pairEffects
12.节点劈裂法,探讨模型的一致性和不一致性
network
result <-mtc.nodesplit(network)
summary(result)
names(result)
# [1] "d.A.C" "d.A.D" "d.B.D" "d.C.D" "consistency"
summary(result$d.A.C)
# Overall summary and plot
summary.ns <- summary(result)
print(summary.ns)
plot(summary.ns)