我有一个数据框和一个活动的输入文本文件。数据框是通过熊猫生成的。我想使用以下公式找出每个项的回归系数
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/