Menafsirkan interaksi dalam model regresi

Saya harap sebuah pertanyaan sederhana.

Saya memiliki desain eksperimental di mana saya mengukur beberapa respons (katakanlah tekanan darah) dari dua kelompok: kelompok kontrol dan kelompok yang terkena dampak, di mana keduanya diberikan tiga perlakuan: t1, t2, t3. Data tidak berpasangan dalam arti apa pun.

Berikut ini contoh datanya:

set.seed(1)
df <- data.frame(response = c(rnorm(5,10,1),rnorm(5,10,1),rnorm(5,10,1),
                         rnorm(5,7,1),rnorm(5,5,1),rnorm(5,10,1)),
                 group = as.factor(c(rep("control",15),rep("affected",15))),
                 treatment = as.factor(rep(c(rep("t1",5),rep("t2",5),rep("t3",5)),2)))

Yang menarik bagi saya adalah mengukur pengaruh setiap perlakuan terhadap kelompok yang terkena dampak dibandingkan dengan kelompok kontrol. Bagaimana saya memodelkannya, katakanlah menggunakan model linier (misalnya lm di R)?

Apakah saya salah berpikir bahwa:

lm(response ~ 0 + treatment * group, data = df)

yang setara dengan:

lm(response ~ 0 + treatment + group + treatment:group, data = df)

bukankah itu yang aku butuhkan? Saya pikir dalam model ini perlakuan: istilah interaksi kelompok relatif terhadap rata-rata seluruh pengukuran kelompok dasar dan perlakuan dasar.

Oleh karena itu saya berpikir bahwa model ini:

lm(response ~ 0 + treatment:group, data = df)

adalah apa yang saya butuhkan tetapi ini mengukur setiap kombinasi perlakuan dan istilah interaksi kelompok: perlakuan t1: perlakuan kontrol kelompok t1: perlakuan yang terpengaruh kelompok t2: perlakuan kontrol kelompok t2: perlakuan yang terpengaruh kelompok t3: perlakuan kontrol kelompok t3: kelompok yang terpengaruh

Jadi mungkin model ini:

lm(response ~ 0 + treatment + treatment:group, data = df)

apakah yang benar?

Meskipun selain mengukur setiap kombinasi pengobatan dan istilah interaksi kelompok yang terkena dampak, hal ini juga mengukur efek dari setiap pengobatan. Saya tidak yakin apa dasar dasar setiap perlakuan dan istilah interaksi kelompok yang terkena dampak dibandingkan dalam model ini.

Bantuan akan dihargai.

Juga, katakanlah saya menjalankan perlakuan keempat yang sebenarnya merupakan kombinasi dari dua perlakuan, katakanlah t1+t3, di mana saya tidak tahu apa yang diharapkan dari efek gabungannya: aditif/subtraktif atau sinergis. Apakah ada cara untuk menggabungkannya?


person dan    schedule 11.11.2015    source sumber
comment
Jika saya memahaminya dengan benar, pada dasarnya Anda tertarik pada 3 kontras? Anda ingin tahu apa perbedaan antara t1 terpengaruh dan t1 kontrol, antara t2 terpengaruh dan t2 kontrol, dan terakhir, antara t3 terpengaruh dan t2 kontrol?   -  person N311V    schedule 11.11.2015
comment
Anda sebenarnya tidak menanyakan pertanyaan pemrograman di sini, Anda menanyakan pertanyaan tentang pemodelan statistik. Oleh karena itu, pertanyaan Anda termasuk dalam Divalidasi Silang, bukan Stack Overflow.   -  person MrFlick    schedule 11.11.2015
comment
N311V Anda benar. Inilah yang membuat saya tertarik   -  person dan    schedule 11.11.2015


Jawaban (2)


Istilah interaksi menunjukkan bahwa perbedaan antar kelompok bergantung pada perlakuan, yaitu perbedaan antara kelompok yang terkena dampak dan kelompok kontrol tidak sama untuk t1, t2, dan t3.

Saya akan memodelkan intersepnya.

lm(response ~ group + treatment + group:treatment, data=df)

Setelah mendapatkan istilah interaksi yang signifikan, saya akan menggunakan uji t untuk menyelidiki lebih lanjut dan membantu interpretasi.

Seperti yang dapat dilihat, interaksi tersebut didorong oleh pengaruh t2 yang lebih besar dibandingkan dengan yang lain.

library(data.table)
library(dplyr)
library(ggplot2)

set.seed(1)
df <- data.frame(response = c(rnorm(5,10,1),rnorm(5,10,1),rnorm(5,10,1),rnorm(5,7,1),rnorm(5,5,1),rnorm(5,10,1)),
             group = as.factor(c(rep("control",15),rep("affected",15))),
             treatment = as.factor(rep(c(rep("t1",5),rep("t2",5),rep("t3",5)),2)))

# t tests of the desired comparisons to see if there is a difference and get 95% confidence intervals
t.test(df$response[df$treatment=="t1"] ~ df$group[df$treatment=="t1"])
t.test(df$response[df$treatment=="t2"] ~ df$group[df$treatment=="t2"])
t.test(df$response[df$treatment=="t3"] ~ df$group[df$treatment=="t3"])

# plot 95% C.I.
ci_plot <- matrix(nrow=3, ncol=3)
ci_plot <- as.data.frame(ci_plot)
colnames(ci_plot) <- c("treatment", "lci", "uci")

ci_plot[,1] <- c("t1", "t2", "t3")
ci_plot[,3] <- c(t.test(df$response[df$treatment=="t1"] ~ df$group[df$treatment=="t1"])$conf.int[1],
             t.test(df$response[df$treatment=="t2"] ~ df$group[df$treatment=="t2"])$conf.int[1],
             t.test(df$response[df$treatment=="t3"] ~ df$group[df$treatment=="t3"])$conf.int[1])
ci_plot[,4] <- c(t.test(df$response[df$treatment=="t1"] ~ df$group[df$treatment=="t1"])$conf.int[2],
             t.test(df$response[df$treatment=="t2"] ~ df$group[df$treatment=="t2"])$conf.int[2],
             t.test(df$response[df$treatment=="t3"] ~ df$group[df$treatment=="t3"])$conf.int[2])

ggplot(ci_plot, aes(x=treatment, y=uci)) +
    geom_errorbar(aes(ymin=uci, ymax=lci), width=0.5, position=position_dodge(0.9), weight=0.5) +
    xlab("Treatment") +
    ylab("Change in mean relative to control (95% C.I.)") +
    theme_bw() +
    theme(panel.border = element_blank(),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          axis.line = element_line(colour = "black"),
          axis.text.x = element_text(angle = 90, hjust = 1))

masukkan deskripsi gambar di sini

person N311V    schedule 11.11.2015
comment
bagus, uji-t sederhana saja sudah cukup. Meskipun saya menyukai pendekatan saya. Hasil yang sama, kodenya lebih sedikit (yaitu saya menelepon lm sekali, dan Anda menelepon t.test tiga kali). Plot yang bagus! - person Jacob H; 11.11.2015
comment
Menurut saya, mengganti regresi berganda dengan serangkaian uji-t adalah konsep umum yang biasanya dihindari, mungkin terutama karena dalam regresi varians diperkirakan lebih baik. Berdasarkan saran Anda, apa gunanya menggunakan ANOVA jika Anda bisa menggantinya dengan uji-t? - person dan; 11.11.2015
comment
@dan kamu benar. Mengingat Anda kesulitan menafsirkan interaksi, saya mencoba menyederhanakannya untuk Anda. Saya setuju dengan jawaban Jacob H di bawah ini, pertahankan intersepsinya. Istilah interaksi yang signifikan memberi tahu Anda bahwa perbedaan antara yang terkena dampak dan kontrol bergantung pada pengobatan. Gambar di atas dan uji t post-hoc (yang sebenarnya hanya digunakan untuk mendapatkan 95% CI dari perubahan) menunjukkan bahwa interaksi yang signifikan didorong oleh pengaruh t2 yang lebih besar dibandingkan yang lain. Saya akan mencoba dan meningkatkan jawaban saya. - person N311V; 11.11.2015
comment
@dan regresi dan uji-t setara dalam contoh sederhana ini. Namun keuntungan dari regresi adalah kemudahan untuk memasukkan kontrol tambahan ke dalam model. Bayangkan Anda berpikir bahwa pendapatan seseorang akan mempengaruhi responnya. Anda bisa langsung memasukkan pendapatan sebagai regressor. Regresi juga memudahkan untuk membandingkan banyak hasil sekaligus. Terakhir, regresi memungkinkan Anda mengakomodasi situasi non-standar dengan mudah. Bagaimana jika datanya heteroskedastis? Bagaimana jika Anda menggunakan data hitungan? Bagaimana jika pengobatan Anda tidak diberikan secara acak tetapi ada instrumennya? - person Jacob H; 11.11.2015
comment
Tepatnya, belum lagi beberapa koreksi hipotesis yang terkait dengan serangkaian uji-t. Oleh karena itu komentar saya. Saya harus mengatakan bahwa istilah interaksi dalam lm(response ~ 0 + treatment + treatment:group, data = df) memberikan efek yang persis seperti pada plot Anda. Apakah Anda melihat ada yang salah dengan formulasi ini? - person dan; 11.11.2015
comment
Saya benar-benar tidak yakin apa yang lm(response ~ 0 + treatment + treatment:group, data = df) akan lakukan. Mungkin cocok untuk menggunakan model yang memaksa kedua kelompok memiliki mean yang sama. Jika ini dipindahkan ke Validasi Silang, Anda mungkin akan mendapatkan respons yang jauh lebih baik. - person N311V; 11.11.2015

Spesifikasi pertama Anda baik-baik saja.

lm(response ~  0 + treatment * group, data = df)

Call:
lm(formula = response ~ 0 + treatment * group, data = df)

Coefficients:
         treatmentt1               treatmentt2               treatmentt3  
               7.460                     5.081                     9.651  
        groupcontrol  treatmentt2:groupcontrol  treatmentt3:groupcontrol  
               2.670                     2.384                    -2.283 

Koefisien pertama, 7,460, mewakili pengaruh yang terjadi ketika seorang partisipan diberi perlakuan dengan t1 dan terpengaruh. Dari kiri ke kanan, koefisien kedua, 5,081, mewakili saat seorang partisipan diperlakukan dengan t2 dan terpengaruh, dll...

Jadi misal partisipan diberi perlakuan t2 dan di kontrol efeknya adalah 5,081 + 2,384.

Jika saya melakukan analisis ini, saya akan tetap melakukan intersepsi.

Call:
lm(formula = response ~ treatment * group, data = df)

Coefficients:
         (Intercept)               treatmentt2               treatmentt3  
               7.460                    -2.378                     2.192  
        groupcontrol  treatmentt2:groupcontrol  treatmentt3:groupcontrol  
               2.670                     2.384                    -2.283  

Sekarang koefisien kedua, dari kiri ke kanan, mewakili pengaruh peserta yang diberi perlakuan t2 dan terkena dampak relatif terhadap peserta yang diobati dengan t1 dan terkena dampak. Untuk melihatnya perhatikan bahwa 7.460 - 2.378 = 5.081 (koefisien kedua pada spesifikasi pertama). Saya menyukai pendekatan ini karena memudahkan interpretasi efek relatif.

Semua yang dikatakan @MrFlick benar. Ini adalah pertanyaan untuk Validasi Silang.

person Jacob H    schedule 11.11.2015