Я новичок в регрессионной игре и надеюсь построить функционально произвольную линию нелинейной регрессии (плюс доверительные интервалы) для подмножества данных, которое удовлетворяет определенному условию (т.е. со средним репликационным значением, превышающим порог, см. ниже).
создается для независимой переменной x
для 20 различных значений: x=(20-np.arange(20))**2
, при этом rep_num=10
реплицируется для каждого условия. Данные показывают сильную нелинейность в x
и выглядят следующим образом:
import numpy as np
mu = [.40, .38, .39, .35, .37, .33, .34, .28, .11, .24,
.03, .07, .01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
data = np.zeros((20, rep_num))
for i in range(13):
data[i] = np.clip(np.random.normal(loc=mu[i], scale=0.1, size=rep_num), 0., 1.)
Я могу сделать график рассеяния данных; репликационные средства показаны красными точками:
import matplotlib.pyplot as plt
plt.scatter(np.log10(np.tile(x[:,None], rep_num)), data,
facecolors='none', edgecolors='k', alpha=0.25)
plt.plot(np.log10(x), data.mean(1), 'ro', alpha=0.8)
plt.plot(np.log10(x), np.repeat(0., 20), 'k--')
plt.xlim(-0.02, np.max(np.log10(x)) + 0.02)
plt.ylim(-0.01, 0.7)
Моя цель - построить линию регрессии только для тех данных, которые имеют репликацию в среднем > 0,02. Кроме того, я хотел бы добавить 95% -ный доверительный интервал (черные пунктирные линии) вокруг регрессии, а также интервал предсказания 95% (синие пунктирные линии) - в идеале интервал прогнозирования также может быть окрашен в прозрачный синий фон.
Заключительный сюжет (без синего фона внутри интервала предсказания) будет выглядеть примерно так:
Как мне это сделать? Мой онлайн-поиск дал очень разные частичные подходы, используя морские, скудные и статистические модели. Приложения некоторых из этих функций шаблонов, похоже, не работали вместе с существующим графиком рассеяния matplotlib.