我有一个数据框和一个活动的输入文本文件。数据框是通过熊猫生成的。我想使用以下公式找出每个项的回归系数
Y = C1aX1a + C1bX1b + ... + C2aX2a + C2bX2b + .... C0,

其中Y是活度Cna,是n位残基选择a的回归系数,X是对应于n位残基选择a存在或不存在的虚拟变量编码(xna = 1或0),C0是n的平均值活动。
我的数据框看起来像

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表示残基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获取回归系数吗。请帮帮我,所有建议将不胜感激。

最佳答案

假设A是您的数据帧(您可以将其作为纯简单的numpy数组获得。如果是CSV,请使用np.loadtxt读取它),而y是您的活动文件(同样是一个numpy数组),并使用

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

关于python - python中的回归系数计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15105707/

10-12 18:02
查看更多