Czy istnieje prosty sposób w R na utworzenie regresji liniowej na modelu ze 100 parametrami w R? Powiedzmy, że mamy wektor Y z 10 wartościami i ramkę danych X z 10 kolumnami i 100 wierszami W notacji matematycznej zapisałbym Y = X[[1]] + X[[2]] + ... + X[[100]]
. Jak napisać coś podobnego w składni R.
22
Odpowiedzi:
Spróbuj tego
źródło
y ~ . + .^2
. I tak dalej.y ~ . + .:x1
da ci interakcje każdej zmiennej (opróczx1
) zx1
. I tak dalej; Masz pomysł.Świetne odpowiedzi!
Dodałbym, że domyślnie wywołanie
formula
adata.frame
tworzy formułę addytywną, aby regresować pierwszą kolumnę do pozostałych.Więc w przypadku odpowiedzi @ danas.zuokas możesz to zrobić
który jest poprawnie interpretowany.
źródło
R
operatorów :)Jeśli każdy wiersz jest obserwacją, a każda kolumna jest predyktorem, więc jest wektorem o długości a jest macierzą ( w tym przypadku ), możesz to zrobić za pomocąn X n × p p = 100Y n X n×p p=100
Jeśli istnieją inne kolumny, których nie chcesz uwzględniać jako predyktorów, musisz je usunąć
X
przed użyciem tej sztuczki lub użyć-
w formule modelu, aby je wykluczyć. Na przykład, jeśli chcesz wykluczyć 67. predyktor (który ma odpowiednią nazwęx67
), możesz napisaćPonadto, jeśli chcesz uwzględnić interakcje itp., Musisz dodać je ręcznie jako (na przykład)
lub upewnij się, że są wpisane jako kolumny
X
.źródło
Możesz także użyć kombinacji funkcji
formula
ipaste
.Skonfiguruj dane : wyobraźmy sobie, że mamy ramkę data.frame, która zawiera zmienne predykcyjne
x1
dox100
i naszą zmienną zależnąy
, ale istnieje także zmienna uciążliwaasdfasdf
. Również zmienne predykcyjne są ułożone w takiej kolejności, że nie wszystkie są ciągłe w ramce data.frame.Wyobraź sobie również, że masz ciąg znaków zawierający nazwy zmiennych predykcyjnych. W takim przypadku można to łatwo utworzyć za pomocą
paste
funkcji, ale w innych sytuacjachgrep
lub w celu uzyskania tego ciągu można zastosować inne podejście.Zastosuj podejście : Możemy następnie zbudować formułę w następujący sposób:
collapse
wkładki argumentów+
pomiędzy predyktoramiformula
konwertuje ciąg znaków na obiekt o wzorze klasowym odpowiednim dlalm
funkcji.Mówiąc bardziej ogólnie, używam następującej funkcji dość regularnie, gdy chcę podać zmienne predykcyjne jako wektor nazw zmiennych.
Na przykład,
źródło
do.call
oceny formuły przed wywołaniemlm
.