lsqnonneg o.d.
Idag har jag studerat medelvärdessavvikelser i genpar hos höns. Sådana tendenser kan leda till många saker. I detta fall ledde det till avslöjandet att ett antal loci var felplacerade relativt den ursprungliga sökning över genomet som givit upphov till dem. Mest avgörande var att ett lokus hoppade från slutet av en kromosom till början av nästa, vilket skapade en kraftig länkning där ingen sådan var att förvänta. Nu hade det ena av dessa ursprungligen bedömts vara insignifikant, men vi får väl se vad som händer...
Jag har ävenledes promenerat i skogen utanför BMC. Inte den egentliga Stadsskogen, utan den mer eller mindre avsnörda stumpen mellan Grindstugan, Rosendalsgymnasiet och spårtaxiförsöket (?). Nåja, det är ett ställe där man faktiskt hör mer fågelkvitter än fläktgallergnissel (som även har en fågelkvitterartad karaktär), och där man under sitt spankulerande kunde reflektera över linjär algebra i huvudet.
Jag har nämligen insett det i Gauss-elimination tämligen välkända faktum att godtyckliga rader (och kolonner, för den delen) kan multipliceras, utan att slutresultatet påverkas. I ett överbestämt system påverkas förstås valet av lösning av amplituden på varje rad i systemet. Däremot är tecknet förstås oväsentligt. (Minsta kvadrat-avvikelse, duh!) Det är förstås inte så lyckat om man bestämt att vissa individer skall kompensera genom att få negativa vikter. Rättare sagt var de vikter jag har bestämt kvadraten på de vikter man bör använda i systemet. Om jag bara faktiskt läst något i artiklar som behandlar imputationsmetoderna, och inte bara artiklar som refererar dem, hade jag väl insett det.
Nåväl, i skogen funderade jag över hur man bäst löser ett sådant system. Jag hade någon idé om successiva additioner av en alltigenom positiv vektor, lite à la positiv lösning till kinesisk restsats. En annan variant vore ett röstningsförfarande, där vikterna skulle utgå från 1 och sedan enbart successivt höjas tills ursprungsekvationerna (efter normering) vore uppfyllda.
När jag återvände insåg jag dock att det rakaste vore att sätta samman mer relevanta Google-termer och hitta lösningen till problemet. Detta slutade med upptäckten av lsqnonneg
, som gör just detta i matlab. Dock verkar funktionen ha utökats mellan R14 och 2007a, så att man i den senare lättare kan följa konvergensen och modifiera parametrarna under anropets gång. Det visar sig nämligen ta några timmar för att hitta lösningen för 20 loci.
Hur många timmar det rör sig om vet jag inte riktigt, ty jag ägnade kvällen åt middag med familjen, följt av medelklasskultur av högsta klass, Orphei drängar (plus trombon) i universitetsaulan. En del ganska vackert, men jag hemföll även till allmänna, samt linjalginriktade, funderingar under en del av tiden.
I stadens centrum efter avslutad serenad (precis där min cykel skulle avhämtas) kunde man även höra något mindre koordinerade, men mer alkoholiserade, mansröster besjunga specifika mellan könen homologa mänskliga anatoma strukturer av stor känslighet. Något påfrestande, kan tyckas.
Då jag saknar sinne för större litterära grepp är redogörelsen kronologisk. Jag kan därmed meddela att denna matlabfunktionernas kung hade fullgjort sitt värv när jag kom hem, även om programmet konstant säger "java.lang.OutOfMemoryError" nu. Trots detta har jag fått ut vikterna, kört dem i mitt separata länkningstestprogram, och kunnat konstatera att avvikelserna som högst är 0,9 %. Detta är en framgång. Lite mindre glädjande är det faktum att 253 av 765 djur har erhållit vikten 0. Vissa generaliserade versioner av den använda algoritmen kan placera gränsen vid ett annat värde än 0. Man skulle då kunna realisera ett villkor motsvarande det vid mitt tänkta röstningsförfarande, även om man inte kan placera det vid 1, då det bara skulle resultera i översläng, eftersom det linjära systemet inte kan inkludera den implicita normeringen.
Inga kommentarer:
Skicka en kommentar