मेरे पास एक रैखिक मॉडल है और यह महत्वपूर्ण है कि शर्तों को एक विशिष्ट क्रम में दर्ज किया गया है क्योंकि मैं एक प्रकार 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
संभवतः प्रासंगिक: stats.stackexchange.com/questions/13241/… और stats.stackexchange.com/questions/501241/…
 – 
MrFlick
16 जून 2021, 20:21
क्या आप वह कोड दिखा सकते हैं जो आप चला रहे हैं जो एक निश्चित गुणांक क्रम पर निर्भर करता है?
 – 
MrFlick
16 जून 2021, 20:22
1
धन्यवाद @MrFlick - उदाहरण के विपरीत, मेरा डिज़ाइन असंतुलित है और विभिन्न स्तरों के कारकों में अलग-अलग संख्या में अवलोकन हैं। तो उन पदों के अनुसार, (मुझे लगता है) आदेश anova(mod) के लिए मायने रखता है। क्षमा करें, मैंने केवल सुविधा के लिए एनपीके डेटा रखा क्योंकि मुझे लगा कि मुझे केवल वाक्यविन्यास की आवश्यकता है, लेकिन यदि आवश्यक हो तो असंतुलित उदाहरण बनाने का प्रयास कर सकते हैं?
 – 
corn_bunting
16 जून 2021, 20:30
ठीक है मैंने असंतुलित उदाहरण को खराब कर दिया :-)
 – 
corn_bunting
16 जून 2021, 20:45

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