gpt4 book ai didi

python - 在 Python 中使用最大似然推导回归系数

转载 作者:行者123 更新时间:2023-12-04 09:14:48 26 4
gpt4 key购买 nike

作为我自己的学习练习,我正在尝试使用 Python 中的 MLE 方法来估计回归参数。
从我收集到的信息来看,对数似然函数归结为最大化以下内容:
enter image description here
所以我需要对截距和斜率进行偏导,将每个设置为零,这应该给我系数。
我一直在尝试使用 sympy 来解决这个问题,如下所示:

from sympy import *
b = Symbol('b')# beta1
a = Symbol('a')# intercept
x = Symbol('x', integer=True)
y = Symbol('y', integer=True)
i = symbols('i', cls=Idx)

x_values = [2,3,2]
y_values = [1,2,3]
n = len(x_values)-1

function = summation((Indexed('y',i) - a+b*Indexed('x',i))**2, (i, 0, n))

partial_intercept = function.diff(a)

print(partial_intercept)
# 6*a - 2*b*x[0] - 2*b*x[1] - 2*b*x[2] - 2*y[0] - 2*y[1] - 2*y[2]

intercept_f = lambdify([x, y], partial_intercept)

inter = solve(intercept_f(x_values, y_values), a)

print(inter)
# [7*b/3 + 2]
我本来期望斜率有一个值,这样“b”变量就消失了。但是,我发现这是不可能的,因为变量 b 仍然存在于我的导数方程中。
有人对我哪里出错有任何建议吗?
谢谢!
编辑:修复了代码块中的错字

最佳答案

表达式 7*b/2 + 2最后告诉你我们要满足a = 7*b/2 + 2 , 这取决于 b 的数量.
你应该解决这两个 ab同时作为一个系统。
在下面的代码中,我找到了 a 的关系。和 b必须同时满足和解决它们。

from sympy import *

b = Symbol('b')# beta1
a = Symbol('a')# intercept
x = Symbol('x', integer=True)
y = Symbol('y', integer=True)
i = symbols('i', cls=Idx)

x_values = [2,3,2]
y_values = [1,2,3]
n = len(x_values)-1

function = summation((Indexed('y',i) - a+b*Indexed('x',i))**2, (i, 0, n))

partial_intercept = function.diff(a)

print(partial_intercept)
# 6*a - 2*b*x[0] - 2*b*x[1] - 2*b*x[2] - 2*y[0] - 2*y[1] - 2*y[2]

intercept_f = lambdify([x, y], partial_intercept)

inter = solve(intercept_f(x_values, y_values), a)

print(inter)
#[7*b/3 + 2]

partial_gradient = function.diff(b)

print(partial_gradient)
# 6*a - 2*b*x[0] - 2*b*x[1] - 2*b*x[2] - 2*y[0] - 2*y[1] - 2*y[2]

intercept_f = lambdify([x, y], partial_gradient)

inter2 = solve(intercept_f(x_values, y_values), b)
print(inter2)

ans = solve([a-inter[0], b-inter2[0]])
print(ans)
以下是输出:
6*a - 2*b*x[0] - 2*b*x[1] - 2*b*x[2] - 2*y[0] - 2*y[1] - 2*y[2]
[7*b/3 + 2]
2*(-a + b*x[0] + y[0])*x[0] + 2*(-a + b*x[1] + y[1])*x[1] + 2*(-a + b*x[2] + y[2])*x[2]
[7*a/17 - 14/17]
{a: 2, b: 0}
a应设置为 2b应设置为 0 .

关于python - 在 Python 中使用最大似然推导回归系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63274255/

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