El efecto de interacción (p de Interacción) puede considerarse como un nirvana en los artículos SCI, y casi siempre aparece en los SCI de puntuación alta, porque dividir la población en subgrupos y luego realizar estadísticas puede mejorar la confiabilidad de los resultados del artículo. Hoy
usamos el lenguaje R para dibujar una tabla como la de arriba, continuamos usando nuestros datos de nacimientos prematuros, primero importemos los datos
bc<-read.csv("E:/r/test/zaochan.csv",sep=',',header=TRUE)
bc <- na.omit(bc)
Estos son los datos sobre bebés prematuros con bajo peso al nacer (respuesta oficial de la cuenta: datos de nacimiento prematuro, los datos se pueden obtener), y los bebés por debajo de 2500 g se consideran bebés con bajo peso al nacer. Los datos se interpretan de la siguiente manera: bajo si es un bebé prematuro de bajo peso al nacer menor de 2500 g, edad edad de la madre, lwt último peso menstrual, raza raza, humo tabaquismo durante el embarazo, ptl antecedentes de parto prematuro (recuento), ht antecedentes de hipertensión, ui alergia uterina, ftv embarazo temprano Número de visitas al médico
bwt Valor del peso del recién nacido.
Primero convertimos las variables categóricas en factores
bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$low<-factor(bc$low)
bc$race<-factor(bc$race)
bc$ht<-factor(bc$ht)
bc$ui<-factor(bc$ui)
Supongamos que queremos estudiar el efecto de la edad materna en la relación entre el parto prematuro, necesitamos comprender la interacción de la edad y el parto prematuro entre diferentes razas.
Primero divide la edad en 3 grupos de datos
dat1<-subset(bc,bc$race==1)
dat2<-subset(bc,bc$race==2)
dat3<-subset(bc,bc$race==3)
Utilice estos 3 datos para construir un modelo respectivamente. Tenga en cuenta que el modelo no tiene el indicador de raza
f1<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat1,
family=binomial(link = "logit"))
f2<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat2,
family=binomial(link = "logit"))
f3<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat3,
family=binomial(link = "logit"))
A continuación, necesitamos extraer los coeficientes para cada modelo, primero extraemos el modelo f1
b<-summary(f1)$coeff[2,1]#提取系数
se<-summary(f1)$coeff[2,2]#提取标准误
OR<-round(exp(b),2)
ll<-round(exp(b-1.96*se),2)
ul<-round(exp(b+1.96*se),2)
A continuación, necesitamos realizar los mismos coeficientes de extracción para otros modelos. Aquí lo escribo como un bucle para ejecutar. Primero, establezca una función de salida.
jj<-function(data) {
dat<-data
fit<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat,
family=binomial(link = "logit"))
b<-summary(fit)$coeff[2,1]#提取系数
se<-summary(fit)$coeff[2,2]#提取标准误
OR<-round(exp(b),3)
ll<-round(exp(b-1.96*se),3)
ul<-round(exp(b+1.96*se),3)
d<-data.frame(OR,ll,ul)
}
Combinar 3 datos en una lista
dt<-list(dat1,dat2,dat3)
Use la función sapply para ejecutar
out<-sapply(dt,jj)
Necesidad de transponer el resultado generado.
out1<-as.data.frame(t(out))
De esta manera, se generan el resultado OR valor y el intervalo creíble. El valor P del efecto de interacción debe calcularse por separado. No lo demostraré aquí. Si está interesado, lea mis artículos anteriores. El valor P aquí es 0.7358
p<-0.7358
A continuación, configure la tabla, ahora agregue una fila de valores vacíos
out2<-rbind(c("","",""),out1)
Ponga nuestro resultado y cambie el nombre
out2$p.for.Interaction<-c(0.075,"","","")
rownames(out2)<-c("race","black","white","other")
Visualización de resultados finales