krótkie wywołanie formuły dla wielu zmiennych podczas budowania modelu [duplikat]

To pytanie ma już odpowiedź tutaj:

Próbuję zbudować model regresji z lm (...). Mój dataset ma wiele funkcji (>50). Nie chcę pisać kodu jako lm(output~feature1+feature2+feature3+...+feature70). Zastanawiałem się, jaki jest krótki zapis ręki, aby napisać ten kod.

 28
Author: landroni, 2011-04-25

2 answers

Możesz użyć . zgodnie z opisem na stronie pomocy dla formula. . oznacza "wszystkie kolumny nie będące inaczej we wzorze".

lm(output ~ ., data = myData).

Alternatywnie skonstruuj formułę ręcznie za pomocą paste. Ten przykład pochodzi ze strony pomocy as.formula():

xnam <- paste("x", 1:25, sep="")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))

Można następnie wstawić ten obiekt do funkcji regresji: lm(fmla, data = myData).

 50
Author: Chase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-25 03:31:18

Można też spróbować takich rzeczy jak:

lm(output ~ myData[,2:71], data=myData)

Zakładając, że wyjściem jest pierwsza kolumna feature1: feature70 to kolejne 70 kolumn.

Lub

features <- paste("feature",1:70, sep="")
lm(output ~ myData[,features], data=myData)

Jest prawdopodobnie mądrzejszy, ponieważ nie ma znaczenia, gdzie wśród Twoich danych znajdują się kolumny.

Może powodować problemy, jeśli istnieje row 's usunięte Dla NA' s chociaż...

 6
Author: nzcoops,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-25 09:39:20