首页 文章

python中的回归系数计算

提问于
浏览
2

我有一个Dataframe和一个活动的输入文本文件.Dataframe是通过pandas生成的 . 我想用下面的公式找出每个术语的回归系数Y = C1aX1a C1bX1b ... C2aX2a C2bX2b .... C0,

其中Y是活动Cna,残差选择a在位置n的回归系数,X虚拟变量编码(xna = 1或0)对应于位置n处残差选择a的存在与否,以及C0的平均值活动 . 我的数据框看起来很喜欢

2u    2s    4r     4n     4m   7h   7v
0     1     1      0      0     0    1
0     1     0      1      0     0    1
1     0     0      1      0     1    0
1     0     0      0      1     1    0
1     0     1      0      0     1    0

这里1和0分别表示残基的存在和不存在 . 使用MLR(多元线性回归)我如何找出每个残差的回归系数,即2u,2s,4r,4n,4m,7h,7v . C1a表示第1位置的残留物a的回归系数(这里1a为2u,1b为2s,2a为4r ......)X1a表示虚拟值,即0或1对应于1a . 活动文件包含以下数据

6.5
5.9
5.7
6.4
5.2

所以第一个方程看起来像

6.5 = C1a * 0 C1b * 1 C2a * 1 C2b * 0 C2c * 0 C3a * 0 C3b * 1 C0 ......

我可以使用numpy获得回归系数吗? . 请帮助我,所有建议将不胜感激 .

1 回答

  • 0

    A 成为你的数据帧(你可以把它作为一个纯粹而简单的numpy数组 . 如果它是CSV,用_2435619读取它),y是你的活动文件(再次,一个numpy数组),并使用 np.linalg.lstsq

    DF = """0     1     1      0      0     0    1
    0     1     0      1      0     0    1
    1     0     0      1      0     1    0
    1     0     0      0      1     1    0
    1     0     1      0      0     1    0"""
    
    res = """6.5,  5.9,  5.7,  6.4,  5.2"""
    
    A = np.fromstring ( DF, sep=" " ).reshape((5,7))
    y = np.fromstring(res, sep=" ")
    
    (x, res, rango, svals ) = np.linalg.lstsq(A, y )
    
    print x
    # 2.115625,  2.490625,  1.24375 ,  1.19375 ,  2.16875 ,  2.115625, 2.490625
    print np.sum(A.dot(x)**2) # Sum of squared residuals:
    # 177.24750000000003
    print A.dot(x) # Print predicition
    # 6.225,  6.175,  5.425,  6.4  ,  5.475
    

相关问题