W formułach R, dlaczego muszę używać funkcji I () na warunkach mocy, takich jak y ~ I(x^3)

Staram się skupić na używaniu operatora tyldy i powiązanych z nim funkcji. Moje pierwsze pytanie brzmi: dlaczego I() Należy używać do określania operatorów arytmetycznych? Na przykład te 2 wykresy generują różne wyniki (pierwszy ma prostą linię, a drugi oczekiwaną krzywą)

x <- c(1:100)
y <- seq(0.1,10,0.1)

plot(y~x^3)
plot(y~I(x^3))

Ponadto oba poniższe wykresy również generują oczekiwany wynik

plot(x^3, y)
plot(I(x^3), y)
Moje drugie pytanie brzmi: być może przykłady, których używam, są zbyt proste, ale nie rozumiem, gdzie {[3] } powinno być używane.
Author: smci, 2011-11-08

1 answers

Problem polega na tym, jak formuły są interpretowane. W formule tylda oddziela lewą stronę od prawej. We wzorach operator ^ służy do konstruowania oddziaływań tak, aby x = x^2 = x^3 zamiast być może oczekiwanej potęgi matematycznej. Jeśli wpisałbyś (x+y)^2, interpreter R stworzyłby (dla własnego dobrego użytku wewnętrznego), nie matematyczne: x^2 +2xy +y^2, ale raczej symboliczne: x + y +x:y, gdzie x:y jest terminem interakcji.

?formula

The I() funkcja Konwertuje argument na "as.is", czyli czego oczekujesz. Tak więc I (x^2) zwróci wektor wartości podniesiony do drugiej potęgi.

To ~ powinno być postrzegane jako wyrażenie "jest dystrybuowane jako "lub" jest zależne od", gdy jest postrzegane w funkcjach regresji. Implikuje termin błędu w opisach modeli, który zazwyczaj będzie oznaczany jako " (Intercept)", a kontekst funkcji i argumenty mogą dodatkowo określać funkcję łącza, taką jak log () lub logit().

W funkcja plot () - funkcja Ting w zasadzie odwraca zwykłą ( x, y ) kolejność argumentów, którą zwykle przyjmuje funkcja plot. To był spisek.metoda formuł napisana tak, aby wzory mogły być używane jako bardziej "matematyczny" sposób komunikowania się z R. W graphics::plot.formula, curve, funkcje' kraty 'i' ggplot' regulują sposób wyświetlania i "facetowania" wielu czynników lub wektorów numerycznych.

Dowiedziałem się później, że ~ jest w rzeczywistości infiksem (lub prefiksem) prymitywną funkcją, która tworzy R 'call', do którego można uzyskać dostęp za pomocą operatorów ekstrakcji list. Wszystko to jest ukryte przed typowym użytkownikiem, ale może to być obiekt używany przez bardziej zaawansowanych autorów funkcji.

Przeciążenie operatora " + " jest omówione w komentarzach poniżej, a także odbywa się w pakietach kreślarskich: ggplot2 i gridExtra, gdzie jest to rozdzielanie funkcji, które dostarczają wyniki obiektu, więc działa i jako operator przejścia i warstwy. Funkcje agregacji, które mają metodę formula_1 "+"jako operator" układu " i grupowania.

 41
Author: 42-,
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
2014-11-23 16:50:21