Hallo ihr beide,
leider habe ich es nicht früher geschafft. Nach der Informationshülle von gestern, musste ich erst einmal eine Nacht drüber schlafen.
Ich habe mich um meine Diagramme gekümmert und dank eurer Hilfe ein wenig "Design" reinbringen können.
Der Rat:
...zu googlen hat mich dann an vielen Stellen weitergebracht.
Leider konnte ich mir aber nicht alle Fragen beantworten.
Zum besseren Verständnis habe ich hier meine KOMPLETTEN Messwerte hochgeladen und auch das Scripte, welches ich bisher zur Auswertung in R erstellt habe. Für Bernhard sind die Messreihen auch in Textform im Script vorhanden.
- Code: Alles auswählen
'__________________________________'
' Scrript zur Auswertung der Proben'
'__________________________________'
'WIchtig: • Dezimaltrennzeichen in Excel muss als . (Punkt) eingestellt sein
• °C muss aus den Originaldaten entfernt werden
• ± muss aus den Originaldaten entfernt werden'
1. Daten einlesen
data_table_text = structure(list(Notes = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 8L, 8L, 8L, 8L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L, 7L,
7L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 2L, 1L, 1L),
.Label = c("50%Probe1","keine Probe", "Probe1", "Probe2", "Probe3", "Probe4", "Probe5","Probe6"), class = "factor"),
IPHours = c(8.29, 8.04, 7.33, 7.28,
7.68, 7.62, 7.34, 7.23, 7.77, 7.6, 7.58, 7.58, 7.33, 7.31, 7.39,
7.27, 7.48, 7.33, 7.44, 7.35, 6.64, 6.47, 7.27, 7.28, 7.2, 7.2,
6.74, 6.74, 7.02, 7.16, 6.96, 7.08, 7.89, 7.81, 7.46, 7.3),
pHValue = c(5.41, 5.43, 5.39, 5.42, 5.31, 5.28, 5.29, 5.29, 5.31, 5.32, 5.3, 5.31,
5.46, 5.46, 5.48, 5.49, 5.27, 5.29, 5.29, 5.27, 5.21, 5.24, 5.32,
5.32, 4.84, 5.08, 5.17, 5.16, 4.94, 5.12, 5.18, 5.18, 5.56, 5.58,
5.44, 5.42),
IPSlope = c(-0.58, -0.57, -0.62, -0.61, -0.59, -0.61, -0.64, -0.64, -0.64, -0.66, -0.67, -0.67, -0.79, -0.81, -0.78,
-0.74, -0.59, -0.59, -0.62, -0.61, -0.65, -0.63, -0.71, -0.7,
-0.67, -0.58, -0.58, -0.59, -0.61, -0.55, -0.56, -0.54, -0.82,
-0.77, -0.69, -0.69),
CorrelationCoeff = c(0.9991, 0.9992, 0.9993,
0.9993, 0.999, 0.9991, 0.9992, 0.9993, 0.9992, 0.9994, 0.9994,
0.9994, 0.9995, 0.9995, 0.9995, 0.9989, 0.9993, 0.9994, 0.9993,
0.9994, 0.9996, 0.9991, 0.9994, 0.9994, 0.9993, 0.9994, 0.9993,
0.9993, 0.999, 0.999, 0.999, 0.999, 0.9995, 0.9991, 0.999, 0.9993),
CriticalSlope = c(1.4, 1.5, 1.6, 1.6, 1.2, 1.2, 1.5, 1.6, 1.6, 1.8, 1.8, 1.7, 2.2, 2.2, 2.2, 1.8, 1.5, 1.8, 1.4, 1.5, 1.6,
1.5, 2.1, 2.1, 1.7, 1.9, 1.6, 1.5, 1.3, 1.3, 1.4, 1.3, 2, 1.5,
1.3, 1.5),
ValuesinRange = c(16L, 18L, 15L, 14L, 18L, 17L, 15L,
14L, 15L, 14L, 14L, 14L, 12L, 12L, 12L, 13L, 16L, 15L, 16L, 16L,
14L, 16L, 12L, 12L, 15L, 14L, 15L, 15L, 17L, 17L, 16L, 17L, 12L,
15L, 16L, 14L),
TempMean = c(30.22, 30.22, 30.54, 30.54, 30.33,
30.33, 31.36, 31.36, 31.07, 31.07, 31.25, 31.25, 31.03, 31.03,
30.75, 30.75, 32.38, 32.38, 31.38, 31.38, 32.24, 32.24, 31.88,
31.88, 32.87, 32.87, 31.55, 31.55, 30.46, 30.46, 31.26, 31.26,
30.89, 30.45, 30.45, 29.92),
TempStdDeriv = c(0.12, 0.12, 0.37,
0.37, 0.27, 0.27, 0.2, 0.2, 0.15, 0.15, 0.23, 0.23, 0.21, 0.21,
0.28, 0.28, 0.23, 0.23, 0.77, 0.77, 0.27, 0.27, 0.31, 0.31, 0.84,
0.84, 1.05, 1.05, 0.49, 0.49, 0.33, 0.33, 0.39, 0.34, 0.34, 0.34
)),
.Names = c("Notes", "IPHours", "pHValue", "IPSlope", "CorrelationCoeff",
"CriticalSlope", "ValuesinRange", "TempMean", "TempStdDeriv"),
class = "data.frame",
row.names = c(NA,-36L))
'2. - Überprüfen ob Factor, num und int richtig unterschieden wurden
Daten sollten so aussehen:
$ Notes : Factor
$ IPHours : num
$ pHValue : num
$ IPSlope : num
$ CorrelationCoeff: num
$ CriticalSlope : num
$ ValuesinRange : int
$ TempMean : num
$ TempStdDeriv : num '
str(data_table_text)
'3. - Librarys laden (Zwischenstriche, Label der Daten erstellen)'
#install.packages("calibrate")
library(Hmisc)
library(calibrate)
'5. - Farbbereiche für die späteren Boxplots und Plot vorbereiten'
boxplot_color = c("#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026")
plot_color = c("#d73027","#f46d43","#fdae61","#e1ad22","#2ea8c8","#abd9e9","#74add1","#4575b4")
'6. - Einzelne Boxplots erstellen'
par(mar = c(5,5,1,1), # Seitenabstände des Diagramms
family=("sans"), # verwendete Schriftart im DIagramm
cex.lab = 1.4, # Schriftgröße der y- und x-Achsentitel
cex.axis=1.2) # Größe der y- und x-Achsenbeschritung
boxplot(data_table_text$IPHours ~ data_table_text$Notes,
xlab = expression(bold("Getestete Probe")), # Beschriftung x-Achse
ylab = expression(bold("Stunden [Std.]")), # Beschriftung y-Achse
col = boxplot_color, # Einfärben der Boxplots
ylim = c(6.5,8.5)) # Skylierung y-Achse
minor.tick(ny=5, tick.ratio=0.5) # Zwischenstriche erstellen
boxplot(data_table_text$pHValue ~ data_table_text$Notes,
xlab = expression(bold("Getestete Probe")), # Beschriftung x-Achse
ylab = expression(bold("pH-Wert [pH]")), # Beschriftung y-Achse
col = boxplot_color, # Einfärben der Boxplots
ylim = c(4.8,5.6)) # Skylierung y-Achse
minor.tick(ny=5, tick.ratio=0.5) # Zwischenstriche erstellen
boxplot(data_table_text$IPSlope ~ data_table_text$Notes,
xlab = expression(bold("Getestete Probe")), # Beschriftung x-Achse
ylab = expression(bold("Steigung")), # Beschriftung y-Achse
col = boxplot_color) # Einfärben der Boxplots
minor.tick(ny=5, tick.ratio=0.5) # Zwischenstriche erstellen
'7. - Boxplots erstellen (drei Stück untereinander)'
par(mfrow=c(3,1),
mar = c(5,5,1,1), # Seitenabstände des Diagramms
family=("sans"), # verwendete Schriftart im DIagramm
cex.lab = 1.4, # Schriftgröße der y- und x-Achsentitel
cex.axis=1.4) # Größe der y- und x-Achsenbeschritung
boxplot(data_table_text$IPHours ~ data_table_text$Notes,
#xlab = expression(bold("Getestete Probe")), # Beschriftung x-Achse
ylab = expression(bold("Stunden [Std.]")), # Beschriftung y-Achse
col = boxplot_color) # Einfärben der Boxplots
minor.tick(ny=5, tick.ratio=0.5)
boxplot(data_table_text$pHValue ~ data_table_text$Notes,
#xlab = expression(bold("Getestete Probe")),
ylab = expression(bold("pH-Wert [pH]")),
col = boxplot_color)
minor.tick(ny=5, tick.ratio=0.5)
boxplot(data_table_text$IPSlope ~ data_table_text$Notes,
xlab = expression(bold("Getestete Probe")),
ylab = expression(bold("Steigung")),
col = boxplot_color)
minor.tick(ny=5, tick.ratio=0.5)
'8. - Punkt-Diagramm erstellen (x-Achse: Temperatur; y-Achse: Stunden) '
par(mfrow=c(1,1),
mar = c(5,5,1,1), # Seitenabstände des Diagramms
family=("sans"), # verwendete Schriftart im Diagramm
cex.lab = 1.2, # Schriftgröße der y- und x-Achsentitel
cex.axis=1.2) # Größe der y- und x-Achsenbeschritung
#dev.new() #im extra Fenster anzeigen
plot(IPHours ~ TempMean,
pch = as.numeric(Notes),
data = data_table_text,
xlab=expression(bold("Temperatur [°C]")),
ylab=expression(bold("Stunden [Std.]")),
xlim = c(30,32.5),
ylim = c(6.5,8.5),
col = c(plot_color))
'*****Funktioiert leider nicht! Bzw. ich kann den Fehler nicht finden ***********************************'
legend(1000,95, # places a legend at the appropriate place
legend = c(data_table_text$Notes), # puts text in the legend
#lty=c(1,8), # gives the legend appropriate symbols (lines)
#lwd=c(2.5,2.5),
col="blue") # gives the legend lines the correct color and width
'********************************************************************************************************'
minor.tick(nx=5, ny=5, tick.ratio=0.5)
textxy(data_table_text$TempMean, data_table_text$IPHours, data_table_text$Notes, cex= 0.7) #, col= plot_color
'9. - Berechnung der Pearson-Korrelations'
cor.test(data_table_text$TempMean, data_table_text$IPHours)
'10. -Regressionsmodell Stunde und Temperatur erstellen'
plot_regression = lm(IPHours ~ TempMean + Notes,
data = data_table_text)
print(summary(plot_regression))
Diagramm1. Ich würde gerne eine Legende in meinem Plot mit einfügen. Es kommt zu keinem Fehler, aber die Legende wird nicht angezeigt. Wisst ihr da was?
2. Im Plot mit der StundeVSTemperatur habe ich die "Marker" eingefärbt. Mir ist aufgefallen, dass die Marker nicht pro Probe eingefärbt sind, sondern nach einem anderen Schema. Wie könnte ich das unterbinden, bzw. korrigieren?
3. Ich würde gerne die Schriftart der Diagramme auf z.B. Minion Pro ändern, nur leider bekomme ich immer einen Fehler, der mit sagt, dass es den Zeichensatz unter Windows nicht gibt. Das kann aber nicht sein, da dieser zur WIN-Palette der Schriften gehört.
4. WICHTIG: Ich schaffe es leider nicht die Reihenfolge auf der X-Achse der Probe zu beeinflussen. Es wäre deutlich besser, wenn "Keine Probe" und "50% Probe1" die letzten beiden Boxplots wären.
Ansonsten bin ich mit den Diagrammen schon recht zufrieden. Was sagt ihr?
Nun zur Statistik:Meine Auswertung der Ergebnisse sieht derzeit so aus:
** Teil 1 **- Code: Alles auswählen
Pearsons product-moment correlation
data: data_table_text$TempMean and data_table_text$IPHours
t = -3.2057, df = 34, p-value = 0.002929
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.6995734 -0.1820409
sample estimates:
cor
-0.4817638
Die hier verwendete Pearson-Korrelation gibt Aufschluss darüber, ob ein linearer Zusammenhang zwischen den mittleren
Messwerten der Temperatur und den berechneten Stunden des Wendepunktes besteht. Die dargestellten t- und df-Werte
dienen zur Berechnung des p-Wertes.
"Mit dieser Aussage bin ich noch im Zwiespalt!": Der p-Wert muss in Verbindung mit dem Konfidenzintervall (Vertrauensintervall zur Präzision der Lageschätzung eines
Parameters) betrachtet werden. Das Konfidenzintervall (Alpha) ist auf 95% festgelegt. Die 95% besagen, dass die
gemessenen Werte der Untersuchung zu 95% im Konfidenzinterval liegen, solange der p-Wert < 0.05 beträgt.
• Ist das Verständis der Konfidenzintervalls soweit richtig? Die Untersuchung zeigt, dass der p-Wert unter 0.05 liegt und somit die Hypothese bestätigt werden kann, dass die Temp-
eratur einen Einfluss auf die berechneten Stunden des Wendepunktes hat. Der negative Korrelationskoeffizient lässt weiter-
hin deuten, dass eine negative Korrelation zwischen Temperatur und den berechneten Stunden besteht. Je höher die Temperatur,
desto niedriger die Stunde des eintretenden Wendepunktes. Der p-Wert ist mit < 0.05 signifikat, weshalb ausgeschlossen
werden kann, dass es sich in der Untersuchung - in Bezug auf die Beziehung von Temperatur und Stunde - um Zufall handelt.
** Teil 2 **- Code: Alles auswählen
Call:
lm(formula = IPHours ~ TempMean + Notes, data = data_table_text)
Residuals:
Min 1Q Median 3Q Max
-0.42939 -0.09576 -0.01620 0.07005 0.65472
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 9.99732 2.61362 3.825 0.000702 ***
TempMean -0.08671 0.08637 -1.004 0.324333
Noteskeine Probe 0.51205 0.26391 1.940 0.062855 .
NotesProbe1 0.25832 0.20927 1.234 0.227709
NotesProbe2 -0.25044 0.23670 -1.058 0.299411
NotesProbe3 0.00613 0.23372 0.026 0.979268
NotesProbe4 0.16697 0.26898 0.621 0.539966
NotesProbe5 -0.30242 0.27775 -1.089 0.285859
NotesProbe6 0.33704 0.24085 1.399 0.173090
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.2606 on 27 degrees of freedom
Multiple R-squared: 0.6265, Adjusted R-squared: 0.5158
F-statistic: 5.661 on 8 and 27 DF, p-value: 0.0002899
Wenn ich es richtig verstanden habe, ist hier nirgends ein signifiakter Unterschied zwischen dem Standard (Hier wohl 50%Probe) und den restlichen Messungen zu erkennen. Das beunruhigt mich ehrlich gesagt ein wenig. Ist es vllt. sinnvoller einen anderen Wert als Standard zu setzen? Falls ja, wie müsste ich da vorgehen? (Hat Frage 4 da vllt. schon Einfluss drauf?)
Bei einer linearen Beziehung gilt es die Geradengleichung zu erfüllen: y=m*x+b. Ich komme soweit mit, dass wir einen y-Achsenabschnitt von 9.99 haben, welcher sich signifikant von Null (p = 0.0007) unterscheidet. Ich verstehe allerdings leider nicht ganz, wie du diesen Satz meinst (in Bezug auf die alten Daten):
...und die Temperatur mit -0,54 multipliziert und addiert.
(Im Bezug auf die neuen Daten) Bedeutet es, dass wir 9.99 - 0.08 rechnen müssten, um den y-Achsenabschnitt der Temperatur der linearen Regression zu ermitteln?
- Code: Alles auswählen
..auch wenn dieser Wert nicht signifikant von Null verschieden ist mit p=0,39
Meinst du mit "Null"
der Wert 0 oder
die Standard-Probe-Null?
Ich hoffe du/ihr könnt mir helfen mein Halbwissen etwas auszubauen. Ich bin euch jetzt schon dankbar, dass ihr euch bereits soviel Zeit genommen habt.
@Bernhard: Viel Erfolg weiterhin auf dem Kongress!
Liebe Grüße,
aXon