Skip to main content
 首页 » 编程设计

python之python中的回归系数计算

2025年05月04日15kevingrace

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

其中 Y 是 active Cna 是位置 n 处残基选择 a 的回归系数,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表示残基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 数组),并使用 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