Coming up: GLMs in R (Part II)

12. April 2010

Words and Rules?

Abgelegt unter: Allgemein — DW @ 09:46

hallo zusammen,

während der letzten wochen habe ich mich recht tief in die inflectional morphology-learning lit eingelesen. speziell habe ich mir die frage angeschaut, ob wir einen (Bybee, Elman, …) oder zwei (Pinker, Marcus, …) Verarbeitungsmechanismus/-en brauchen, um z.B. Past- oder Pluralformen zu bilden.

David Eddington hat hier gezeigt, dass instance-based models (TiMBL und analogical mods a la Skousen) besser performen als zumindest einige Typen von Neuralen Netzen.

Aus meiner Sicht sollten k-nearest neighbor classifiers, die alles über Ähnlichkeitsalgorithmen lösen (und speziell solche, die über instances generalisieren (cf. Fambl) ), outputs erzeugen, die die Vorhersagen von UB-CxGs recht nahe kommen.

Ich hab mir nun mal vorgenommen, mir da mal etwas first hand experience zu erarbeiten und mir mal die outputs verschiedener single-route lösungen anzuschauen.
R verfügt über eine Reihe geeigneter Implementationen relevanter Klassifikationssysteme (e.g. nnet für Neurale Netze, ksvm für Support Vector Machines, randomForest für Random Forest Models, …) und Walter Daelemans/Antal van den Bosch und Kollegen bieten ihr TiMBL frei zum DL an.

Wär cool, wenn jemand von Euch Interesse hat, da mitzumachen,
Im Idealfall entsteht daraus mittelfristig ein kleines L1-Erwerbpapier (auf CHILDES Datengrundlage), daß man dann “co-author”-n könnte.

cheers,
daniel

PS: morgen gehts übrigens los mit session 1 der R Gruppe in SS2010 (siehe letzter post)
3

11. Februar 2010

summeR 2010

Abgelegt unter: Allgemein — DW @ 16:09

Hallo allerseits,
hier nun also nun die Eckdaten für unsere Gruppe im SS2010.

Wann: Dienstags 16-18 Uhr; also vor unserem Kolloq; kommt doch bitte s.t. (sonst verdaddeln wir immer soviel Zeit)
Wo: Ich schlage mal vor, wir treffen uns in meinem Büro, also im JenTower. Da haben wir Platz, viele schoene Stuehle, ein Whiteboard und es fliesst Honig und Wein;

Ich weiss, ihr muesst dann mit dem knatterigen Fahrstuhl runterfahren und über eine für jenaer Verhältnisse höllisch gefährliche Straße gehen, aber dafür könnt ihr einmal drueben angekommen auch mit nem schnellen Fahrstuhl (incl. Fernseher!) fahren!

Und: Vielleicht koennte jemand von euch ja so nett sein und regelmaessig einen Beamer mitbringen?!

Was machen wir denn da ueberhaupt?
Wir machen da weiter, wo wir aufgehört haben also mit Generalisierten Linearen Modellen in R, genauer binomialen logistischen Regressionsmodellen. (Alle Daten, workspaces, und Artikel sind weiterhin online –> bitte lest doch nochmal den Manning-text, der als logistic.pdf dort zu finden ist).

Martin und Franziska haben bis dahin riesige Datenmengen kodiert - da ja keiner mit meinen Daten arbeiten will !!!??? - und die powern wir so lange durch, bis sie veröffentlichungsreif sind.

Martin wird dann der erste formale Semantiker in der Geschichte des Universums sein, der sich echte Daten (!) angeguckt und sogar statistisch ausgewertet hat (!!!). Wahrscheinlich wird er danach wohl von seiner Community wohl exkommuniziert, aber thats life

Und Franziska kann das alles dann 1:1 in ihrem Korpuslinguistikseminar verwenden und endlich mal so tolle Evaluationen bekommen, wie ich # “Dozentin verwirrt sich und andere” ;)

Wenn alles nach Plan läuft, wiederholen wir zuerst:
- Was ist (und was ist nicht) eigentlich Statistisches Modellieren?
- Wie fittet man nochmal GLMs in R?
- Wie interpretiert man am besten die Regressionskoeffizienten (und die anderen Statistiken des summary() outputs) nochmal?
- Wozu braucht man eigentlich die ANOVAs dabei?

Unser Hauptaugenmerk wird dann liegen auf:
- Model checking and evaluation
Und - wie immer - gibts viele, viele (bei bedarf auch gerne bunte!) plots, die noch kein SPSS nutzer gesehen hat

Womit arbeiten wir?
Ihr braucht einen - vorzugsweise tragbaren - Rechner mit einem OS eurer wahl (diesen bitte immer mitbringen);
und ein am besten vollständig installiertes R, aber wir haben ja auch internetzugriff vor ort (1ne freie LAN anbindung; offenes WLAN gibts im turm meines wissens nicht)

unsere wichtigsten Quellen werden sein:
Peter Dalgaards Intro to stats with R # beste Einführung, wo gibt ### ja-ha, ich kann Relativsätze!
Harald Baayens Analyzing linguistic data # vielleicht nicht unbedingt die zugänglichste, aber vielleicht die tiefgehendste Einführung, die ich kenne

weiterhin empfehle ich:
Kleiner Crawley # war vor Dalgaard mein Favorit
Großer Crawley # vertieft die dinge, in denen Crawley sich am wohlsten fühlt; spart aber eigentlich auch das as, was man im kleinen vermisst; trotzdem 1A referenz
Gelman & Hills Data Analysis and Multilevel/Hierarchical Models # les ich gerade; viel draus zu lernen
Agrestis Categorical Data Analysis # classic
Gries, S. 2005/to appear. Statistics for linguistics with R: a practical introduction # kennt ihr ja alle

Sonst koennt ihr auch gern mal hier schauen

Ich freu mich - wie immer - auf euch

cheers,
daniel

3. Februar 2010

Philosophy of Science for (empirical) Linguists (in SS 2010?)

Abgelegt unter: Allgemein — DW @ 15:41

hallo zusammen,

ich wollte mal hören, ob es ein interesse daran gibt, im kommenden Semester, das “Tagesgeschäft” mit ein wenig Wissenschaftstheorie zu versuessen. In letzter Zeit orientiert sich ja in der Linguistik sehr sehr vieles an der Biologie (functional explanation, evolutionary processes,…) und diesen Trend kann man ja eigentlich nur begrüßen. Ich weiss nicht, ob es Zufall ist, aber wir scheinen leider auch eine weitere Eigenschaft mit den Biologen zu teilen, nämlich diejenige, nicht gerade die Könige der Theoriebildung zu sein. Wie dem auch sei, ich denke, dass in Zeiten, wo alles, was nicht bei Drei auf den Bäumen der Empirie ist, von den vermeintlichen Vorreitern oft nur noch milde belächelt wird, mehr denn je ein grosser Bedarf entstanden ist, die neuen Wege der Linguistik wissenschaftstheoretisch abzuklopfen.

Und dabei meine ich gar nicht das komische Gefühl, was in mir immer aufkommt, wenn ich Brown & Miller’’s “Concise Encyclopedia of Syntactic Theories” in der Hand halte und mich frage, wieso wir eigentlich immer noch gefühlte 100,000 Syntaxtheorien parallel unterhalten…Was mir vorschwebt, betrifft Fragen, die sich mE jeder empirisch arbeitende Wissenschaftler irgendwann mal stellen sollte. Hier ein kleiner (absolut unsortierter) Auszug aus dem Katalog möglicher Fragen:

- kann man durch iteratives Ablehnen von NIL-hypothesen eigentlich überhaupt irgendwann zu einer vollständigen linguistischen Theorie gelangen (also, bevor unsere Sonne verglüht)?
- was ist eigentlich der Unterschied zw. P(hypothesis|data) und P(data|hypothesis)? was davon suchen wir eigentlich und muss man das überhaupt wissen?
- wie verhalten sich eigentlich explorative und hypothesenprüfende verfahren zueinander und wohin bewegt sich das feld/bzw sollte es sich bewegen
- wenn wir strukturerkennede bzw. strukturgebene verfahren (zb. cluster analysen) einsetzen, wie koennen/sollten wir gegebene strukturen am besten validieren (und welche epistemologische rolle kommt dabei ggf. simulierten daten zu?)
- was ist verhältnis von linguistischer theorie und methode? gibt es auf der einen seite die theoretiker und auf der anderen die “number-cruncher”?
- sollten wir die konstrukte einer theorie nicht vielleicht über ihr messverfahren operationalisieren, anstatt dies konzeptuell zu tun? ich sag nur: prototypikalität von wortbedeutung und dessen definition über “cognitive saliency, frequency, centrality in some network, time of first attestation, time of acquisition, difficulty for L2 learners,…I could go on ;)…maybe these things should *not* be unified under a single label)
- [to be continued]

inspiriert von dem (von mir so wahrgenommenen) erfolg unserer R gruppe, würde ich für diejenigen, die dazu lust haben, im kommenden SS ein wöchentliches treffen organisieren (denn ich muss ja immer noch nicht unterrichten :) und möchte mich natuerlich trotzdem gern für die belange unseres schönen instituts einsetzen.

so, let me know if you are interested and I will start collecting appropriate materials

cheers,
daniel

BTW: ich schlage übrigens vor, wir lassen die R gruppe einfach weiter laufen - gerne auch in der vorlesungsfreien zeit (wer urlaub macht oder keine lust mehr hat, muss natuerlich nicht kommen…ganz nach onkel humboldt)

27. Januar 2010

Interpreting binomial logistic regression models (session Jan 26)

Abgelegt unter: Allgemein — Tags:, , , , — DW @ 13:56

hallo zusammen,

im anschluss an unsere gestrige diskussion, in der es darum ging, was genau denn nun die “estimates” der ß-koeffizienten ausdrücken, versuche ich mal, etwas licht ins dunkel zu bringen.

also los: verdeutlichen wir uns das ganze mal anhand eines beispiels minimaler komplexität. dazu nehmen wir mal echte daten (nämlich Wiechmann in prep a … siehe “research”; da ist dann n “abstract” zur studie)
sagen wir, wir interessieren uns für die produktion nicht-obligatorischer relativpronomina und wir vermuten, dass die produktion von “that” abhängig ist, vom typ des subjektes des RC

gegeben sind nun: counts der 2 faktoren (relativizer = absent/present & RC.subject = lexical/pronominal)
wir haben n=324 relevante datenpunkte, die sich so verteilen

step1

der x^2 test unten deutet schon an, dass da offensichtlich ein starker zusammenhang besteht (goodbye H0!)

wir können nun auf der grundlage des tables das chancenverhältnis (also das odds ratio) berechnen:
dabei gilt:

A = relativizer omitted (absent) bei lexikalischem subjekt
B = relativizer omitted (absent) bei pronominalem subjekt

odds(A) = p(A)/(1-p(A)) # odds definiert über probabilities

odds ratio = odds(A) / odds(B)

wir können das nun direkt über die kontingenztafel berechnen:

odds(A) = 9/84 # d.h., die chance, dass wir omission bei lexikalischem subjekt haben, ist 9 zu 84
odds(B) = 145/86 # d.h., die chance, dass wir omission bei pronominalem subjekt haben, ist 145 zu 86

wir können das ganze in ein oder zwei schritten ausrechen; letzteres sieht dann so aus:

odds ratio = (9/84) / (145/86)

und das ist equivalent zu

odds ratio = (9*86) / (145*84) # klammerung ist natuerlich unwichtig hier

daraus ergibt sich dann ein wert für das odds ratio von 0.063
in R kann man das übrigens bequem und schnell rechnen, wenn man aus “vcd” die funktion “oddsratio” anwendet:

oddsratio(table, log=F) # bei log = T bekämen wir den natürlichen logarithmus dieses wertes, der als assoziationsmaß oft benutzt wird; aber wir wählen den wert “FALSE”

was sagt und das jetzt?
der wert 0.063 sagt uns, dass die chance, relativizer omission mit lexikalischen subjekten 0.063 mal so hoch ist, wie die chance, relativizer omission mit pronominalen subjekten zu haben.

aber so denkt ja kein mensch; hätten wir die frage bloß umgekehrt gestellt; dann wär alles recht intuitiv:
na gut: tauschen wir halt die spalten für lexical und pronominal (drehen also die perspektive um). dann bekommen wir [ (145*84)/(9*84) = ] 15.73 und das sagt nun, dass die chance, relativizer omission mit pronominalen subjekten 15.73 mal so hoch ist, wie die chance, relativizer omission mit lexikalischen subjekten zu haben.

so weit, so gut
aber was hat das nun mit den koeffizienten in unserem log. reg. model zu tun
um das gaaanz klar zu machen habe ich unsere dependent var, relativizer omission mal umkodiert, so dass
omission = 1 bedeutet, da wurde der relativizer weggelassen und
omission = 0 bedeutet, da wurde der relativizer nicht weggelassen

wir fitten das mal mit “glm” und kriegen diesen output
step2
wir sehen da also einen geschätzten ß-koeffizienten für RC.subjectprn (also pronominal) von 2.75
wenden wir darauf die exponentialfunktion an [in R mit exp(coefficients(model)) , oder meinetwegen auch einfach exp(2.7560)], bekommen wir obigen wert von
exp(coefficient) = 15.73 = odds ratio (aus der perspektive: pronominal zu lexical subject); das bedeutet nun, dass die chance auf relativizer omission fast 16 mal größer ist, wenn das RC-subjekt pronominal ist (ggü. dem fall, dass es lexikalisch ist).

daraus folgt, dass unsere koeffizienten im modell als log(odds ratios) ausgedrückt werden # und nicht als log(odds), bis auf den intercept: da ist es tatsächlich ein ausdruck der odds, aber dazu naechstes mal mehr

ok, hier könnten wir aufhören. aber oft wird dafür argumentiert, die koeffizienten noch weiter zurückzuwandeln, um “changes in predicted probabilities” zu bekommen
kann man ja machen (das manuelle berechnen sollte ja nun klar sein [ p = odds/(1+odds) ], einfacher gehts mit der R-funktion “inv.logit” aus der library “gtools”; lädt man die, kann nun anwenden:

inv.logit(coefficients(model)) und bekommt
für RC.subjectprn einen wert von 0.9402501

und hier wirds haarig - finde ich-, denn nun muessen wir uns ja fragen, was der wert uns nun genau sagen will…
ist die wahrscheinlichkeit für relativizer omission nun um 94% größer, wenn wir es mit pronominalen subjekten zu tun haben, als wenn wir es mit lexikalischen subjekten zu tun haben? … oder gegenüber dem default (also, ich meine, ohne wissen um den faktor)? …oder wie?
und wenn ja, muss man sich nun nicht fragen, ob das tatsächlich leichter zu interpretieren ist als ein odds ratio?

vielleicht wird das klarer, wenn wir uns mal die modellvorhersagen anschauen; dazu koennen wir die function “predict” verwenden (eigentlich predict.glm … aber das peilt R automatisch)

na jut,… dann wollen wir mal:
als erstes berechnen wir die vorhersagen in logits, in der hoffnung, so schneller irgendwelche werte wiederzuerkennen.

predicted.logits = predict(model, type”link”) # type= link spezifiziert hier, dass die werte in logits ausgedrückt werden, denn das ist ja unsere link-funktion

dann plotten wir den kram mal mit
plot(predicted.logits~RC.subject)

und so sieht das dann aus:
step-41
wir sehen auf dem plot die werte -2.23 (für die variante RCsubject=lexical) und 0.52 (für die variante RCsubject=pronominal)
wir koennen das sehen, wenn wir den vektor “predicted.logits” callen; dort wird jeder zelle (factor-level combination) einer der beiden werte zugeordnet; d.h. wir bekommen 324 schätzungen (= sample size); da wir nur einen binaeren faktor im modell haben, bekommen wir auch nur 2 typen von werten, die mit den jeweiligen factor-levels korrespondieren.
die einzelnen vorhersagen koennen wir auch mal plotten mit

plot(predicted.probability, ylim=c(0,1), ylab=”pred. probability for r-omission”, xlab=”observations in data set”)

das sie dann so aus:
step-5
das vergleichen wir nun mit:

predicted.probabilities = predict(model, type=”response”) # type= response spezifiziert hier, dass die werte in wahrscheinlichkeiten ausgedrückt werden, denn wir wollen wissen, wie sich P(Y=1) in abhängigkeit von RC.subject einschätzen laesst. dann mal sehen:

plot(predicted.probabilities~RC.subject) # und das ergibt dann
step-31
die werte dort sind:

0.627 für den fall, dass das RC-subjekt pronominal ist und
0.097 für den fall, dass das RC-subjekt lexikalisch ist

aber das ist nun irgendwie auch n bischen lame, denn das haette ich auch im kopf mit hilfe der kontingenztafel ausgerechnete haben können:
b1

naja…
aber zurück zu dem in (changes in) Pr überführte ß-koeffizienten. der hatte nun aber ja einen wert von 0.9402501. bedeutet das nun, dass die wahrscheinlichkeit für r-omission bei pronominalen subjekten auf 94% geschätzt wurde? das sieht hier ja ganz so aus.
aber das passt aber nicht wirklich zu der “changes in probability”-idee …

zwischenstand: da bleib ich lieber bei den odds ratios

best,
daniel

PS: hier noch ein paar kommentare zu den estimates; speziel den zurückgewandelten logits:

wir wissen ja … :

- logistic slope (= ß-) coefficients can be interpreted as the effect of a one unit change in the X variable on the predicted logits (with the other variables in the model held constant)
- so the estimate indicates how a one unit change in X effects the log of the odds (when the other variables in the models are held constant)

daraus folgt:

- odds ratios in LR can be interpreted as the effect of a one unit change in X in the predicted odds ratio (with the other variables in the model held constant)
- wir bekommen also: odds (if the corresponding variable is incremented by 1) / odds (if the corresponding variable is NOT incremented)
- und das entspricht: P(event| x + 1) / (1 - P(event| x + 1)) / P(event| x) / (1 - P(event| x))

der P wert, den wir aus der anwendung von inv.logit(coefficients) bekommen entspricht nun Odds Ratio / 1 + odds ratio = (15.79/1+15.79 = 0.94) # inv.logit ist in library(gtools)

17. Dezember 2009

Warten auf Weihnachten … und Session 9

Abgelegt unter: Allgemein — DW @ 13:33

hallo zusammen,

hoffe, ihr habt die weihnachtsfeier gut überstanden…schiete, dass ich nicht dabei sein konnte…

jedenfalls hab ich vorhin den workspace und die history von Session 8 hochgeladen. “hausaufgaben” gabs nicht ;)
nach den “ferien” also zum Dienstag, d. 6.1., treffen wir uns dann wieder und schauen uns dann mal das Design-Paket an - würde ich vorschlagen. Wie gesagt, wenn ihr die Baayen-Sachen mal nachmachen wollt, findet sich alles dazu Relevante im Paket “languageR”.

hier noch ein paar nachgedanken zur letzten sitzung:
frage: was sagt uns eigentlich die ANOVA [also anova(model, test="Chisq") ] was wir nicht schon aus “summary (model)” wissen?
maxmod
die anova-funktion erzeugt ja einen “analysis of deviance table” [deviance is the difference between the maximized value of "-2 log L" [also: negative two times the log likelihood, which is a measure of how well the fitted model matches the observed values of the outcome or dependent variable; kernkonzept ist hier "likelihood", das wir nur gaaanz am rande besprochen haben [--> maximum likelihood estimation & method of least squares] schaut einfach mal hier –> http://mathworld.wolfram.com/Likelihood.html ]. hier der output zu obigem model:
anovamaxmod
der “deviance”-ausdruck quantifiziert immer einen vergleich zweier modelle; hier die jeweiligen modelle ohne und mit dem jeweiligen faktor.
wie man dem deviance table entnehmen kann, werden die terme dort schrittweise ge-added und evaluiert. der erstgenannte term (extern.role) wird demnach mit dem null modell verglichen und seine aufnahme in das modell reduziert die deviance um 15.649 auf (33.09 - 15.649 =) 17.441; wird danach der term extern.role hinzugefügt, reduziert sich die deviance um weitere 14.861 punkte auf 2.58. die verbesserung ist also etwas geringer als im ersten schritt. das ist aber generell zu erwarten, denn das model incl. einem erklärenden faktor ist natuerlich schwerer zu verbessern als das null modell. aus diesem grund ist die reihenfolge der aufnahme der faktoren wichtig. hier der deviance table mit umgekehrter reihenfolge:
altmod
die umgekehrter reihenfolge laesst den faktor extern.role wichtiger erscheinen als zuvor, denn in der ersten reihenfolge war die deviance-verkleinerung 33.09 - 15.649 (intern) - 14.861 (extern); in der alternativen reihenfolge erhalten wir denselben gesamtwert in den schritten 33.09 - 21.6 (extern) - 8.9 (intern) = 2.58.
letztlich behalten wir aber beide faktoren, da beide in beiden reihenfolgen stat. signifikante verbesserungen des modells erzeugen.
wir können die anova funktion so also zur modellvereinfachung nutzen, indem wir die faktoren aus dem modell entfernen, die nicht als stat. sig. eingestuft werden, müssen dabei aber vorsichtig sein und ggf. verschiedene (–>alle) reihenfolgen brücksichtigen.

aber wir haben unsere modelle (contrast daten) doch auf der grundlage der summary funktion vereinfacht…war das denn nun falsch?
naaa, das war bisher ok, denn alle unsere faktoren waren binär. die summary-funktion evaluiert ja jeden factor-level ggü. dem jeweiligen default-level des faktor (–>derjenige factor-level, dessen name alphabetisch erstgenannt ist). der nutzen der anova für den prozess der modellvereinfachung - darauf hatten wir uns ja bereits geeinigt - liegt in der tatsache das sie erlaubt, die relevanz eines faktors über seine levels hinweg zu beurteilen, was immer dann hilfreich ist, wenn unsere faktoren mehr als 2 levels haben.
[to be continued]

Ein schönes Fest, guten Rutsch und alles,
Daniel

9. Dezember 2009

Session 8: A first look at ~

Abgelegt unter: Allgemein — DW @ 15:27

für diejenigen, die den Manning-Text gelesen haben –> dort heisst es:

lrm [das ist die funktion aus dem Design-package, die log. regression modelle anpasst] has a really nice option to plot the logit coefficients (turned back into probabilities) for each level of each factor. AFAIK, you can””t do this with glm

diese plots hab ich gestern gaaanz zum schluss gezeigt (und war ganz euphorisch. egal…jedenfalls geht es auch ohne “design” (zumindest wenn man “MASS” lädt) und sogar etwas schöner; hier ein bespiel…

logit coefficient (back to Pr) for levels of extern.height

logit coefficient (back to Pr) for levels of extern.height

wir besprechen das wohl alles in der übernächsten sitzung; ich werd zusehen (<– die konstruktion ist vielleicht ungrammatisch in euren dialekten ;) , dass wir erstmal ohne “Design” auskommen können, um die Dinge nicht komplizierter als notwendig zu machen.

OK,
best,
daniel

Session 7: Model simplification

Abgelegt unter: Allgemein — DW @ 11:20

hallo,

gestern haben wir ne ganze menge geschafft - ich war zumindest ganz zufrieden. wir haben nun die ersten schritte hin zu einem vernünftigen einsatz stat. modelle gemacht und uns mit der standard R-implementation (glm) ansatzweise vertraut gemacht. wenn wir alle größen verstehn, die R im summary-output gibt, dann ist schon sehr viel gewonnen (dazu noch ein kleiner tipp: fügt am besten immer das argument “correlation =T” hinzu (also summary(model, correlation = T); damit bekommt ihr zu den ganzen dingen, die wir gestern besprochen haben noch eine korrelationsmatrix der koeffizienten; stark korrelierte variablen bringen eine gewisse redundanz in unsere erklärung; dazu bald mehr).

für diejenigen unter uns, die in der letzten zeit (oder vielleicht generell) eher wenig erfahrung mit stat. konzepten hatten, muss das hier natuerlich ein wenig heftig sein - denn das thema ist ja bereits recht “advanced” und setzt eine menge fundamentalwissen voraus. aber vielleicht koennen wir die lücken erkennen und quasi rückschauend systematisch schliessen. zur naechsten sitzung hatten wir vereinbart, dort anzusetzen und aus baayen (2008) folgende seiten durchzuackern!

Baayen (2008: 165-169) & (2008:195-202)

der gute harald macht alles idR ziemlich krass-gut (!), neigt allerdings dazu, seinen leser hin und wieder abzuschuetteln (zumindest ging es mir des oefteren so; wenn man sich wieder rangekämpft hat, weiss man die baayen-power :) aber wieder zuschätzen) - ich weiss noch nicht, ob der Baayen-text generell zugänglich genug ist; wir koennen ja mal sehen…

ihr werdet sehen, dass baayen auch das “dependent-as-success/failure-matrix” format benutzt. nächstes mal schauen wir uns nochmal an, wie wir aus der “raw data”-matrix schnell zu diesem format kommen (easy):

wer schonmal ein weing probieren will:
wenn “a” unsere daten sind, die so angeordnet sind, wie sie erhoben werden sollten, so dass also jede spalte eine variable benennt und jede zeile einen fall beschreibt, koennen wir einfach folgendes machen:

new.dataframe=as.data.frame(table(a)) # von hier an ists dann noch kleinkram

outlook: likelihood profiling
"Profile Plot" für faktoren des MinAdModells von gestern (contrast data)

und zum schluss, ich wollte eben die aktuelle version meiner präsi und den R-workspace hochladen, bekomme hier aber aus mir unerklärlichen gründen grad keinen FTP-zugriff auf meine seite. ich probiers aber mutig weiter und sag dann nochmal bescheid…

ok - schönes WE und
best,
daniel

2. Dezember 2009

Session 6: GLMs and Binomial Logistic Regression

Abgelegt unter: Allgemein — DW @ 18:33

gestern haben wir ja mit der besprechung der präsentation weitergemacht und haben uns eine (vermeintlich inadequate) modelstruktur in R angeschaut. diese hatte ja folgende form:
attach(data.dataframe.as.typically.collected) # each row is case
model < - glm ( language ~ pred1 + pred2 + ... + interaction(s), family = binomial)
hier ein bsp:
alt(ernative).mod(el) ist ein generalisiertes lineares modell (glm), in dem die binaere variable "language" als funktion der 3 variablen "embedding" (2 level: center vs. right embedding), ani(macy of the).head (noun of RC) (2 levels: +/-), sowie extern.height (2 levels: high/low ~ kopf is argument oder adjunkt), sowie zweier interaktionen (die doppelpunkt-ausdrücke) modelliert wurde. hier der R output nach dem call:
altmod
die variable “language” ist hier ein vektor/eine liste von 500 verketteten variablenausprägungen des o.g. faktors.
die vielleicht zu präferiende (ich bin mir da noch nicht so sicher) struktur sieht vor, die “dependent var” als “success/failure-array” anzuordnen (wie wir es uns gestern angeschaut haben). tut man dies und hält die systematische komponente stabil, bekommt man das hier:
logmod
mal abgesehen davon, dass die vorzeichen der koeffizienten komplementär sind (was leicht zu beheben ist, indem man die factor-levels einfach derart umbenennt, dass ihre alphabetische reihenfolge umgekehrt wird), bekommen wir im prinzip das gleiche ergebnis. die degrees of freedom der modelle sind aufgrund der unterschiedlichen dateneingabe unterschiedlich, aber die differenz zw. null deviance und residual deviance ist in beiden fällen identisch, nämlich 127.63. (wir haben noch nicht geklärt, was es damit aufsicht hat, werden das aber bald tun). der wert des AIC ist auch identisch. die “fisher scoring iterations” sind quasi gleich kurz (–>gut).

im moment sieht es für mich so aus, als hatten wir hier eine wahl bezgl. der dateneingabe (aber ich les das nochmal nach).
apropos lesen: wir (also ich) muesen nun mal nach texten ausschau halten, die geeignet sind euch schnell und einfach in die lage zu verstzen die ganzen statistischen kenngrössen, diie R da ausspuckt zu verstehen. ich kuemmer mich morgen mal um die textauswahl (alle bücher im büro). schaut euch doch bitte mal das file “logistic.pdf”, welches im DL bereich hier liegt; vielleicht setzt das zuviel voraus…ich weiss nicht…schaut einfach mal.

best,
d.

26. November 2009

Session 5: Stat. Modeling and GLMs (cont.)

Abgelegt unter: Allgemein — DW @ 12:40

hallo zusammen,

in der letzten sitzung haben wir ein paar grundsätze des statistischen modellierens angesprochen (balancing model complexity and descriptive adequacy/predictive power). ich habe vorhin -neben dem R-workspace zu session 3- meine präsentation dazu hochgeladen (pptx & pdf). für die, die nicht da sein konnten und die, die alles bereits wieder vergessen haben ;) –> wir haben noch nicht über GLMs gesprochen und die ersten slides (zu components of a GLM) lässig uebersprungen, um uns einem einfachen beispiel zuzuwenden (p. 16 +), welches die methode der kleinsten quadrate illustriert. dort hatten wir es mit der modellierung einer kontinuierlichen variable y durch genau eine ebenfalls kontinuierlichen variable x zu tun.

ich würde in der nächsten sitzung dort gern ansetzen und im idealfall besprechen, wie man solche ordinären linearen regressionsmodelle generalisieren kann und im speziellen auf den fall hinarbeiten, dass die zu erklärende variable (response) genau 2 ausprägungen hat und wir deren verhalten als funktion mehrerer kategorialen variablen (predictors) erklären wollen. um die logik der einfachen regression auf solche fälle anwenden zu können, müssen wir uns einer reihe von “tricks” bedienen und um diese zu verstehen werden wir uns nächstes mal mit den drei komponenten eines “verallgemeinerten linearen modells” (=generalized linear model (GLM)) beschäftigen, nämlich

1. Random component (Zufallskomponente)
2. Systematic component (Systematische Komponente)
3. Link function ((Parametrische) Link-Komponente)

Wir werden dann sehen, dass das was man als “logistische regression” bezeichnet, ein spezieller Sub-Typ von GLM ist, der geeignet ist, o.g. Fälle (binäre dependent ~ k kategoriale Covariablen) zu modellieren. das schauen wir uns dann kommende woche an.

btw, die kommentare zu den sitzungen sind ja (noch) recht dünn…anstelle potentielle fragen zu themen vergangener sitzungen in extenso in den jeweilig folgenden sitzungen zu besprechen, bietet es sich an, dieses forum vielleicht mit solchen fragen zu bestücken. die tatsache, dass man seine fragen hier natuerlich schriftlich hinterlegt, hat zudem den vorteil, dass man sich mehr gedanken um deren formulierung macht, was ja in vielen faellen zum verständnis beiträgt. ausserdem schaufelt das natuerlich eine menge zeit frei.

vorbereiten könnt ihr euch mit der vertieften lektüre des crawley textes, den karsten rumgeschickt hatte und wenn möglich, indem ihr euch die binomialverteilung mal (wieder) anschaut. In der Regel sind die Wiki Beiträge zu diesen Dingen mE extrem schlecht didaktisiert und listen eigentlich nur Eigenschaften. Schaut doch mal hier(super online textbook), hier (nette illustration von harald kraus (kein plan, wer das ist,…aber egal)), und hier (get yourself a cup of coffee (or green tea if you must) and enjoy).

ok, dann bis spätestens dienstag, daniel

19. November 2009

kolloq -> stat.group

hier ein kleiner nachtrag zu meinem kolloq-talk, der irgendwie nicht so gelaufen ist, wie ich mir das vorgestellt habe…egal. jedenfalls ist das hier der typ von plot, den man mE zu logistischen regressionsmodellen berichten sollte. man sieht dort die logit-koeffizienten zurückgewandelt in wahrscheinlichkeiten.

ok, best,
danielpredict_donor_l1

Ältere Artikel »

Powered by WordPress ( WordPress Deutschland )