Logarithmische Regression

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Logarithmische Regression

Beitrag 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
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logarithmische Regression

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Logarithmische Regression

Beitrag 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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Logarithmische Regression

Beitrag 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. :?
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Logarithmische Regression

Beitrag 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.
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Logarithmische Regression

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Logarithmische Regression

Beitrag 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?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Logarithmische Regression

Beitrag 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
Werekorden
Beiträge: 83
Registriert: So Feb 04, 2018 7:52 pm

Re: Logarithmische Regression

Beitrag 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
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Logarithmische Regression

Beitrag von EDi »

Zeichensatzfamilie in der Windows Zeichensatzdatenbank nicht gefunden
Und hast du das mal überprüft? Bzw. den Zeichensatz installiert.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten