Извлечь значения y из этого графика линии тренда в Python - PullRequest
0 голосов
/ 05 июня 2018

Как некоторые получают значения y из красной линии тренда, сгенерированной из исходного кода ниже?Я не эксперт по математике.

Что касается приведенного ниже кода из Как добавить линию тренда в точках Python Matplotlib (разброс)?

#random inputs for x and y


x = np.random.uniform(low=0.5, high=13.3, size=(50,))
y = np.random.uniform(low=0.5, high=13.3, size=(50,))

# plot the data itself
pylab.plot(x,y,'o')

# calc the trendline
z = numpy.polyfit(x, y, 1)
p = numpy.poly1d(z)
pylab.plot(x,p(x),"r--")
# the line equation:
print "y=%.6fx+(%.6f)"%(z[0],z[1])

Когда я печатаюзначение p(x), ожидаемые значения y для построения красной линии тренда.

[7.25072088 7.74580974 7.707636   7.57456601 7.72771792 7.36682509
 7.36216195 7.45937086 7.47592622 7.76663313 7.71256734 7.68601844
 7.34777885 7.2552914  7.28729136 7.4828444  7.25690455 7.47861776
 7.48472596 7.63791435 7.79364877 7.79382845 7.45020348 7.5488981
 7.29478413 7.27191799 7.47409563 7.26783249 7.49132469 7.2515923
 7.40558937 7.55062512 7.46004735 7.4094514  7.69985713 7.23891764
 7.50790404 7.38789488 7.23477781 7.59598148 7.49460819 7.62039958
 7.67580303 7.40553616 7.61933389 7.60038837 7.76048006 7.41307834
 7.28136679 7.5063726 ]

Если это восходящий тренд, должны ли элементы массива увеличиваться от начала до конца?Как видите, предыдущие значения элемента выше текущих.Не должен ли быть устойчивый уклон, который, где следующий элемент ВСЕГДА будет выше, чем предыдущий элемент?Позвони мне в замешательстве.

1 Ответ

0 голосов
/ 05 июня 2018

Разве не должно быть постоянного наклона, где следующий элемент ВСЕГДА будет выше, чем предыдущий элемент?

Да, подгонка - прямая линия, поэтому более высокие значенияx всегда связаны с более высокими (или более низкими, в зависимости от наклона) значениями p(x).

В вашем случае происходит то, что x не сортируется, и поэтому p(x) isn 'Сортировка также возможна.

In [18]: x
Out[18]:
array([  9.95692606,   5.25372625,   9.84277793,   9.75691888,
         3.53691402,   7.47732635,  13.26638669,  10.39011192,
        11.86590794,  10.38592445,   0.5328471 ,   7.69932299,
        ...

Как видите, мы не начинаем слева и движемся вправо.Сначала мы смотрим на какую-то точку посередине, затем много прыгаем влево, затем прыгаем вправо, затем немного смещаемся влево и т. Д. Соответствующие значения p(x) также не будут монотонными.

Если вы отсортируете точки слева направо, вы увидите, что они действительно всегда движутся в одном и том же вертикальном направлении:

In [20]: sorted(zip(x, p(x)))
Out[20]:
[(0.53284710066507301, 5.2982022878459842),
 (0.90494271648495472, 5.3490731826338447),
 (1.2383322417505211, 5.3946523906172272),
 (1.2542322226117251, 5.3968261497778585),
 (1.3243912128123114, 5.4064179064586044),
 (1.4506628234207115, 5.4236810763129437),
 (2.0368566039434102, 5.503822311163459),
 (2.8349103207704576, 5.6129278876274968),
 (3.0174136939304748, 5.637878759123244),
 (3.5369140229038196, 5.7089020269444219),
 (4.932863919562303, 5.8997487268324766),
 (4.943993127936622, 5.9012702518497351),
 (4.9500689452818589, 5.9021009046491208),
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...