Нарисуйте результаты нескольких (x, y) -данных в одном и том же графике, данные генерируются с использованием bootstrap for-loop - PullRequest
0 голосов
/ 17 апреля 2020

У меня проблемы с построением всех информационных фреймов в виде графиков рассеяния на одном и том же рисунке. Контекст является методом начальной загрузки, чтобы получить представление о значении ошибки коэффициента корреляции Пирсона, и таким образом генерируются данные в l oop.

Приведенный ниже код дает мне одну диаграмму рассеяния исходный набор данных и один график рассеяния для каждого загруженного набора данных (данные коррелированы, поэтому выборка производится парами). Однако вместо того, чтобы все они были представлены в виде отдельных графиков, я хочу, чтобы они все были на одном рисунке (разных цветов), чтобы сравнить их, добавить среднюю линию регрессии и окончательный коэффициент корреляции Пирсона для исходного и среднего корреля Пирсона. , коэфф. загруженных образцов.

Вкратце: я хочу, чтобы все наборы разбросанных данных были на одном и том же рисунке разных цветов

(Дополнительные добавления: одна линия регрессии и коэффициент корреляции Пирсона для исходного набора данных и один линия регрессии и средний коэффициент корреляции загруженных образцов)

Код:

#Pearson's r correlation bootstrap


import dautil as dl

import pandas as pd

from scipy import stats

from sklearn.utils import check_random_state

import matplotlib.pyplot as plt



df = pd.DataFrame({"A": [18,28,29,32,35,36,37,37,39,40,42,42,46,48,54,56,57,61,61,62,63,65],
 "B":  [9,13,17,15,23,21,24,28,26,30,29,36,38,42,40,48,40,51,54,50,51,57]})



plt.scatter(df.iloc[:,0],df.iloc[:,1]) #original dataframe

plt.show()



stats_corr = stats.pearsonr(df['A'].values, df['B'].values)

print('Correlation={0:.4g}, p-value={1:.4g}'.format(stats_corr[0], stats_corr[1]))



n = len(df.index)

rs = check_random_state(34)

ranges = []



fig, ax = plt.subplots()


for j in range(10):
    
    corrs = []
    
    for i in range(5):
        
        indices = rs.choice(n, size=n)
        
        pairs = df.values
        
        gen_pairs = pairs[indices] #bootstrapped dataframe
        
        #print(gen_pairs)
        
        plt.scatter(gen_pairs.T[0], gen_pairs.T[1], color='red', alpha=0.1)
        
        plt.show()

        

        corrs.append(stats.pearsonr(gen_pairs.T[0], gen_pairs.T[1])[0])
    
    ranges.append(dl.stats.ci(corrs))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...