gpt4 book ai didi

python - 如何重新创建一个在 Python 中调用 TREND() 的 Excel 公式?

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:53 25 4
gpt4 key购买 nike

我想在 Python 中重新创建 Excel 的趋势函数,并找到了 C# 答案 ( How do I recreate an Excel formula which calls TREND() in C#? )。使用它,我在 Python 中重新创建。以为我会发帖以防它对其他人有用。

最佳答案

Python 实现:

def LeastSquaresValueAtX(points, knownX, xBar, x):
'''
Gets the value at a given x using the line of best fit
(least square method) to determine the equation
'''
slope = SlopeOfPoints(points, knownX, xBar)
yIntercept = YInterceptOfPoints(points, xBar, slope)
return (slope * x) + yIntercept

def SlopeOfPoints(points, knownX, xBar):
'''
Gets the slope for a set of points using the formula:
m=sum(x-avg(x)(y-avg(y))/sum(x-avg(x))**2
'''
yBar=dividend=divisor=0.0
for i in points:
yBar=yBar+i
yBar=yBar/5
for j in points:
kx = knownX.pop()
dividend+=((kx-xBar)*(j-yBar))
divisor+=((kx-xBar)**2)
return dividend / divisor

def YInterceptOfPoints(points, xBar, slope):
'''
Gets the y-intercept for a set of points using the formula:
b-avg(y)-m(avg(x))
'''
yBar =0.0
for i in points:
yBar=yBar+i
yBar=yBar/5
return yBar - (slope * xBar)

def test(knownX, t):
if t==1: return LeastSquaresValueAtX([4,13,10,22,20],[2011,2010,2009,2008,2007],2009,2012)
if t==2: return LeastSquaresValueAtX([7,20,26,29,23],knownX, 2009,2012)
if t==3: return LeastSquaresValueAtX([6,5,4,3,7], knownX, 2009,2012)


print test([2011,2010,2009,2008,2007], 1)##26.1
print test([2011,2010,2009,2008,2007], 2)##33.3
print test([2011,2010,2009,2008,2007], 3)##5.0

关于python - 如何重新创建一个在 Python 中调用 TREND() 的 Excel 公式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com