2016-04-28 13 views
1

Also hier ist der Spielplan. Ich versuche, diesen Datensatz (wird ein Strukturobjekt sein) unten, führen Sie ein gekrümmtes Regressionsmodell durch. Dann würde ich gerne die Steigung (d. H. Den ersten Ableitungswert für jedes x) an jedem Punkt nehmen und die Datentabelle mit dieser Steigungsinformation in einer eigenen Spalte speichern.Wie erhalte ich Steigungen auf einem Vorhersagemodell, das eine Kurve ist? Und speichern Sie sie als Tabelle

input.txt:

yval xval 
0.198 0.125 
0.18 0.0625 
0.126 0.03125 
0.078 0.015625 
0.066 0.007813 
0.03 0.0039065 
0.00 0.0 

script.r:

dat <- read.table("input.txt", header=T, sep="\t") 
library(drc) 
library(ggplot2) 

mm <- structure(list(x = dat$xval, y = dat$yval), .Names= c("x","y"), class = "data.frame") 
model.drm <- drm (y ~ x, data = mm, fct = MM.2()) 
mml <- data.frame(x = seq(0, max(mm$x), length.out = 100)) #I actually don't know what length does, and am unsure about this line 
mml$y <- predict(model.drm, newdata = mml) 

ggplot(mm, aes(x = x, y = y)) + 
    theme_bw() + 
    xlab("x lab") + 
    ylab("y lab") + 
    ggtitle("dose response curve") + 
    geom_point(alpha = 0.5) + 
    geom_line(data = mml, aes(x = x, y = y), colour = "blue") 
ggsave("mm.pdf", width = 6, height = 4) 

#Need to pass in vector (list) of x, into the derivative of mml's function. 
#Output will be a list of corresponding slope values for each of those x's. 
#append said slope values to the data frame and save it. 

dev.off() 

Zusammenfassung: Daten nehmen, Regression ausgeführt wird, bei jedem Wert die Steigung nehmen, dann die gleichen Daten mit Steigungen Speichern in separate Spalte. Die Ausgabe wird die gleiche Tabelle sein, aber mit einer neuen dritten Spalte: die Steigung, die jedem x-Wert zugeordnet ist. Ausgang muss wie folgt aussehen:

output.txt:

yval xval slopes 
0.198 0.125 slope1 
0.18 0.0625 slope2 
0.126 0.03125 slope3 
0.078 0.01562 slope4 
0.066 0.00781 slope5 
0.03 0.00396 slope6 
0.00 0.00 slope7 

Das Problem ist nur, wie man „steigen Sie an“ diese Informationen und wie erneut zu speichern es sind Dinge, die ich weiß nicht, wie richtig zu machen. Ich bin nicht vertraut mit, wie R Kalkül für die Gleichung macht. Ich kann die Konstanten der Gleichung aus summary() erhalten, aber ich habe keine Möglichkeit, sie zu verarbeiten.

Ich kann nicht die richtige Kombination von Informationen finden (oder sind es nur die Suchbegriffe, die ich verwende?). Ich entschuldige mich, wenn etwas davon wie ein falscher Pseudocode erscheint, R war ... frustrierend zu lernen, um es gelinde auszudrücken. Hilfe?

R Version 3.2.4 Redhat Linux 4.1.2 Die Daten werden von https://plot.ly/~gwaligroski/15/michaelis-menten-equation -Code angepasst entlehnt https://rpubs.com/RomanL/6752

Antwort

2

ich zuerst diese Linie bringen werde, werden Sie einen Datenrahmen zu schaffen, die eine Variable hat mit einer Länge von 100, der von 0 bis max (mm $ x)

mml <- data.frame(x = seq(0, max(mm$x), length.out = 100)) #I actually don't know what length does, and am unsure about this line

dann Predict gleich beabstandet ist, verwendet, daß data.frame zu entscheiden, welche für Punkte vorherzusagen, so dass, wenn Sie verwenden length.out = 5 es wi ll eine sehr grobe Kurve und Länge sein. out = 1000 wird eine sehr glatte Kurve sein.

Anstatt also zwischen 1 für eine Folge der Vorhersage: max (mm $ x) Sie für Ihre xval vorhersagen wollen, so würde ich

dat$predicted<-predict(model.drm, newdata=dat["xval"]) 

verwenden, die mit einer anderen Spalte zu Ihren dat Datenrahmen hinzufügen werden die vorhergesagten Werte.

hinzufügen

+geom_point(data = dat, aes(x=xval,y=predicted),colour="red") 

zu Ihrem ggplot und sollten Sie rote Punkte auf Kurve an den x Punkte, die Sie wollen sehen.

Hinweis: Ich bin nicht gut in R, deshalb kann ich nicht erklären, warum dat ["xval"] einen 1-variablen Datenrahmen zurückgibt (was Sie brauchen) und dat $ xval gibt einen Vektor zurück, der nicht funktioniert vorhersagen.

+0

Dies ist ein guter Anfang. Aber was ist mit der ersten Ableitung an diesen Punkten?Ich kann die Gleichung nicht leicht aufrufen, und ich bin mir nicht sicher, wie ich auf der Grundlage der geom_line-Kurve in der Lage sein werde, eine erste Ableitung zu erstellen. Die Konstanten für das inverse Polynom, die geom_line steuern, sind zusammenfassend eingebettet – Tom