तो आज मैंने OLS के लिए एक सूत्र देखा है:

Y ~., Data = D

सूत्र में ~ के बाद बिंदु वास्तव में क्या करता है? क्या यह किसी भी तरह से सभी संयोजनों में प्रत्येक चर को हर दूसरे के साथ गुणा करने का एक तरीका है? आप वह कैसे करेंगें?

E.g. Y ~ X1 + X2 + X3 + X1*X2 + X2*X3 + X1*X3 + X1*X2*X3

क्या इसके लिए कोई शॉर्टकट है?

r
0
user11464108 1 नवम्बर 2019, 19:02

2 जवाब

आप इस तरह से सूत्र का विस्तार कर सकते हैं (बिल्टिन anscombe डेटा सेट का उपयोग करके):

names(anscombe)
## [1] "x1" "x2" "x3" "x4" "y1" "y2" "y3" "y4"

formula(terms(y1 ~., data = anscombe))
## y1 ~ x1 + x2 + x3 + x4 + y2 + y3 + y4

names(coef(lm(y1 ~., data = anscombe)))
## [1] "(Intercept)" "x1"          "x2"          "x3"          "x4"         
## [6] "y2"          "y3"          "y4"        

यदि आप सभी शर्तों को दो-तरफ़ा इंटरैक्शन चाहते हैं तो y ~ .^2 का उपयोग करें

names(coef(lm(y1 ~.^2, data = anscombe)))

देना:

 [1] "(Intercept)" "x1"          "x2"          "x3"          "x4"         
 [6] "y2"          "y3"          "y4"          "x1:x2"       "x1:x3"      
[11] "x1:x4"       "x1:y2"       "x1:y3"       "x1:y4"       "x2:x3"      
[16] "x2:x4"       "x2:y2"       "x2:y3"       "x2:y4"       "x3:x4"      
[21] "x3:y2"       "x3:y3"       "x3:y4"       "x4:y2"       "x4:y3"      
[26] "x4:y4"       "y2:y3"       "y2:y4"       "y3:y4"  
2
G. Grothendieck 1 नवम्बर 2019, 19:12
nm = c("X1", "X2", "X3")
reformulate(unlist(lapply(seq_along(nm), function(i)
    combn(nm, i, function(x) paste(x, collapse = "*")))), "y")
#y ~ X1 + X2 + X3 + X1 * X2 + X1 * X3 + X2 * X3 + X1 * X2 * X3
1
d.b 1 नवम्बर 2019, 19:15