2016-03-22 7 views
0

Ich versuche, Variablen in der Formel in der Art, wie sie übergeben wurden, zu modifizieren, dh mit log Transformation oder mit ?AsIs-Operator, der in der n-ten Macht übernimmt übergeben aber model.frame sieht aus wie auf diesem ?AsIs Operator in R reagierenmodel.frame Funktion reagiert nicht auf AsIs-Objekt in R

> library(survival) 
> formula = Surv(futime, death) ~ mspike + log(mspike) + I(mspike)^2 + I(mspike)^3 
> head(model.frame(formula, data = mgus)) 
    Surv(futime, death) mspike log(mspike) I(mspike) 
1    748  2.0 0.6931472   2 
2    6751  1.3 0.2623643  1.3 
3    277  1.3 0.2623643  1.3 
4    1815  1.8 0.5877867  1.8 
5    2587  1.4 0.3364722  1.4 
6    563  1.8 0.5877867  1.8 

Wer weiß, wie veränderliche Variablen extrahieren für I(mspike)^2?

Antwort

2

Die I() Funktion ist in R Formelsprache zu „entkommen“ Operatoren verwendet, die eine besondere Bedeutung in der Formelsprache hat. Um also das Quadrat einer Variablen in Ihr Modell aufzunehmen, müssen Sie den Begriff I(mspike^2) angeben. Dann zeigt es auch im Modellrahmen bis:

data(iris) 
m1 <- lm(Sepal.Width ~ Sepal.Length + log(Petal.Width) +  I(Petal.Length^2), data = iris) 
head(model.frame(m1)) 
    Sepal.Width Sepal.Length log(Petal.Width) I(Petal.Length^2) 
1   3.5   5.1  -1.6094379    1.96 
2   3.0   4.9  -1.6094379    1.96 
3   3.2   4.7  -1.6094379    1.69 
4   3.1   4.6  -1.6094379    2.25 
5   3.6   5.0  -1.6094379    1.96 
6   3.9   5.4  -0.9162907    2.89 
+0

Danke ... Mein Fehler :) –

-1
(model.frame(formula, data = mgus)$`I(mspike)`)^2 
+0

Assumming Sie nicht die Namen wissen? –

+0

Das sollten Sie aus der Formel extrahieren. –

1

Statt:

I(mspike)^2 

Verwendung:

I(mspike^2) 
Verwandte Themen