2016-03-22 17 views
0

'daki AsIs nesnesine tepki vermiyor Formülde geçirilen değişkenler, değiştirilecek şekilde, yani log dönüşümünde veya n-th gücüne giren ?AsIs işleciyle çalıştırmaya çalışıyorum ama model.frame Rmodel.frame işlevi, R

bu ?AsIs operatör üzerinde tepki değil gibi görünüyor
> 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 

herkes I(mspike)^2 için modifiye değişkenleri ayıklamak için nasıl biliyor mu?

cevap

2

I() fonksiyon formülü dilinde özel bir anlama sahip operatörler "kaçış" R'ın formülü dilinde kullanılır. Dolayısıyla, modelinize bir değişkenin karesini dahil etmek için terimi I(mspike^2) olarak belirtmeniz gerekir. Sonra da modeli çerçevesinde gösterir:

I(mspike)^2 

kullanımı: Yerine

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

Teşekkürler ... Benim hatam :) –

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

Eğer isimlerini bilmiyorum Assumming? –

+0

Formülden çıkarmalısınız. –