如何摆脱R中的多元回归错误?

时间:2013-10-23 14:45:18

标签: r regression

我使用多元回归计算回归系数的具体方程式:

   w=c(1,5,4,5,4,8,7,9,2,4,5,7)
   g=c(1,5,2,5,4,8,7,9,3,5,6,6)
   k=c(1,5,2,5,4,8,7,9,2,4,5,7)
   m=c(1,5,2,5,4,9,8,10,3,5,6,8)
                     #w=a+bg+b1k+b2m : simple equation
  model1=lm(w~g+k+m)### worked fine
                 #w=a+b(log(1-g/m))+b1k+b2m  :my real equation
  model2=lm(w~(log(1-k/m))+k+m)

错误:

   Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  NA/NaN/Inf in 'x'

3 个答案:

答案 0 :(得分:4)

我看到的一件事是在x <= 0时将日志重新定义为零。但是,这可能会或可能不会给你带来有意义的结果。

R>log <- function(x) ifelse(x <= 0, 0, base::log(x))
R>  model2=lm(w~(log(1-k/m))+k+m)
R>summary(model2)

Call:
lm(formula = w ~ (log(1 - k/m)) + k + m)

Residuals:
        Min          1Q      Median          3Q         Max 
-0.87052532 -0.08901156 -0.05797844  0.04966100  1.32552690 

Coefficients:
               Estimate Std. Error  t value Pr(>|t|)
(Intercept)   1.0665775  0.5783614  1.84414  0.10239
log(1 - k/m) -1.1304104  1.0425403 -1.08428  0.30983
k             2.8191418  1.5634105  1.80320  0.10902
m            -2.0151940  1.6743261 -1.20359  0.26315

Residual standard error: 0.5756576 on 8 degrees of freedom
Multiple R-squared:  0.9564806, Adjusted R-squared:  0.9401609 
F-statistic: 58.60876 on 3 and 8 DF,  p-value: 8.672263e-06

答案 1 :(得分:3)

这是你的问题:

> log(1-k/m)
 [1]      -Inf      -Inf      -Inf      -Inf      -Inf -2.197225 -2.079442 -2.302585 -1.098612 -1.609438 -1.791759 -2.079442

答案 2 :(得分:1)

去除零值,

在零处找到所有值:

inds <- (1-k) != 0

然后创建新变量或修改当前变量

w <- w[inds]
m <- m[inds]
k <- k[inds]

model2 <- lm(w~(log(1-k/m))+k+m)