Saya menganalisa beberapa data perilaku menggunakan lme4
di R
, sebagian besar mengikuti tutorial Bodo Winter baik , tapi saya tidak mengerti jika saya menangani interaksi dengan benar. Lebih buruk lagi, tidak ada orang lain yang terlibat dalam penelitian ini menggunakan model campuran, jadi saya sedikit terombang-ambing ketika datang untuk memastikan semuanya benar.
Alih-alih hanya mengirim teriakan minta tolong, saya pikir saya harus melakukan upaya terbaik saya untuk menafsirkan masalah, dan kemudian meminta koreksi kolektif Anda. Beberapa selainnya adalah:
- Saat menulis, saya menemukan pertanyaan ini , menunjukkan bahwa
nlme
lebih langsung memberikan nilai p untuk istilah interaksi, tapi saya pikir itu masih valid untuk ditanyakan sehubungan denganlme4
. Livius'
jawaban untuk pertanyaan ini memberikan tautan ke banyak bacaan tambahan, yang akan saya coba selesaikan dalam beberapa hari ke depan, jadi saya akan berkomentar dengan kemajuan apa pun yang membawa.
Dalam data saya, saya memiliki variabel dependen dv
, condition
manipulasi (0 = kontrol, 1 = kondisi eksperimental, yang akan menghasilkan yang lebih tinggi dv
), dan juga prasyarat, berlabel appropriate
: uji coba berkode 1
untuk ini harus menunjukkan efeknya, tetapi uji coba berkode 0
mungkin tidak, karena faktor penting hilang.
Saya juga menyertakan dua intersep acak, untuk subject
, dan untuk target
, yang mencerminkan dv
nilai-nilai yang berkorelasi dalam setiap subjek, dan dalam masing-masing dari 14 masalah yang diselesaikan (masing-masing peserta menyelesaikan kontrol dan versi eksperimental dari setiap masalah).
library(lme4)
data = read.csv("data.csv")
null_model = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
(1 | subject) + (1 | target), data = data)
summary(interaction_model)
Keluaran:
## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
## Groups Name Variance Std.Dev.
## subject (Intercept) 0.006594 0.0812
## target (Intercept) 0.000557 0.0236
## Residual 0.210172 0.4584
## Number of obs: 690, groups: subject, 38; target, 14
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.2518 0.0501 5.03
## conditioncontrol 0.0579 0.0588 0.98
## appropriate -0.0358 0.0595 -0.60
## conditioncontrol:appropriate -0.1553 0.0740 -2.10
##
## Correlation of Fixed Effects:
## ...excluded for brevity.
ANOVA kemudian menunjukkan interaction_model
secara signifikan lebih cocok daripada mainfx_model
, dari mana saya menyimpulkan bahwa ada interaksi hadir yang signifikan (p = 0,035).
anova(mainfx_model, interaction_model)
Keluaran:
## ...excluded for brevity....
## Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
## mainfx_model 6 913 940 -450 901
## interaction_model 7 910 942 -448 896 4.44 1 0.035 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dari sana, saya mengisolasi bagian dari data yang memenuhi appropriate
persyaratan (yaitu, appropriate = 1
), dan untuk itu cocok dengan model nol, dan model termasuk condition
sebagai efek, membandingkan dua model menggunakan ANOVA lagi, dan lihat, menemukan bahwa condition
adalah prediktor yang signifikan.
good_data = data[data$appropriate == 1, ]
good_null_model = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)
anova(good_null_model, good_mainfx_model)
Keluaran:
## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
## Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
## good_null_model 4 491 507 -241 483
## good_mainfx_model 5 487 507 -238 477 5.55 1 0.018 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
sumber
lme4
: stats.stackexchange.com/questions/118416/...Jawaban:
Saya tidak melihat terlalu banyak untuk dikatakan di sini. Saya pikir Anda telah melakukan pekerjaan dengan baik.
Ada beberapa cara yang telah dibahas orang untuk menguji efek dan mendapatkan nilai-p untuk model efek campuran yang rumit. Ada ikhtisar yang bagus di sini . Yang terbaik adalah menggunakan metode intensif komputasi (bootstrap atau metode Bayesian), tetapi ini lebih maju untuk kebanyakan orang. Metode terbaik kedua (dan paling nyaman) adalah menggunakan uji rasio kemungkinan. Itulah yang
anova()
(secara teknis ? Anova.merMod () ) lakukan. Penting untuk hanya menggunakan uji rasio kemungkinan model yang sesuai dengan kemungkinan maksimum penuh , daripada kemungkinan maksimum terbatas.(REML). Di sisi lain, untuk model akhir Anda, dan untuk interpretasi, Anda ingin menggunakan REML. Ini membingungkan banyak orang. Dalam output Anda, kami melihat bahwa Anda cocok dengan model Anda dengan REML (ini karena opsi diaturTRUE
secara default dilmer()
. Itu berarti bahwa tes Anda tidak valid, namun, karena ini adalah kesalahan umum,anova.merMod()
berisirefit
argumen yang oleh default diatur keTRUE
, dan Anda tidak mengubahnya. Jadi pandangan ke depan dari pengembang paket telah menyelamatkan Anda di sana.Mengenai strategi Anda untuk membongkar interaksi, apa yang Anda lakukan baik-baik saja. Ingatlah bahwa interaksi menggunakan semua data untuk pengujiannya. Dimungkinkan untuk memiliki interaksi yang signifikan tetapi tidak memiliki tes bertingkat yang signifikan, yang membingungkan beberapa orang. (Tapi sepertinya itu tidak terjadi padamu.)
sumber
Saya sendiri seorang pemula, dan mengikuti saran dari Zuur dkk. Saya menggunakan
lme
darinlme
paket alih-alihlme4
ketika saya perlu menambahkan struktur kesalahan hierarkis ke model linier yang sebaliknya. Respons saya mungkin jauh.Dua komentar:
(1) Saya tidak yakin masuk akal untuk menguji
condition
di subset kapanappropriate==1
saja. Jika Anda ingin mendapatkan nilai p untuk efek utama, Anda dapat menggunakanAnova
dari paket 'mobil':Jika Anda ingin menyelesaikan interaksi, Anda dapat menjalankan perbandingan berpasangan secara langsung (?) Atau melakukan apa yang Anda lakukan tetapi pada kedua himpunan bagian (yaitu juga dengan subset di mana
appropriate==0
).(2) Anda mungkin ingin memilih struktur kesalahan Anda terlebih dahulu alih-alih berasumsi
(1 | subject) + (1 | target)
adalah struktur kesalahan terbaik. Dari apa yang Anda tulis, saya kumpulkan bahwa itucondition
adalah dalam faktor subjek, sementara ituappropriate
adalah antara subjek atau antara target. Anda mungkin ingin menambahkan lereng untuk faktor dalam subjek dan / atau dalam target, misalnya:dv ~ condition + appropriate + (1+condition | subject) + (1 | target)
menambahkan kemiringan acak untuk faktor dalam subjekcondition
. Tidak ada kemiringan yang diperlukan untuk faktor antar subjek / target.Bersulang
sumber
Anova
hanya berpura-pura korelasi dalam subjek dan -target tidak ada di sana? Alasan saya mengulangi analisis hanya dengan data di manaappropriate==1
sejumlah bahan yang digunakan terbukti bermasalah setelah ujian, sehingga 'tidak sesuai'. Akhirnya, saya tidak menggunakan lereng acak karena alasan sederhana bahwa model lebih cocok tanpa mereka.