在python中找到最大r值** 2

时间:2015-08-31 13:16:01

标签: python numpy linear-regression rvalue

我有一个(x,y)数据集,我想为每10个元素计算r_value**2(所以在元素0和9之间,1到10之间,......,在n-10之间)和n)。

理想情况下,代码应该在列表中提供r_value**2_max并保存所有r - 值。我做了一个循环,但不知道如何告诉stats.linregresstest_itest_i+10之间查看并将所有r-values**2保存在列表中。

到目前为止,我有这个:

import matplotlib.pyplot as plt
from scipy import stats
import numpy as np
import csv


path = '/storage/.../01_python_in/'

test = np.loadtxt(path + 'sample_data.txt', skiprows=0)

test_min = 0
test_max = len(test)

for test_i in range(test_min, test_max-10):
    slope, intercept, r_value, p_value, std_err = stats.linregress(test[:, 0], test[:, 1])
    print 'i:', test_i, 'r**2:', r_value**2

1 个答案:

答案 0 :(得分:0)

手动实现此方法的方法是将数组的第一维从test_i切割为test_i + 10,如下所示:

linregress(test[test_i:test_i+window, 0], test[test_i:test_i+window, 1])

实际上,您不必拆分x的{​​{1}}和y部分:

linregress

您还可以通过在循环中构建列表来保存linregress(test[test_i:test_i+window]) 。以及上面的内容如下所示:

r_values

这对于列表理解来说实际上很简单:

window = 10
r_values = []
for test_i in range(len(test)-window):
    slope, intercept, r_value, p_value, std_err = \
            stats.linregress(test[test_i:test_i + window])
    r_values.append(r_value)
    print 'i:', test_i, 'r**2:', r_value**2

你可以通过以下方式获得正方形:

r_values = [stats.linregress(test[i:i+w]).rvalue for i in range(len(test)-w)]

最大r_values = np.asarray(r_values) r_values2 = r_values**2 与:

i