Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
mohnstrudel
Beiträge: 17
Registriert: Mi Nov 25, 2020 5:13 pm

Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von mohnstrudel »

Hallo,
ich möchte u.a. gerne ein Rasch-Modell aufstellen und analysieren. Dazu habe ich bislang alle Fälle, deren Werte in dieser Variable ausschließlich NA sind, entfernt:

Code: Alles auswählen

data.GEB = data.frame(df.netjes$GEB_everydaytrip_dic, df.netjes$GEB_seasonal_dic, df.netjes$GEB_1000km.R_dic,
                      df.netjes$GEB_fulldrum_dic, df.netjes$GEB_heating_R.R_dic, df.netjes$GEB_campaign_dic, 
                      df.netjes$GEB_bag.R_dic, df.netjes$GEB_30km.R_dic, df.netjes$GEB_Pfand_dic, 
                      df.netjes$GEB_togo.R_dic, df.netjes$GEB_repair_dic, df.netjes$GEB_finansupp_dic,
                      df.netjes$GEB_regional_dic, df.netjes$GEB_dryer.R_dic, df.netjes$GEB_taketime_dic,
                      df.netjes$GEB_talk_dic, df.netjes$GEB_boycot_dic, df.netjes$GEB_compensate_dic, 
                      df.netjes$GEB_heating_dic, df.netjes$GEB_light_dic, df.netjes$GEB_standby.R_dic, 
                      df.netjes$GEB_share_dic, df.netjes$GEB_meat_dic, df.netjes$GEB_politics_dic)
delete.na = function(data.GEB, n=23) {data.GEB[rowSums(is.na(data.GEB))<=n,]}
data.GEB = delete.na(data.GEB)
Auf Basis des Rasch-Modells möchte ich im Anschluss die Personenparameter ermitteln

Code: Alles auswählen

GEB.rasch = RM(data.GEB)
GEB.rasch.pp = person.parameter(GEB.rasch)
Für den Befehl der Personenparameter zeigt R allerdings folgende Fehlermeldung an:

Code: Alles auswählen

Spline interpolation in some subgroups not performed!
  Less than 4 different person parameters estimable!
  Perhaps NAs in subgroup(s).
Trotz intensiver Recherche konnte ich bislang noch keine aufschlussgebende Erläuterung zu diesem Fehler finden - und dementsprechend auch keine Behebungsmöglichkeiten. Weiß hier vielleicht jemand mehr dazu?

Ich freue mich ziemlich über hilfreiche Hinweise!

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

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von jogo »

nichts Substantielles zu Deinem Problem, nur Kosmetik:

Code: Alles auswählen

data.GEB <- df.netjes[c("GEB_everydaytrip_dic", "GEB_seasonal_dic", "GEB_1000km.R_dic",
                      "GEB_fulldrum_dic", "GEB_heating_R.R_dic", "GEB_campaign_dic", 
                      "GEB_bag.R_dic", "GEB_30km.R_dic", "GEB_Pfand_dic", 
                      "GEB_togo.R_dic", "GEB_repair_dic", "GEB_finansupp_dic",
                      "GEB_regional_dic", "GEB_dryer.R_dic", "GEB_taketime_dic",
                      "GEB_talk_dic", "GEB_boycot_dic", "GEB_compensate_dic", 
                      "GEB_heating_dic", "GEB_light_dic", "GEB_standby.R_dic", 
                      "GEB_share_dic", "GEB_meat_dic", "GEB_politics_dic")]
Gibt es im Dataframe df.netjes noch weitere Spalten, die mit "GEB_" anfangen?

Gruß, Jörg
mohnstrudel
Beiträge: 17
Registriert: Mi Nov 25, 2020 5:13 pm

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von mohnstrudel »

O ja, sieht gleich deutlich sympathischer aus, danke!
Ja, in df.netjes gibt es noch weitere Variablen, die mit "GEB_" beginnen.

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

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von jogo »

schade, sonst hättest Du einfach:

Code: Alles auswählen

data.GEB <- df.netjes[grepl("^GEB_", names(df.netjes))]
machen können. (Wenn die anderen Spalten nicht stören, kannst Du es trotzdem machen.)

Gruß, Jörg
mohnstrudel
Beiträge: 17
Registriert: Mi Nov 25, 2020 5:13 pm

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von mohnstrudel »

Mh, wenn ich es richtig sehe, ist die Funktion

Code: Alles auswählen

grepl()
dazu gedacht, bestimmte Zeichen (oder Kombinationen von Zeichen) und deren Position in einem Datensatz wiederzufinden.
Mir leuchtet noch nicht wirklich ein, warum das an dieser Stelle hilfreich werden kann. Kannst du mir diesbezüglich vielleicht noch einen Hinweis geben?
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von jogo »

Ja, klar; Indizierung kann auch mit eine logical vector erfolgen, z.B.

Code: Alles auswählen

x <- 1:10
x > 5
x[x>5]
Die Funktion grepl() erzeugt genau so einen logical vector
- in meiner vorherigen Anwendung durch Test der Spaltennamen auf ein bestimmtes pattern.

Ein Dataframe ist eine Liste (eine Liste von gleichlangen Vektoren). Deshalb lässt sich ein Dataframe wie eine Liste indizieren.

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von bigben »

mohnstrudel hat geschrieben: Do Jan 14, 2021 8:53 pmTrotz intensiver Recherche konnte ich bislang noch keine aufschlussgebende Erläuterung zu diesem Fehler finden - und dementsprechend auch keine Behebungsmöglichkeiten. Weiß hier vielleicht jemand mehr dazu?
Es ist ein paar Jahre her, dass ich mich mit Rasch-Modellen beschäftigt habe. Damals gab es schon mehr Pakete zum fitten von Rasch-Modellen als ich bereit war mir anzuschauen. Du solltest wenigstens angeben, aus welchem Paket Deine Funktion RM kommt.

Damit man so ein Modell anpassen kann müssen die eingegebenen Daten natürlich auch ausreichend Aussagekraft haben, um für jedes Item Lage und Streuung zu bestimmen. Wenn man nach Shiny und IRT sucht findet man auch Shiny-Apps, mit denen sich Rasch-Modelle mit einer GUI untersuchen lassen. Vielleicht schaust Du Dir die Daten damit nochmal an. Ansonsten sehe ich uns doch irgendwie an der Stelle, an der man konkrete Daten bzw. ein reproduzierbares Beispiel (gerne aus eine Abwandlung der Originaldaten bestehend, wenn Angst vor Datenklau besteht) der nächste vernünftige Schritt sind.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
mohnstrudel
Beiträge: 17
Registriert: Mi Nov 25, 2020 5:13 pm

Re: Fehler in Rasch-Modell - Spline interpolation in some subgroups not performed

Beitrag von mohnstrudel »

Vielen Dank für eure Reaktionen!
Bei der Umsetzung der Hinweise ist mir aufgefallen, dass ich einen inhaltlichen Fehler in der Dichotomisierung der Variablen gemacht habe. Deshalb ist es zu sehr vielen Werten gekommen, die nach der Dichotomisierung als "NA" kodiert waren, allerdings ursprünglich als "7" kodiert waren. Das ist mir jetzt sehr unangenehm, dass es an so einer unnötigen Unaufmerksamkeit gelegen zu haben scheint. Der Output ist jetzt wie folgt:

Code: Alles auswählen

> GEB.rasch = RM(data.GEB)
> GEB.rasch.pp = person.parameter(GEB.rasch)
> GEB.rasch.pp

Person Parameters:

Person NA Group: 1 
NA pattern: x x x x x x x x x x x x x x x x x x x x x x x x 
 Raw Score    Estimate Std.Error
         0 -3.44243087        NA
         4 -2.07676200 0.5994175
         5 -1.74461052 0.5557695
         6 -1.45314652 0.5255768
         7 -1.18862777 0.5041690
         8 -0.94243429 0.4890363
         9 -0.70863622 0.4787195
        10 -0.48279098 0.4723258
        11 -0.26135947 0.4693160
        12 -0.04130579 0.4693921
        13  0.18022421 0.4724463
        14  0.40608140 0.4785605
        15  0.63936199 0.4880157
        16  0.88373649 0.5013625
        17  1.14384974 0.5195276
        18  1.42602329 0.5440250
        19  1.73949357 0.5773787
        20  2.09885818 0.6241066
        21  2.52993896 0.6935389
        22  3.08756798 0.8104653
        23  3.94152692 1.0792271
        24  4.86698094        NA

Person NA Group: 2 
NA pattern: x x x x x x x x x x x x x x x x x x x x x x x NA 
 Raw Score Estimate Std.Error
        18 1.704469 0.5824468
        ...
Habt vielen Dank für eure Hilfe!

Viele Grüße
mohnstrudel
Antworten