需要帮助使用 log() 函数对数据建模

Need help modeling data with a log() function

我有一些数据 Excel 非常适合对数趋势。我想将相同的数据传递给 R,让它告诉我系数和截距。数据应该以什么形式存在?我应该调用什么函数来计算系数?最终,我想这样做数千次,这样我就可以预测未来。

传递 Excel 这些值生成此趋势线函数:y = -0.099ln(x) + 0.7521

数据:

y <- c(0.7521, 0.683478429, 0.643337383, 0.614856858, 0.592765647, 0.574715813, 
       0.559454895, 0.546235287, 0.534574767, 0.524144076, 0.514708368)

就上下文而言,数据点表示在给定日期保留的我们用户群的百分比。

该问题省略了 x 的值,但向后计算似乎您使用的是 1、2、3,...所以请尝试以下操作:

x <- 1:11
y <- c(0.7521, 0.683478429, 0.643337383, 0.614856858, 0.592765647, 
     0.574715813, 0.559454895, 0.546235287, 0.534574767, 0.524144076, 
     0.514708368)
fm <- lm(y ~ log(x))

给予:

> coef(fm)
(Intercept)      log(x) 
     0.7521     -0.0990 

plot(y ~ x, log = "x")
lines(fitted(fm) ~ x, col = "red")

您可以通过以下方式获得相同的结果:

y <- c(0.7521, 0.683478429, 0.643337383, 0.614856858, 0.592765647, 0.574715813, 0.559454895, 0.546235287, 0.534574767, 0.524144076, 0.514708368)
t <- seq(along=y)
> summary(lm(y~log(t)))

Call:
lm(formula = y ~ log(t))

Residuals:
       Min         1Q     Median         3Q        Max 
-3.894e-10 -2.288e-10 -2.891e-11  1.620e-10  4.609e-10 

Coefficients:
              Estimate Std. Error    t value Pr(>|t|)    
(Intercept)  7.521e-01  2.198e-10 3421942411   <2e-16 ***
log(t)      -9.900e-02  1.261e-10 -784892428   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.972e-10 on 9 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:      1 
F-statistic: 6.161e+17 on 1 and 9 DF,  p-value: < 2.2e-16

对于大型项目,我建议将数据封装到数据框中,例如

df <- data.frame(y, t)
lm(formula = y ~ log(t), data=df)