2017-05-24 5 views
3

Ich versuche eine Regressionslinie zu zeichnen, die durch p/(1-p) = -41.828 + 0.9864x modelliert wird, wobei p die Wahrscheinlichkeit eines Ereignisses ist, abhängig von x. Ich muss das nur mit Julia simulieren, so dass der allgemeine Trend klar ist. Ich habe das Modell neu angeordnet, um p = 1/(exp (41.828-0.9864x) +1) zu sein, aber wenn ich dies mit julia plotte, gibt es einen Fehler zurück. Ich habe meinen Code unten und den folgenden Fehler beigefügt. Habe alle möglichen Dinge ausprobiert, um den Fehler zu umgehen, aber ich bin nicht in der Lage, ... Jede Hilfe wäre willkommen! Ich entschuldige mich für etwaige Formatierungsfehler, die ich beim erstmaligen Verwenden dieser Website gemacht habe, aber ich habe versucht, dies so zu tun, wie es gefragt wurde.Plotten Regressionslinie mit inversem Exponenten

using PyPlot , Distributions , StatsBase, DataFrames 
xlin = float(linspace(-50.0,50,1000)); y=1.0/float(exp(41.828-0.9864* 
(float(xlin)))+1.0) 
PyPlot.plot(xlin, y, color="red", linewidth=2.0, linestyle="--") 
title("Regression Line Plot"); 
PyPlot.grid(-25:7:125); 
ylabel("Y"); 
xlabel("X"); 

Dies gibt den Fehler:

MethodError: no method matching /(::Float64, ::Array{Float64,1}) 
Closest candidates are: 
    /(::Float64, ::Float64) at float.jl:246 
    /(::PyCall.PyObject, ::Any) at 
/home/juser/.julia/v0.5/PyCall/src/PyCall.jl:702 
    /(::Real, ::Complex{T<:Real}) at complex.jl:182 
    ... 

Antwort

2

Es hat nichts mit dem plot Befehl zu tun hat. Der Fehler ist in dieser Zeile:

y=1.0/float(exp(41.828-0.9864*(float(xlin)))+1.0) 

Sie müssen ./ statt /, wie Sie versuchen, ein Element weisen Betrieb zu tun. Auch kein Grund, die ganze Zeit float anzurufen. So nur

y = 1.0 ./ exp(41.828 .- 0.9864 .* xlin) .+ 1.0 

sollte es tun. Sie brauchen nicht alle Punkte für die Operationen, bei denen einer der Operanden ein Skalar ist, aber Sie tun es für die erste Division, und es macht IMHO klar, was vor sich geht.

+1

Vielen Dank dafür, sehr klar! Ich hatte alle float-Befehle hinzugefügt, weil ein Fehler für die Verwendung von Ganzzahlen angegeben wurde, aber die elementweise Komponente noch nicht berücksichtigt hatte. Danke noch einmal! – JustAbotRite

+0

Cool :-) Ich denke, du weißt bereits, dass du 'plot (x, vorherzusagen (mein_Modell, x))' in GLM kannst, wenn du 'mein_Modell' hast. –