2015-06-20 171 views
0

我想在我的模型中擬合正交多項式。 截至目前,我第一次使用這樣的事情越來越正交多項式: contr.poly(11)在模型中擬合正交多項式

我然後創建一個新的變量的線性,二次,等等,我可以再包括在模型: lm(y〜x + p + p_linear,data = d,...)

有沒有更快的方法來擬合公式中的正交多項式?

一個例子是: LM(Y〜X + P + I((對 - 平均值(P)/ SQRT(440))

我想單獨適應每個正交多項式項(線性第一,然後線性+二次等)

TIA

更新:

data(mtcars) 
mtcars$carb <- factor(mtcars$carb) 
contrasts(mtcars$carb) <- contr.poly(n=levels(mtcars$carb)) 
contrasts(mtcars$carb) 

mt.mod <- lm(mpg ~ carb, data=mtcars) 
summary(mt.mod) 

如何可以配合在正交多項式一步工序;第一carb.L,然後carb.L +汽車b.Q,然後是carb.L + carb.Q + carb.C

+0

我不明白你的問題。也許'help(「poly」)'會對你有用嗎? – Roland

+0

我已經用一個例子更新了我的問題。因此,我設置了正交多項式的對比度,然後將其擬合到模型中。我正在逐步適應術語的艱難步驟是爲線性項,二次方程項和立方項創建新變量。如果我能截斷這段代碼將會很好。 – user2300643

+0

這不是多項式對比的工作方式。我不明白你希望通過這個練習獲得什麼。 – Roland

回答

1

這使用C函數來增加因子變量的多項式對比度以增加程度。該bquote功能及其助手.()功能被用於取代度值轉換成語言對象,

sapply(1:3, function(degr){ 
       form <- as.formula(bquote(mpg ~ C(factor(carb), poly, .(degr)))); 
       coef(lm(form, data=mtcars))}) 
[[1]] 
       (Intercept) C(factor(carb), poly, 1).L 
        18.01040     -11.13885 

[[2]] 
       (Intercept) C(factor(carb), poly, 2).L 
       18.821460     -8.382298 
C(factor(carb), poly, 2).Q 
        3.777842 

[[3]] 
       (Intercept) C(factor(carb), poly, 3).L 
       18.9100420     -7.9958797 
C(factor(carb), poly, 3).Q C(factor(carb), poly, 3).C 
       4.0995446     0.7565959 

我(重新)發現,這種方法已經閱讀被張貼在2008年Rhelp回以下一些提示由永遠的幫助教授裏普利http://markmail.org/message/jz56m5gztqowa4lp?q=list:org%2Er-project%2Er-help+from:%22David+Winsemius%22+contrasts+poly