使用对数似然法进行线性回归估计斜率和截距

时间:2018-11-27 15:21:30

标签: python-3.x linear-regression log-likelihood

我将y设为(1,10),并将y预测为(1,10),而且我还有用于获得y预测的斜率和截距值。我在对数似然实现线性回归时感到困惑。我已经看到很多博客文章,但是没有一个工作(当然我做错了)。这是我制作的对数似然函数,它通过给定的斜率(a)和截距(b)告诉y预测的logL:-

import math

def loglik(a,b):
    "prob of y, given values of a and b"
    loglike=[]
    for i in range(len(x)):    #x has features
        predicted=a*x[i]+b     #doing prediction using given a and b
        real=y[i]              #actual label
        l=math.log(predicted)/math.log(real)    #not sure that it is right
        loglike.append(l)
    loglike=np.array(loglike)
    result = np.prod(loglike)
    return result

然后我必须调用此函数,创建结果数组并创建彩色网格,这就是我的操作方式:-

# a has slope and b has intercept of the fitted model
arange =[a-0.5,a-0.4,a-0.3,a-0.2,a-0.1,a,a+0.1,a+0.2,a+0.3,a+0.4]      #(a-0.5,a+0.4) 
brange = [b,b-4,b-3,b-2,b-1,b,b+1,b+2,b+3,b+4]                          #(b-5,b+4)

ll=[]
for i in range(10):
    sublist=[]
    for j in range(10):
        sublist.append(loglik(arange[i],brange[j]))
    ll.append(np.array(sublist))

arange=np.array(arange)
brange=np.array(brange)
ll=np.array(ll)

请告诉我我在做什么错,我已经尝试实现对数似然的公式,结果非常奇怪,这就是我知道我做错了的事情。之后,我必须通过最大化对数似然来选择a和b值,并进行梯度上升以实现回归模型。任何帮助将不胜感激。

0 个答案:

没有答案