Seite 3 von 4

Re: Logarithmische Regression

Verfasst: Fr Mär 29, 2019 2:07 pm
von jogo

Code: Alles auswählen

Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471)
CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)

fm <- lm(CT_Wert_y ~ log(Konz_x))
summary (fm)
fm
plot(Konz_x, CT_Wert_y, xlim = c(300, 50000000), ylim = c(0, 40), log="x", xlab = "Copies/ml patient sample", 
     ylab = "Ct-Values", main ="Linear regression CAP Kit", pch = 19)
# abline(fm, col = "red",lwd=2, untf = FALSE)

b <- coef(fm); b0 <- b[1]; b1 <- b[2]
mycurve <- function(x) b0 + b1*log(x)

curve(mycurve, 300, 50000000, add=TRUE, col="green")
oder

Code: Alles auswählen

b <- coef(fm); b0 <- b[1]; b1 <- b[2]
curve(b0 + b1*log(x), 300, 50000000, add=TRUE, col="blue")
# oder
curve(cbind(1, log(x)) %*% coef(fm), 300, 50000000, add=TRUE, col="yellow")
# oder
curve(tcrossprod(coef(fm), cbind(1, log(x))), 300, 50000000, add=TRUE, col="brown")
Manchmal reicht aber auch:

Code: Alles auswählen

lines(Konz_x, fitted(fm), col="orange")
Sorry aber ich bin irgendwie noch nicht richtig warm geworden mit R. :(
Das Problem, dass man sich gelegentlich verzappelt, wenn man eine Regression auf transformierten Daten rechnet, ist unabhängig von der verwendeten Software.

Gruß, Jörg

Re: Logarithmische Regression

Verfasst: Fr Mär 29, 2019 2:29 pm
von bigben
[Klugscheißermodus]Ich trag jetzt mal im Klugscheißermodus inhaltlich nichts bei, aber für die Optik: Ich glaube, ich würde an Jörgs Grafik noch sowas in der Art anhängen, um visuell nochmal deutlicher zu machen, dass die x-Achse logarithmisch ist. Einfach nach Jörgs Code

Code: Alles auswählen

axis(1, at=c(1e3, 1e4, 1e5, 1e6, 1e7,1e8), 
             labels=FALSE, lwd.ticks=2)
axis(1, at=c(seq(1e2, 1e3, 1e2), 
             seq(1e3, 1e4, 1e3),
             seq(1e4, 1e5, 1e4),
             seq(1e5, 1e6, 1e5),
             seq(1e6, 1e7, 1e6),
             seq(1e7, 1e8, 1e7)
             ), labels = FALSE)
[/Klugscheißermodus]

LG,
Bernhard

Re: Logarithmische Regression

Verfasst: Fr Mär 29, 2019 10:13 pm
von Werekorden
Hallo Jörg, Hallo Bernhard,

Vielen Dank Ihr seid großartig :P Ehrlich, danke auch fürs Klugscheissen, so finde ich den Plot noch besser.

Jetzt schaue ich mir mal an wie Ihr das gemacht habt.

Eines ist klar, ich lerne R immer mehr zu schätzen. Ich wünsche Euch allen ein schönes Wochenende und wer aus Stuttgart und Umgebung kommt, vielleicht kann man sich ja mal treffen zum gemeinsamen Austausch.

VG
Andreas

Re: Logarithmische Regression

Verfasst: Fr Mär 29, 2019 10:34 pm
von jogo
Hallo Andreas,
Werekorden hat geschrieben: Fr Mär 29, 2019 10:13 pm Hallo Jörg, Hallo Bernhard,

Vielen Dank Ihr seid großartig :P
danke.
Jetzt schaue ich mir mal an wie Ihr das gemacht habt.
Eines ist klar, ich lerne R immer mehr zu schätzen.
prima 8-)
Ich wünsche Euch allen ein schönes Wochenende und wer aus Stuttgart und Umgebung kommt, vielleicht kann man sich ja mal treffen zum gemeinsamen Austausch.
gerne, aber das ist dann doch etwas weit weg (St...umsdorf kann ich noch gut mit dem Fahrrad erreichen :lol: )

Gruß, Jörg
p.s.: Und Du kannst mir glauben, bei meinen Anfängen in R habe ich genauso rumgestümpert. :?

Re: Logarithmische Regression

Verfasst: Mo Apr 01, 2019 7:33 pm
von Werekorden
Hi,

Ich habe mich jetzt ein wenig mit dem Code beschäftigt und versucht den Code in ggplot2 zu übernehmen und den Plot aufzuhübschen.

Code: Alles auswählen

library(Rcpp)
library(rlang)
library(gcookbook)
library(ggplot2)
library(hrbrthemes)
library(magick)
library(plyr)
library(dplyr)
library(MASS)
library(scales)

Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471) CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)

data.frame(Konz_x, CT_Wert_y)
p <- data.frame(Konz_x, CT_Wert_y)
p
point <- ggplot(p, aes(x=Konz_x, y=CT_Wert_y)) 
point + geom_point() + annotation_logticks(sides = "b")  + scale_x_log10() + stat_smooth(method=lm, se=0.99, colour="red") +
  labs(title = 'Linearity Plot of FTD Kit Data',
       subtitle = 'Linearity Plot with Coefficient of Determination',
       x = 'Copies/ml patient sample',
       y = 'Ct-value',
       caption = 'NAME HIER / ??@??.com') + 
  theme_ipsum() + 
  theme(plot.title = element_text(color = "#EC0108"), plot.caption = element_text(color = "#EC0108", face = 'bold'))
logo <-image_read("/Users/NAME/Pictures/Dateiname.png")
grid::grid.raster(logo, x = 0.07, y = 0.01, just = c('left', 'bottom'), width = unit(0.5, 'inches'))

Der Code funktioniert hervorragend.

ALLERDINGS:
Wenn ich einen pdf export mache fehlt die gesamte Beschriftung. Ich denke es liegt daran, dass ein FONT fehlt. Wenn ich ein Foto exportiere, svg, png oder sonstiges geht es tadelos. Ich bekomme allerdings keine Fehlermeldung beim pdf export.

Hat jemand eine Idee.

Re: Logarithmische Regression

Verfasst: Mo Apr 01, 2019 8:52 pm
von bigben
Wie machst Du den pdf-Export? mit ggsave() oder mit RStudio??

Nötigenfalls könnte embed_fonts() aus dem package extrafonts ein Ansatz sein: https://github.com/wch/extrafont

LG,
Bernhard

Re: Logarithmische Regression

Verfasst: Mo Apr 01, 2019 9:10 pm
von EDi

Code: Alles auswählen

  theme_ipsum
Stammt aus https://github.com/hrbrmstr/hrbrthemes, welches nicht-standart ist besondere fonts nutzt.

Das hast du dir durchgelesen? Wie speicherst du den plot?

Re: Logarithmische Regression

Verfasst: Mo Apr 01, 2019 11:39 pm
von Werekorden
Hallo,

Ich habe für das Erstellen der pdfs RStudio genutzt und genau nicht das Cairo device.
Wenn ich das Cairo device nutze wird es exportiert.


@EDI danke für den Lesetip:
Ich habe alles installiert aber wenn ich

Code: Alles auswählen

extrafont::loadfonts()
ausführe kommen 50 oder mehr warnings.
Interessanterweise beim export in eine eps Datei wird die Schriftart Helvetica genutzt für die Texte.

Hier einige der Warnings:
Fontconfig warning: line 5: unknown element "its:rules"
Fontconfig warning: line 6: unknown element "its:translateRule"
Fontconfig error: line 6: invalid attribute 'translate'
Fontconfig error: line 6: invalid attribute 'selector'
Fontconfig error: line 7: invalid attribute 'xmlns:its'
Fontconfig error: line 7: invalid attribute 'version'
Fontconfig warning: line 9: unknown element "description"
Fontconfig warning: "/Users/andreas/Library/R/3.5/library/magick/etc/fonts/conf.d/10-hinting-slight.conf", line 4: unknown element "its:rules"
Ich schau morgen nochmal

Re: Logarithmische Regression

Verfasst: Mi Apr 03, 2019 3:46 pm
von Werekorden
Hi,

Problem pdf-Export
Ich habe jetzt mal einen anderen Rechner genutzt. Dort wird mir dutzende Male die gleiche Fehlermeldung ausgegeben:
In grid.Call(C_textBounds, as.graphicsAnnot(x$label), ... : Zeichensatzfamilie in der Windows Zeichensatzdatenbank nicht gefunden
Immerhin wird der Plot auf dem anderen Rechner mit dem Cairo pdf Service unter Rstudio als pdf ordentlich exportiert.


Problem Formelumwandlung:

Ich habe meinem Plot eine Formel hinzugefügt damit jeder die Kopienanzahl selbst ausrechnen kann wenn er selbst bestimmte Ct-Werte erhält.
Leider entsteht bei der Ploterstellung folgende Formel: y=c(54.53)+c(-1.504)x, r^2 =0.99
Die beiden "c" sollten so in der Formel aber nicht auftauchen.

Code: Alles auswählen

  library(Rcpp)
  library(rlang)
  library(gcookbook)
  library(ggplot2)
  library(hrbrthemes)
  library(magick)
  library(plyr)
  library(dplyr)
  library(MASS)
  library(scales)
  library(Cairo)
  library(extrafont)
  extrafont::loadfonts()
  font_import()
  loadfonts()

  #Dateneingabe
  Konz_x <- c(47143480, 4714348, 4714, 2357, 1179, 471)
  CT_Wert_y <- c(18.68, 22.595, 33.004, 34.290, 35.369, 35.271)
  data.frame(Konz_x, CT_Wert_y)
  p <- data.frame(Konz_x, CT_Wert_y)
  p
  
  #Model-Erstellung für Formeldarstellung in plot 
  model <- lm(CT_Wert_y ~ log(Konz_x))
  summary(model)
  model
  eqn <- as.character(as.expression(substitute(italic(y)==a+b*italic(x)*"," ~~ italic(r)^2~ "=" ~ r2,
         list(a = format(coef(model) [1], digits = 4), b = format(coef(model)[2], digits = 4), r2 = format(summary(model)$r.squared, digits = 2)
          ))))
  eqn
  parse(text = eqn)
  
 #Plot-Erstellung
  point <- ggplot(p, aes(x=Konz_x, y=CT_Wert_y)) 
  point + geom_point() + annotation_logticks(sides = "b")  + scale_x_log10() + stat_smooth(method=lm, se=0.99, colour="purple") +
    labs(title = 'Linearity Plot of FTD-Kit Data',
         subtitle = 'Linearity Plot to find Range of Linearity with Coefficient of Determination',
         x = 'Copies/ml patient sample',
         y = 'Ct-value',
         caption = 'NAME / NAME@ADRESSE.com') + 
    annotate("text", label = eqn, parse = TRUE, x=2600 , y=20.5) +
    theme_ipsum() + 
    theme(plot.title = element_text(color = "#3a4fa7ff"), plot.caption = element_text(color = "#3a4fa7ff", face = 'bold'))
  logo <-image_read("C:/User/Bilddatei") 
  grid::grid.raster(logo, x = 0.87, y = 0.88, just = c('left', 'bottom'), width = unit(0.8, 'inches'))
Habt ihr eine Idee?

Edit: Den Code für die Formel habe ich aus dem R Graphics Cookbook

Re: Logarithmische Regression

Verfasst: Mi Apr 03, 2019 4:52 pm
von EDi
Zeichensatzfamilie in der Windows Zeichensatzdatenbank nicht gefunden
Und hast du das mal überprüft? Bzw. den Zeichensatz installiert.