Matrixerstellung für multivariate Analyse spektroskopischer Daten

Varianzanalyse, Diskriminanzanalyse, Kontingenzanalyse, Faktorenanalyse, Clusteranalyse, MDS, ....

Moderator: EDi

Larilu182
Beiträge: 4
Registriert: Mo Feb 01, 2021 1:04 pm

Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von Larilu182 »

Hallo zusammen,

ich bin blutiger Anfänger was R angeht und komme einfach nicht weiter... :?

Ich habe eine riesen Menge an Messdaten (Uv-Vis Spektroskopie) von verschiedenen Proben und möchte eine multivariate Datenanalyse (sowohl PCA, als auch hier. Clusteranalyse) durchführen, um Ähnlichkeiten und Unterschiede festzustellen.

Als Basis brauch ich jedoch zunächst eine Matrix und da liegt aktuell das Problem:
Pro Messung habe ich 600 Werte, da ich im Wellenlängenbereich von 200 bis 800 nm mit Schrittweite 1 nm messe --> x = Wellenlänge, y = Absorptionswerte. Das Gerät wirft mir die Ergebnisse als Excel-Tabelle aus. Ein Teil der Werte habe ich hier als Anhang hinzugefügt.
Die Messung erfolgte bei 15 Temperaturen (Raumtemperatur bis 90 °C).
Bei den Proben gibt es auch noch Variablen: pH-Wert, Salzkonzentration und Proteinkonzentration (PC).
Phycocyanin_0,4.xlsx
(493.01 KiB) 109-mal heruntergeladen

Ich hatte mir überlegt, eine dreidimensionale Matrix zu erstellen:
Zeilen für die steigende Temperatur, Spalten für die verschiedenen Proben und jeder Punkt der Matrix enthält einen Vektor für die 600 Absorptionswerte.
Soweit die Theorie.
Macht das Sinn und ist es überhaupt in der Praxis umsetzbar?
Falls ja, wäre ich extrem dankbar für Ideen und Tipps, wie ich eine solche Matrix am Besten erstellen kann. :)

Beste Grüße,
Lara
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von jogo »

Hallo Lara,

willkommen im Forum!
Larilu182 hat geschrieben: Mo Feb 01, 2021 1:32 pm Ich hatte mir überlegt, eine dreidimensionale Matrix zu erstellen:
Zeilen für die steigende Temperatur, Spalten für die verschiedenen Proben und jeder Punkt der Matrix enthält einen Vektor für die 600 Absorptionswerte.
Soweit die Theorie.
Macht das Sinn und ist es überhaupt in der Praxis umsetzbar?
wenn Du meinst, das dies günstig ist, dann ist es sinnvoll.
In R kann man dies mit einem mehrdimensionalen array umsetzen.
Falls ja, wäre ich extrem dankbar für Ideen und Tipps, wie ich eine solche Matrix am Besten erstellen kann. :)
Da Exceltabellen ein flaches (=zweidimensionales) Design haben, wird man beim Einlesen wahrscheinlich auch erstmal so eine Struktur bekommen, die man dann anschließend in das array überführt.
Hast Du die Daten schon irgendwie in R eingelesen und kannst uns zeigen, mit welchem Funktionsaufruf Du das erledigt hast?

Gruß, Jörg
Larilu182
Beiträge: 4
Registriert: Mo Feb 01, 2021 1:04 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von Larilu182 »

Hallo Jörg,

danke für die schnelle Antwort und den Tipp mit Arrays. Da werde ich mich mal einlesen.

Ich habe nur mal zu Beginn die angefügt Exceldatei in R Studio hochgeladen und rumprobiert. Ich habe diese als Matrix (as.matrix) gesetzt und wollte sie zunächst normieren (scale). Dann erhalte ich jedoch schon die Fehlermeldung, dass x nicht numerisch ist...
Habe es mit csv-Format und Punkt statt Komma in der Excel-Datei versucht; bringt alles nichts.

Mit Deducer hab ich Probleme die Pakete von CRAN zu installieren...

Funktioniert alles nicht so wie es soll :cry: :lol:

Müsste ich für die dreidimensionale Matrix die Excel-Spalten vorab einzeln als Vektoren definieren und jedem Vektor einen Namen geben? Bei der Datenmenge wäre das nämlich ein riesen Aufwand.

Danke für die Hilfe!

Viele Grüße,
Lara
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von jogo »

Hallo Lara.
Larilu182 hat geschrieben: Mo Feb 01, 2021 2:17 pm Ich habe nur mal zu Beginn die angefügt Exceldatei in R Studio hochgeladen und rumprobiert.
hat RStudio beim Laden der Exceldatei irgendeine Codezeile generiert? Wenn ja, zeige sie uns bitte.
Ich habe diese als Matrix (as.matrix) gesetzt und wollte sie zunächst normieren (scale). Dann erhalte ich jedoch schon die Fehlermeldung, dass x nicht numerisch ist...
ich vermute hier ein Anfängerproblem ...
Habe es mit csv-Format und Punkt statt Komma in der Excel-Datei versucht; bringt alles nichts.
Wenn eine Exceldatei eingelesen werden kann, ist das nicht das schlechteste.
Mit Deducer hab ich Probleme die Pakete von CRAN zu installieren...
Diese Schilderung ist zu vage, als dass bei diesem Informationsstand geholfen werden könnte.
Welche Probleme/Fehlermeldungen gab es?
Funktioniert alles nicht so wie es soll :cry: :lol:
Wie etwas funktionieren soll, steht üblicherweise in der Dokumentation. Oft ist es aber so, dass die Wunschvorstellungen der Nutzer der Funktionen von der Dokumentation abweichen.
Müsste ich für die dreidimensionale Matrix die Excel-Spalten vorab einzeln als Vektoren definieren und jedem Vektor einen Namen geben? Bei der Datenmenge wäre das nämlich ein riesen Aufwand.
Wie ich schon geschrieben habe:
erstmal die Tabelle einlesen - das Umstrukturieren in ein dreidimensionales array erfolgt danach.

Gruß, Jörg
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von EDi »

Ich hatte mir überlegt, eine dreidimensionale Matrix zu erstellen: Zeilen für die steigende Temperatur, Spalten für die verschiedenen Proben und jeder Punkt der Matrix enthält einen Vektor für die 600 Absorptionswerte.
Da kann ich nicht ganz folgen, warum 3D?

Für multivariate Verfahren hat man oft einfache Matrizen.

Hier hättest du 600 Spalten (Wellenlängen), 15 Zeilen (Beobachtungen), Werte sind die Absorptionswerte.

Zusätzliche Spalten als erklärende Variable können hinzugefügt werden (Temperatur, pH etc) und können zum einfärben bei PCA genommen werden oder als erklärende Variablen in einer RDA.
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.
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von jogo »

Hallo Lara,

einlesen konnte ich Deine Beispieldatei:

Code: Alles auswählen

library("openxlsx")
setwd("...")
dat <- read.xlsx("Phycocyanin_0,4.xlsx")
oder auch als Matrix:

Code: Alles auswählen

M <- as.matrix(dat)
So, und nun?

Gruß, Jörg
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von ruedi_br »

Nach Durchsicht der Exceldatei würde ich mal vermuten, dass Du für die Auswertung mindestens Konzentration ... Temperatur als zusätzliche Spalten brauchen wirst - egal ob für grafische oder sonstige Auswertungen. Nachdem allerdings jede Messreihe gleich 3 Randbedingungen in der Kopfzeile hat, wird das etwas aufwendiger :? Lässt sich da auf der Geräteseite was machen?
Und wie sollen die spektroskopischen Daten konkret in die PCA oder dergl. eingehen? Doch wahrscheinlich reduziert auf solche Kenndaten wie Absorptionsmaximum oder spektralen Absorptionskoeffizienten?
VG Ruedi
fortune(111)
Larilu182
Beiträge: 4
Registriert: Mo Feb 01, 2021 1:04 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von Larilu182 »

Hallo zusammen,

danke für die Antworten.
Ich hatte mir Bücher bestellt (R für Dummies und Chemometrics with R von Ron Wehrens), um mich erstmal auf einen gewissen Wissensstand zu bringen.

Das Einlesen meiner Excel-Datei und das Festlegen als Matrix hat funktioniert (wie von Jörg auch beschrieben).

@EDi: Ich hatte mir eine 3D Matrix überlegt, bei der die Zeilen für die steigende Temperatur und die Spalten für die Kombination verschiedener Variablen wie Proteinkonzentration bei einem bestimmten pH und Salzkonzentration stehen.
Pro Datenpunkt hab ich aber 600 Messwerte, die ich als Vektor definieren würde. Somit hätte ich eine Matrix, die aus einzelnen Vektoren besteht.

@Ruedi: von Geräteseite lässt sich da leider nichts machen. Bei meinem Versuch untersuche ich den Einfluss der Temperatur auf eine Proteinlösung, wobei das Protein durch Faktoren wie pH und Salzkonzentration beeinflusst wird...
Mein Ziel wäre es, dass R meine Messdaten ausließt und anhand der Lage und Höhe der Maxima Cluster erstellt (hierarchische Clusteranalyse).
Ich dachte, dass ich die PCA zur Datenreduktion nutzen kann, um die Clusteranalyse zu vereinfachen.

Der nächste Schritt wäre vermutlich, dass die Spalten der Matrix (M, wie Jörg sie genannt hat) als Vektoren definiert werden, um ein Datenfeld mittels array zu erzeugen. Dieses könnte ich dann für die PCA nutzen oder?

Beste Grüße,
Lara
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von ruedi_br »

Hallo Lara,
wenn nur jeweils das Maximum und die zugehörige Wellenlänge herausgezogen werden sollen, wozu dann die restlichen Spektraldaten? Wenn es beiden bisherigen Spalten bleiben soll, dann würde doch das Maximum je Spalte reichen - zusammen mit der zugehörigen Wellenlänge?
VG Ruedi
fortune(111)
Larilu182
Beiträge: 4
Registriert: Mo Feb 01, 2021 1:04 pm

Re: Matrixerstellung für multivariate Analyse spektroskopischer Daten

Beitrag von Larilu182 »

Hallo Ruedi,

ich bin noch am überlegen, wie es am Besten wäre.
In einem Spektrum gibt es i.d.R. 3 Maxima und ich will die Lage und die Höhe (Intensität) der drei Maxima zwischen den Spektren vergleichen.
Spektrum Beispiel.JPG
Den Zustand des Proteins möchte ich dann in einem farbigen Diagramm darstellen, wofür ich wohl am besten die Clusteranalyse durchführe, um Gruppen zu bilden, die ich farblich unterschiedlich kennzeichne...

VG, Lara
Antworten