मेरे पास एक रैखिक मॉडल है और यह महत्वपूर्ण है कि शर्तों को एक विशिष्ट क्रम में दर्ज किया गया है क्योंकि मैं एक प्रकार I एनोवा का उपयोग करने की योजना बना रहा हूं। मैं चाहता हूं कि मॉडल पहले दो मुख्य प्रभावों और तीसरे मुख्य प्रभाव से पहले उनकी बातचीत को शामिल करे।
हालाँकि जब मैं इसे lm()
में एक सूत्र के रूप में दर्ज करता हूं, तब भी यह मुझे पहले तीनों मुख्य प्रभावों और फिर अंतःक्रियाओं के साथ आउटपुट देता है। क्या इसे बदला जा सकता है?
## Example data:
df <- structure(list(x1 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L,3L, 3L, 3L, 3L, 3L),
.Label = c("A", "B", "C"), class = "factor"),
x2 = c(0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L,
0L, 1L, 0L, 1L, 1L, 0L, 0L),
x3 = c(1L, 3L, 4L, 5L, 2L, 3L, 3L, 4L, 5L, 1L, 3L, 4L, 5L, 6L, 4L, 3L, 4L,
1L, 2L, 2L, 1L, 1L, 3L, 2L),
y = c(49.5, 62.8, 46.8, 57, 59.8, 58.5, 55.5, 56, 62.8, 55.8, 69.5, 55, 62,
48.8, 45.5, 44.2, 52, 51.5, 49.8, 48.8, 57.2, 59, 53.2, 56)),
class = "data.frame", row.names = c(NA, -24L))
## formula using desired order:
mod1 <- lm(y ~ x1 + x2 + x1:x2 + x3 + x1:x3 + x2:x3 + x1:x2:x3, data=df)
## standard formula:
mod2 <- lm(y ~ x1*x2*x3, data=df)
## same order in anova output:
anova(mod1)
anova(mod2)
## test to show coefficient order affects outputs:
## (but can only change main effects around)
anova(mod2 <- lm(y ~ x1*x2*x3, data=df))
anova(mod3 <- lm(y ~ x1*x3*x2, data=df))
1
corn_bunting
16 जून 2021, 20:15
1 उत्तर
सबसे बढ़िया उत्तर
पता चलता है कि यह एक terms
ऑब्जेक्ट का उपयोग करना संभव है:
mod_terms<-terms(y ~ x1 + x2 + x1:x2 + x3 + x1:x3 + x2:x3 + x1:x2:x3, keep.order=T)
mod3 <- lm(mod_terms, data=df)
anova(mod3)
0
corn_bunting
22 जून 2021, 11:05
anova(mod)
के लिए मायने रखता है। क्षमा करें, मैंने केवल सुविधा के लिए एनपीके डेटा रखा क्योंकि मुझे लगा कि मुझे केवल वाक्यविन्यास की आवश्यकता है, लेकिन यदि आवश्यक हो तो असंतुलित उदाहरण बनाने का प्रयास कर सकते हैं?