python中的回归系数计算

时间:2013-02-27 06:38:18

标签: python numpy pandas linear-regression

我有一个Dataframe和一个activity.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 :(得分:0)

A成为您的数据框(您可以将其作为一个纯粹而简单的numpy数组。如果它是CSV,请使用np.loadtxt读取它),并且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
相关问题