R - 用lm调整平方根函数

时间:2014-02-17 11:20:03

标签: r nonlinear-functions

我想调整这样的函数:

fit4 = lm(mut ~ ent + score + wt + I(ent^2) + I(score^2) +I(wt^2))

当我summary(fit4)时,我得到了:

Coefficients:                 
                          Estimate   Std. Error t value Pr(>|t|)   
(Intercept)              -1.779381   0.086256 -20.629   <2e-16   
ent                       2.724036   0.072543  37.550   <2e-16   
score                     0.473230   0.009450  50.077   <2e-16   
wt                       -0.464216   0.031141 -14.907   <2e-16
I(ent^2)                 -0.473427   0.018814 -25.164   <2e-16
I(score^2)                0.030187   0.004851   6.222    5e-10
I(wt^2)                   0.043386   0.004609   9.413   <2e-16
---

现在我想获得相同的,但是做上述函数的根平方误差:sqrt(ent + score + wt + I(ent ^ 2)+ I(score ^ 2)+ I(wt ^ 2 )),但是当我简单地添加“sqrt()”时,摘要返回如下内容:

                    Estimate 
(Intercept)          1.066025                                                                                                                    
I(sqrt(ent + score + wt + I(ent^2) + I(score^2) + I(wt^2))) -0.24028    

(对于Std.Error,t-value等也一样)

如何添加“root squared”或“log”并仍然获取函数的每个元素的值?

1 个答案:

答案 0 :(得分:2)

你必须将这个功能全部应用于所有这些功能。 所以

fit4 = lm(mut ~ log(ent) + log(score) + log(wt) + 
                log(I(ent^2)) + log(I(score^2)) +log(I(wt^2)))

将执行所需的

原因:

log(ent + score + wt + I(ent^2) + I(score^2) +I(wt^2))

被解释为单个回归量。 所以对于它来说就像lm(mut~x) x=log(...)而不是

x=log(ent) + ... + log(I(wt^2))