微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Ruby 拟合幂律

如何解决使用 Ruby 拟合幂律

我有这些数据,需要像在 Excel 中那样执行“幂律曲线拟合”。

我尝试过使用 Ruby/GSl,但只有“指数拟合”。您知道适合功率曲线的库或其他东西吗?

文档:https://blackwinter.github.io/rb-gsl/rdoc/fit_rdoc.html#label-Exponential+fitting

# Fitting
a2,b2,= Fit.linear(x,Sf::log(y))
x2 = Vector.linspace(0,5,20)
A = Sf::exp(a2)
printf("Expect: a = %f,b = %f\n",a,b)
printf("Result: a = %f,A,b2)
graph([x,y],[x2,A*Sf::exp(b2*x2)],"-C -g 3 -S 4")

enter image description here

解决方法

我用这个解决了

 x = [  [1,2,3,4],[1,1,1]  ]
 y = [3,5,7,9]
 
 # Y = Cx^b
 # Log10 Y = Log C + b * Log X

   def regression_coefficients y,x
        y = Matrix.column_vector y.map { |i| i.to_f }
        x = Matrix.columns x.map { |xi| xi.map { |i| i.to_f }}
           
        (x.t * x).inverse * x.t * y
    end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。