2

Dataframe とアクティビティの入力テキスト ファイルがあります。Dataframe は pandas 経由で生成されます。次の式 Y=C1aX1a+C1bX1b+...+C2aX2a+C2bX2b+....C0 を使用して、各項の回帰係数を調べたいと思います。

ここで、Y は活性 Cna 位置 n での残基選択 a の回帰係数、X は位置 n での残基選択 a の有無に対応するダミー変数コーディング (xna = 1 または 0)、および 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 はダミー値、つまり 1a に対応する 0 または 1 を表します。アクティビティ ファイルには次のデータが含まれます

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 …</p>

numpy を使用して回帰係数を取得できますか? 助けてください。すべての提案を歓迎します。

4

1 に答える 1

0

をデータフレーム (純粋で単純なnumpyA配列として取得できます。CSVnp.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
于 2013-02-27T17:45:49.547 に答える