我使用多元回归计算回归系数的具体方程式:
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'
答案 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)