From: John Darrington Date: Fri, 25 Dec 2009 09:51:01 +0000 (+0100) Subject: Merge branch 'master' into output X-Git-Tag: sav-api~452 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b71948cd57dbd2787cb4c50525b957e9be8a62b;hp=7c08a6e1009cf60847e770a77a73c650e9326379;p=pspp Merge branch 'master' into output Conflicts: configure.ac --- diff --git a/configure.ac b/configure.ac index 1dc8e55896..fd60137ca2 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,8 @@ if test "$with_cairo" != no; then AC_DEFINE([HAVE_CAIRO], 1, [Define to 1 if Cairo and Pango are available.])], [PSPP_REQUIRED_PREREQ([cairo 1.5 or later and pango 1.20 or later (or use --without-cairo)])]) + AC_PATH_PROG([XMLLINT], [xmllint], [echo], [$PATH]) + AC_SUBST(XMLLINT) fi # Support for GUI. diff --git a/doc/automake.mk b/doc/automake.mk index b24eb51e7e..0963e1fd14 100644 --- a/doc/automake.mk +++ b/doc/automake.mk @@ -58,6 +58,7 @@ doc/pspp.xml: doc/pspp.texinfo $(doc_pspp_TEXINFOS) $(MAKEINFO) $(AM_MAKEINFOFLAGS) --docbook -I $(top_srcdir) \ $(top_srcdir)/doc/pspp.texinfo -o - \ | $(SED) 's/Time-&-Date/Time-\&-Date/g' > $@ + $(XMLLINT) --output /dev/null $@ 2>&1 2> /dev/null || ( $(RM) $@ && false ) docbookdir = $(docdir) docbook_DATA = doc/pspp.xml diff --git a/doc/pspp.texinfo b/doc/pspp.texinfo index 562b328dba..830e82e461 100644 --- a/doc/pspp.texinfo +++ b/doc/pspp.texinfo @@ -65,9 +65,8 @@ modify this GNU manual.'' @insertcopying @end titlepage -@chapheading Acknowledgements -The authors wish to thank -Network Theory Ltd +@c @chapheading Acknowledgements +The authors wish to thank Network Theory Ltd @url{http://www.network-theory.co.uk} for their financial support in the production of this manual. diff --git a/po/ca.po b/po/ca.po index b63ced03cf..817a4f4fa7 100644 --- a/po/ca.po +++ b/po/ca.po @@ -4,12 +4,14 @@ # Francisco J. Miguel Quesada , 2009. # Palmira Payá Sanchez, 2009. # Javier Gómez Serrano, 2009. +# +# msgid "" msgstr "" "Project-Id-Version: pspp-0.7.2-pre1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" "POT-Creation-Date: 2009-09-08 21:57-0700\n" -"PO-Revision-Date: 2009-12-18 14:50+0100\n" +"PO-Revision-Date: 2009-12-20 23:44+0100\n" "Last-Translator: Francesc Josep Miguel Quesada \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" @@ -3832,1628 +3834,1524 @@ msgid "PSPP information" msgstr "Informació del PSPP" #: src/ui/gui/message-dialog.c:222 +#, fuzzy msgid "The PSPP processing engine reported the following message:" msgid_plural "The PSPP processing engine reported the following messages:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "El processador de PSPP ha donat el seguent missatge:" +msgstr[1] "El processador de PSPP ha donat el seguent missatge:" #: src/ui/gui/message-dialog.c:229 -#, c-format +#, fuzzy, c-format msgid "The PSPP processing engine reported %d message." msgid_plural "The PSPP processing engine reported %d messages." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "El processador de PSPP ha donat el missatge %d." +msgstr[1] "El processador de PSPP ha donat el missatge %d." #: src/ui/gui/message-dialog.c:236 -#, c-format +#, fuzzy, c-format msgid "%d of these messages are displayed below." msgid_plural "%d of these messages are displayed below." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d d'aquests missatges es mostren a continuació." +msgstr[1] "%d d'aquests missatges es mostren a continuació." #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" -msgstr "" +msgstr "Valor incorrecte pel tipus de variable" #: src/ui/gui/missing-val-dialog.c:134 src/ui/gui/missing-val-dialog.c:143 msgid "Incorrect range specification" -msgstr "" +msgstr "Especificació d'interval incorrecte" #: src/ui/gui/oneway-anova-dialog.c:331 #, c-format msgid "Contrast %d of %d" -msgstr "" +msgstr "Contrast %d de %d" #: src/ui/gui/psppire.c:247 -#, fuzzy msgid "_Reset" -msgstr "Reiniciar" +msgstr "_Reiniciar" #: src/ui/gui/psppire.c:248 msgid "_Select" -msgstr "" +msgstr "_Selecionar" #: src/ui/gui/psppire-data-editor.c:951 -#, fuzzy msgid "Data View" -msgstr "arxiu de dades" +msgstr "Vista de dades" #: src/ui/gui/psppire-data-editor.c:954 -#, fuzzy msgid "Variable View" -msgstr "Variable" +msgstr "Vista de Variables" #: src/ui/gui/psppire-data-store.c:744 msgid "var" -msgstr "" +msgstr "var" #: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699 #: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719 #: src/ui/gui/psppire-var-store.c:825 #, c-format msgid "%d" -msgstr "" +msgstr "%d" #: src/ui/gui/psppire-data-window.c:213 msgid "Transformations Pending" -msgstr "" +msgstr "Transformacions pendents" #: src/ui/gui/psppire-data-window.c:229 msgid "Filter off" -msgstr "" +msgstr "Filtre desactivat" #: src/ui/gui/psppire-data-window.c:243 #, c-format msgid "Filter by %s" -msgstr "" +msgstr "Filtrat per %s" #: src/ui/gui/psppire-data-window.c:264 msgid "No Split" -msgstr "" +msgstr "No dividit" #: src/ui/gui/psppire-data-window.c:273 msgid "Split by " -msgstr "" +msgstr "Dividit per " #: src/ui/gui/psppire-data-window.c:301 -#, fuzzy msgid "Weights off" -msgstr "Pes:" +msgstr "Sense Ponderar:" #: src/ui/gui/psppire-data-window.c:315 -#, fuzzy, c-format +#, c-format msgid "Weight by %s" -msgstr "Pes:" +msgstr "Ponderat per %s" #: src/ui/gui/psppire-data-window.c:383 src/ui/gui/data-editor.glade:702 msgid "Open" -msgstr "" +msgstr "Obert" #: src/ui/gui/psppire-data-window.c:391 src/ui/gui/psppire-data-window.c:593 -#, fuzzy msgid "System Files (*.sav)" -msgstr "Arxiu de Sistema." +msgstr "Arxius de Sistema (*.sav)" #: src/ui/gui/psppire-data-window.c:397 src/ui/gui/psppire-data-window.c:599 -#, fuzzy msgid "Portable Files (*.por) " -msgstr "arxiu portàtil" +msgstr "Arxius Portables (*.por)" #: src/ui/gui/psppire-data-window.c:403 src/ui/gui/psppire-data-window.c:605 #: src/ui/gui/psppire-syntax-window.c:298 #: src/ui/gui/psppire-syntax-window.c:385 msgid "All Files" -msgstr "" +msgstr "Tots els arxius" #: src/ui/gui/psppire-data-window.c:585 src/ui/gui/data-editor.glade:712 -#, fuzzy msgid "Save" -msgstr "Escala" +msgstr "Desar" #: src/ui/gui/psppire-data-window.c:613 -#, fuzzy msgid "System File" -msgstr "Arxiu de Sistema." +msgstr "Arxiu de Sistema" #: src/ui/gui/psppire-data-window.c:618 -#, fuzzy msgid "Portable File" -msgstr "arxiu portàtil" +msgstr "Arxiu Portable" #: src/ui/gui/psppire-data-window.c:768 msgid "Font Selection" -msgstr "" +msgstr "Selecció de font" #: src/ui/gui/psppire-data-window.c:836 msgid "Sort Ascending" -msgstr "" +msgstr "Ordenació ascendent" #: src/ui/gui/psppire-data-window.c:842 msgid "Sort Descending" -msgstr "" +msgstr "Ordenació descendent" #: src/ui/gui/psppire-data-window.c:847 src/ui/gui/psppire-data-window.c:937 #: src/ui/gui/data-editor.glade:174 src/ui/gui/data-editor.glade:843 -#, fuzzy msgid "Insert Variable" -msgstr "Variable de prova" +msgstr "Insertar Variable" #: src/ui/gui/psppire-data-window.c:850 src/ui/gui/psppire-data-window.c:904 #: src/ui/gui/psppire-data-window.c:940 src/ui/gui/psppire-data-window.c:1307 #: src/ui/gui/psppire-data-window.c:1325 msgid "Clear" -msgstr "" +msgstr "Eliminar" #: src/ui/gui/psppire-data-window.c:901 src/ui/gui/data-editor.glade:831 msgid "Insert Case" -msgstr "" +msgstr "Insertar Cas" #: src/ui/gui/psppire-data-window.c:1185 -#, fuzzy msgid "Open a data file" -msgstr "arxiu de dades" +msgstr "Obrir un arxiu de dades" #: src/ui/gui/psppire-data-window.c:1203 -#, fuzzy msgid "New data file" -msgstr "arxiu de dades" +msgstr "Nou arxiu de dades" #: src/ui/gui/psppire-data-window.c:1218 -#, fuzzy msgid "Import text data file" -msgstr "arxiu de dades" +msgstr "Importar arxiu de text" #: src/ui/gui/psppire-data-window.c:1234 src/ui/gui/psppire-data-window.c:1250 -#, fuzzy msgid "Save data to file" -msgstr "arxiu de dades" +msgstr "Desar dades a arxiu" #: src/ui/gui/psppire-data-window.c:1288 msgid "Show/hide value labels" -msgstr "" +msgstr "Mostra/Oculta etiquetes de valor" #: src/ui/gui/psppire-data-window.c:1308 msgid "Delete the cases at the selected position(s)" -msgstr "" +msgstr "Esborra els casos a la(es) posició(ns) seleccionada(es)" #: src/ui/gui/psppire-data-window.c:1326 -#, fuzzy msgid "Delete the variables at the selected position(s)" -msgstr "Nom de la variable %s duplicat en la posició %d." +msgstr "Esborra les variables a la posició(ns) selecconada(es)" #: src/ui/gui/psppire-data-window.c:1344 msgid "Create a new variable at the current position" -msgstr "" +msgstr "Crear una nova variable a la posició seleccionada" #: src/ui/gui/psppire-data-window.c:1359 msgid "Create a new case at the current position" -msgstr "" +msgstr "Crear un nou cas a la posició actual" #: src/ui/gui/psppire-data-window.c:1375 msgid "Jump to a Case in the Data Sheet" -msgstr "" +msgstr "Anar a un cas a la Matriu de Dades" #: src/ui/gui/psppire-data-window.c:1391 -#, fuzzy msgid "Weight cases by variable" -msgstr "Mitjana Ponderada" +msgstr "Pondera casos per la variable" #: src/ui/gui/psppire-data-window.c:1405 -#, fuzzy msgid "Transpose the cases with the variables" -msgstr "THRU no es permet amb variables de cadena." +msgstr "Transposar casos i variables" #: src/ui/gui/psppire-data-window.c:1419 -#, fuzzy msgid "Split the active file" -msgstr "Documents a l'arxiu actiu:" +msgstr "Dividir l'arxius actiu" #: src/ui/gui/psppire-data-window.c:1434 -#, fuzzy msgid "Sort cases in the active file" -msgstr "Documents a l'arxiu actiu:" +msgstr "Ordenar casos a l'arxiu actiu" #: src/ui/gui/psppire-data-window.c:1448 -#, fuzzy msgid "Select cases from the active file" -msgstr "Documents a l'arxiu actiu:" +msgstr "Seleccionar cassos de l'arxiu actiu" #: src/ui/gui/psppire-data-window.c:1462 msgid "Compute new values for a variable" -msgstr "" +msgstr "Calcular nous valors per a la variable" #: src/ui/gui/psppire-data-window.c:1476 msgid "Perform one way analysis of variance" -msgstr "" +msgstr "Realitza análisi de la variancia d'un factor" #: src/ui/gui/psppire-data-window.c:1491 msgid "Calculate T Test for samples from independent groups" -msgstr "" +msgstr "Calcula proves T per a mostres de grups independents" #: src/ui/gui/psppire-data-window.c:1505 msgid "Calculate T Test for paired samples" -msgstr "" +msgstr "Calcula proves T per a mostres aparellades" #: src/ui/gui/psppire-data-window.c:1519 msgid "Calculate T Test for sample from a single distribution" -msgstr "" +msgstr "Calcula proves T per a mostra d'una distribució única" #: src/ui/gui/psppire-data-window.c:1534 msgid "Commentary text for the data file" -msgstr "" +msgstr "Comentario textual per a l'arxiu de dades" #: src/ui/gui/psppire-data-window.c:1560 -#, fuzzy msgid "Rank Cases" -msgstr "Rangs" +msgstr "Rang de cassos" #: src/ui/gui/psppire-data-window.c:1574 msgid "Recode values into the same variables" -msgstr "" +msgstr "Recodificar valors en les mateixes variables" #: src/ui/gui/psppire-data-window.c:1588 msgid "Recode values into different variables" -msgstr "" +msgstr "Recodificar valors a diferents variables" #: src/ui/gui/psppire-data-window.c:1602 -#, fuzzy msgid "Jump to variable" -msgstr "Variable de prova" +msgstr "Anar a la variable" #: src/ui/gui/psppire-data-window.c:1615 msgid "Calculate descriptive statistics (mean, variance, ...)" -msgstr "" +msgstr "Calcular estadístques descriptives (mitjana, variancia,...)" #: src/ui/gui/psppire-data-window.c:1629 msgid "Generate frequency statistics" -msgstr "" +msgstr "Generar estadístiques de freqüències" #: src/ui/gui/psppire-data-window.c:1643 msgid "Generate crosstabulations" -msgstr "" +msgstr "Generar tabulació encreuada" #: src/ui/gui/psppire-data-window.c:1658 msgid "Examine Data by Factors" -msgstr "" +msgstr "Examinar les dades segons Factors" #: src/ui/gui/psppire-data-window.c:1672 msgid "Estimate parameters of the linear model" -msgstr "" +msgstr "Estimar parámetres del model lineal" #: src/ui/gui/psppire-data-window.c:1686 src/ui/gui/reliability.glade:7 msgid "Reliability Analysis" -msgstr "" +msgstr "Anàlsisi de fiabilitat" #: src/ui/gui/psppire-data-window.c:1849 msgid "Split the window vertically and horizontally" -msgstr "" +msgstr "Dividir la finestra verticalment i horizontalment" #: src/ui/gui/psppire-data-window.c:1891 msgid "Data Editor" -msgstr "" +msgstr "Editor de Dades" #: src/ui/gui/psppire-output-window.c:269 -#, fuzzy msgid "Output Viewer" -msgstr "Format de sortida" +msgstr "Vista de resultats" #: src/ui/gui/psppire-syntax-window.c:265 -#, fuzzy, c-format +#, c-format msgid "Saved file \"%s\"" -msgstr "llegint l'arxiu de caràcter \"%s\"" +msgstr "Desat com a arxiu \"%s\"" #: src/ui/gui/psppire-syntax-window.c:284 msgid "Save Syntax" -msgstr "" +msgstr "Desar sintaxi" #: src/ui/gui/psppire-syntax-window.c:292 #: src/ui/gui/psppire-syntax-window.c:379 msgid "Syntax Files (*.sps) " -msgstr "" +msgstr "Arxius de Sintàxi (*.sps) " #: src/ui/gui/psppire-syntax-window.c:371 msgid "Open Syntax" -msgstr "" +msgstr "Obrir sintaxi" #: src/ui/gui/psppire-syntax-window.c:551 -#, fuzzy msgid "Syntax Editor" -msgstr "error de sintaxi" +msgstr "Editor de sintaxi" #: src/ui/gui/psppire-syntax-window.c:565 -#, fuzzy, c-format +#, c-format msgid "Cannot load syntax file '%s'" -msgstr "no es pot obrir l'arxiu de caràcter \"%s\"" +msgstr "No es pot obrir l'arxiu de sintaxi \"%s\"" #: src/ui/gui/psppire-var-sheet.c:533 src/ui/gui/psppire-var-store.c:832 msgid "Name" -msgstr "" +msgstr "Nom" #: src/ui/gui/psppire-var-sheet.c:534 src/ui/gui/psppire-var-store.c:833 #: src/ui/gui/psppire.glade:2099 src/language/stats/crosstabs.q:1310 -#, fuzzy msgid "Type" msgstr "Tipus:" #: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:834 #: src/ui/gui/psppire.glade:2020 msgid "Width" -msgstr "" +msgstr "Ample" #: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:835 msgid "Decimals" -msgstr "" +msgstr "Decimals" #: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:837 -#, fuzzy msgid "Values" -msgstr "Valor" +msgstr "Valores" #: src/ui/gui/psppire-var-sheet.c:539 src/ui/gui/psppire-var-store.c:838 #: src/language/stats/crosstabs.q:844 src/language/stats/examine.q:1215 #: src/language/stats/frequencies.q:1119 src/language/stats/frequencies.q:1401 -#, fuzzy msgid "Missing" -msgstr "Perduts N" +msgstr "Perduts" #: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:840 msgid "Align" -msgstr "" +msgstr "Aliniament" #: src/ui/gui/psppire-var-sheet.c:542 src/ui/gui/psppire-var-store.c:841 -#, fuzzy msgid "Measure" -msgstr "Mesura: %s" +msgstr "Mesura" #: src/ui/gui/psppire-var-store.c:622 src/ui/gui/var-sheet-dialogs.glade:43 -#, fuzzy msgid "Comma" -msgstr "Gamma" +msgstr "Coma" #: src/ui/gui/psppire-var-store.c:623 src/ui/gui/var-sheet-dialogs.glade:59 msgid "Dot" -msgstr "" +msgstr "Punt" #: src/ui/gui/psppire-var-store.c:624 msgid "Scientific" -msgstr "" +msgstr "Científic" #: src/ui/gui/psppire-var-store.c:625 src/ui/gui/var-sheet-dialogs.glade:91 -#, fuzzy msgid "Date" -msgstr "Enganxa" +msgstr "Data" #: src/ui/gui/psppire-var-store.c:626 src/ui/gui/var-sheet-dialogs.glade:107 msgid "Dollar" -msgstr "" +msgstr "Dolar" #: src/ui/gui/psppire-var-store.c:627 msgid "Custom" -msgstr "" +msgstr "Usuari" #: src/ui/gui/psppire-window.c:97 #, c-format msgid "%s %s PSPPIRE %s" -msgstr "" +msgstr "%s %s PSPPIRE %s" #: src/ui/gui/psppire-window.c:480 #, c-format msgid "Save the changes to \"%s\" before closing?" -msgstr "" +msgstr "Desa el canvis a \"%s\" abans de sortir?" #: src/ui/gui/psppire-window.c:487 #, c-format msgid "If you don't save, changes from the last %ld seconds will be permanently lost." -msgstr "" +msgstr "Si no es desa, els canvis dels darrers %ld segons es perdran permanentment." #: src/ui/gui/psppire-window.c:491 -#, fuzzy msgid "Close _without saving" -msgstr "%s sense %s." +msgstr "Tancar sense desar" #: src/ui/gui/recode-dialog.c:881 msgid "Recode into Different Variables" -msgstr "" +msgstr "Recodifica en variables Diferents" #: src/ui/gui/recode-dialog.c:884 msgid "Recode into Same Variables" -msgstr "" +msgstr "Recodifica en les Mateixes variables" #: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014 msgid "Old" -msgstr "" +msgstr "Antic" #: src/ui/gui/recode-dialog.c:927 src/ui/gui/recode-dialog.c:1022 msgid "New" -msgstr "" +msgstr "Nou" #: src/ui/gui/recode-dialog.c:1270 msgid "Recode into Different Variables: Old and New Values " -msgstr "" +msgstr "Recodifica en variables Diferents: Antcs y Nous valors " #: src/ui/gui/recode-dialog.c:1271 msgid "Recode into Same Variables: Old and New Values" -msgstr "" +msgstr "Recodifica en les mateixes variables: Antics y Nous valors" #: src/ui/gui/regression-dialog.c:41 -#, fuzzy msgid "Coeff" -msgstr "desactivat" +msgstr "Coef." #: src/ui/gui/regression-dialog.c:42 src/language/stats/regression.q:159 msgid "R" -msgstr "" +msgstr "R" #: src/ui/gui/regression-dialog.c:43 msgid "Anova" -msgstr "" +msgstr "Anova" #: src/ui/gui/regression-dialog.c:44 msgid "Bcov" -msgstr "" +msgstr "Bcov" #: src/ui/gui/select-cases-dialog.c:82 #, c-format msgid "Approximately %3d%% of all cases." -msgstr "" +msgstr "Aproximadament %3d%% de tots els casos." #: src/ui/gui/select-cases-dialog.c:83 #, c-format msgid "Exactly %3d cases from the first %3d cases." -msgstr "" +msgstr "Exactament %3d casos dels primers %3d casos." #: src/ui/gui/select-cases-dialog.c:223 #, c-format msgid "%d thru %d" -msgstr "" +msgstr "%d fisn a %d" #: src/ui/gui/text-data-import-dialog.c:461 -#, fuzzy, c-format +#, c-format msgid "Could not open \"%s\": %s" -msgstr "no es pot trobar el caràcter \"%s\"" +msgstr "No es pot obrir \"%s\": %s" #: src/ui/gui/text-data-import-dialog.c:477 -#, fuzzy, c-format +#, c-format msgid "Error reading \"%s\": %s" -msgstr "error de lectura \"%s\"" +msgstr "Error leyendo \"%s\": %s" #: src/ui/gui/text-data-import-dialog.c:480 #, c-format msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file." -msgstr "" +msgstr "Error en llegir \"%s\", perquè conté una linia per sobre dels %d bytes i per tant sembla que no es un arxiu de text." #: src/ui/gui/text-data-import-dialog.c:494 #, c-format msgid "\"%s\" is empty." -msgstr "" +msgstr "\"%s\" és buit." #: src/ui/gui/text-data-import-dialog.c:539 msgid "Import Delimited Text Data" -msgstr "" +msgstr "Importar dades de text delimitat" #: src/ui/gui/text-data-import-dialog.c:590 msgid "Importing Delimited Text Data" -msgstr "" +msgstr "Important dades de text deliminatat" #: src/ui/gui/text-data-import-dialog.c:749 msgid "" "This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" msgstr "" +"Aquest asistent t'acompanyarà per tot el procés d'importar dades cap al PSPP a partir d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comes, o altres delimitadors.\n" +"\n" #: src/ui/gui/text-data-import-dialog.c:755 -#, c-format +#, fuzzy, c-format msgid "The selected file contains %zu line of text. " msgid_plural "The selected file contains %zu lines of text. " -msgstr[0] "" -msgstr[1] "" +msgstr[0] "L'arxiu seleccionat conté %zu linies de text. " +msgstr[1] "L'arxiu seleccionat conté %zu linies de text. " #: src/ui/gui/text-data-import-dialog.c:763 -#, c-format +#, fuzzy, c-format msgid "The selected file contains approximately %lu line of text. " msgid_plural "The selected file contains approximately %lu lines of text. " -msgstr[0] "" -msgstr[1] "" +msgstr[0] "L'arxiu seleccionat conté aproximadament %lu linies de text. " +msgstr[1] "L'arxiu seleccionat conté aproximadament %lu linies de text. " #: src/ui/gui/text-data-import-dialog.c:769 -#, c-format +#, fuzzy, c-format msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. " msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. " -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. " +msgstr[1] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. " #: src/ui/gui/text-data-import-dialog.c:776 msgid "You may choose below how much of the file should actually be imported." -msgstr "" +msgstr "Pots triar a continuació quina part de l'arxiu ha de ser importat." #: src/ui/gui/text-data-import-dialog.c:1523 #: src/ui/gui/text-data-import-dialog.c:1768 msgid "This input line has too few separators to fill in this field." -msgstr "" +msgstr "Aquesta linia d'entrada no en te prou separadors per emplenar el camp" #: src/ui/gui/text-data-import-dialog.c:1759 #, c-format msgid "Field content \"%.*s\" cannot be parsed in format %s." -msgstr "" +msgstr "El contingut del camp \"%.*s\" no pot ser analitzat en format %s." #: src/ui/gui/t-test-options.c:60 -#, fuzzy, c-format +#, c-format msgid "Confidence Interval: %2d %%" -msgstr " Interval de Confiança Asimp. %g%%" +msgstr "Interval de Confiança: %2d %%" #: src/ui/gui/t-test-paired-samples.c:226 msgid "Var 1" -msgstr "" +msgstr "Var 1" #: src/ui/gui/t-test-paired-samples.c:227 msgid "Var 2" -msgstr "" +msgstr "Var 2" #: src/ui/gui/variable-info-dialog.c:76 -#, fuzzy, c-format +#, c-format msgid "Label: %s\n" -msgstr "Etiqueta:" +msgstr "Etiqueta: %s\n" #: src/ui/gui/variable-info-dialog.c:83 -#, fuzzy, c-format +#, c-format msgid "Type: %s\n" -msgstr "Tipus:" +msgstr "Tipus: %s\n" #: src/ui/gui/variable-info-dialog.c:87 -#, fuzzy, c-format +#, c-format msgid "Missing Values: %s\n" -msgstr "Valors perduts:" +msgstr "Valors perduts: %s\n" #: src/ui/gui/variable-info-dialog.c:92 -#, fuzzy, c-format +#, c-format msgid "Measurement Level: %s\n" -msgstr "Mesura: %s" +msgstr "Nivel de Mesura: %s\n" #: src/ui/gui/variable-info-dialog.c:107 -#, fuzzy msgid "Value Labels:\n" -msgstr "Etiqueta d'arxiu:" +msgstr "Etiqueteas de valor:\n" #: src/ui/gui/variable-info-dialog.c:117 #, c-format msgid "%s %s\n" -msgstr "" +msgstr "%s %s\n" #: src/ui/gui/weight-cases-dialog.c:79 src/ui/gui/psppire.glade:47 #: src/ui/gui/psppire.glade:130 -#, fuzzy msgid "Do not weight cases" -msgstr "No ponderat." +msgstr "No ponderar casos." #: src/ui/gui/weight-cases-dialog.c:85 #, c-format msgid "Weight cases by %s" -msgstr "" +msgstr "Pondera casos per %s" #: src/ui/gui/crosstabs.glade:50 -#, fuzzy msgid "Rows" -msgstr "Fila" +msgstr "Filas" #: src/ui/gui/crosstabs.glade:131 src/ui/gui/frequencies.glade:185 -#, fuzzy msgid "Format..." -msgstr "Format" +msgstr "Formato..." #: src/ui/gui/crosstabs.glade:138 src/ui/gui/examine.glade:247 #: src/ui/gui/regression.glade:31 -#, fuzzy msgid "Statistics..." -msgstr "Estatístic" +msgstr "Estatística" #: src/ui/gui/crosstabs.glade:148 msgid "Cells..." -msgstr "" +msgstr "Cel.les..." #: src/ui/gui/crosstabs.glade:230 -#, fuzzy msgid "Print tables" -msgstr "Variables:" +msgstr "Imprimir tablas:" #: src/ui/gui/crosstabs.glade:240 msgid "Pivot" -msgstr "" +msgstr "Pivot" #: src/ui/gui/crosstabs.glade:253 src/ui/gui/psppire.glade:756 msgid "Ascending" -msgstr "" +msgstr "Ascendent" #: src/ui/gui/crosstabs.glade:283 -#, fuzzy msgid "No label" -msgstr "Sense etiqueta." +msgstr "Sense etiqueta" #: src/ui/gui/crosstabs.glade:295 -#, fuzzy msgid "Suppress value labels" -msgstr "Prefereixo les etiquetes de variable" +msgstr "Suprimides les etiquetes de variable" #: src/ui/gui/crosstabs.glade:311 -#, fuzzy msgid "Labeling" -msgstr "Etiqueta" +msgstr "Etiquetant" #: src/ui/gui/crosstabs.glade:378 msgid "Cell Display" -msgstr "" +msgstr "Contingut de cel.la" #: src/ui/gui/crosstabs.glade:439 src/ui/gui/oneway.glade:207 #: src/ui/gui/regression.glade:322 -#, fuzzy msgid "Statistics" -msgstr "Estatístic" +msgstr "Estatísticas" #: src/ui/gui/descriptives-dialog.glade:122 src/ui/gui/frequencies.glade:139 -#, fuzzy msgid "Statistics:" -msgstr "Estatístic" +msgstr "Estadístiques:" #: src/ui/gui/descriptives-dialog.glade:184 msgid "Exclude entire case if any selected variable is missing" -msgstr "" +msgstr "Excluo el cas sencer si qualsevol variable te valor perdut" #: src/ui/gui/descriptives-dialog.glade:194 msgid "Include user-missing data in analysis" -msgstr "" +msgstr "Incloure els valors perduts d'usuari a l'anàlisi" #: src/ui/gui/descriptives-dialog.glade:207 msgid "Save Z-scores of selected variables as new variables" -msgstr "" +msgstr "Desar puntuacions-Z de les variables seleccionades com noves variables" #: src/ui/gui/descriptives-dialog.glade:223 msgid "Options:" -msgstr "" +msgstr "Opcions:" #: src/ui/gui/data-editor.glade:10 src/ui/gui/output-viewer.glade:22 #: src/ui/gui/syntax-editor.glade:14 -#, fuzzy msgid "_File" -msgstr "Arxiu:" +msgstr "_Arxiu" #: src/ui/gui/data-editor.glade:25 src/ui/gui/data-editor.glade:51 #: src/ui/gui/syntax-editor.glade:32 src/ui/gui/syntax-editor.glade:62 msgid "_Syntax" -msgstr "" +msgstr "_Sintaxi" #: src/ui/gui/data-editor.glade:32 src/ui/gui/data-editor.glade:58 #: src/ui/gui/data-editor.glade:311 src/ui/gui/data-editor.glade:329 #: src/ui/gui/syntax-editor.glade:41 src/ui/gui/syntax-editor.glade:71 msgid "_Data" -msgstr "" +msgstr "_Dades" #: src/ui/gui/data-editor.glade:70 msgid "_Import Delimited Text Data" -msgstr "" +msgstr "_Importar dades de text delimitat" #: src/ui/gui/data-editor.glade:103 -#, fuzzy msgid "D_isplay Data File Information" -msgstr "informació de l'arxiu de dades" +msgstr "Mostra _informació de l'arxiu de dades" #: src/ui/gui/data-editor.glade:112 msgid "Working File" -msgstr "" +msgstr "Arxius de treball" #: src/ui/gui/data-editor.glade:119 msgid "External File" -msgstr "" +msgstr "Arxiu extern" #: src/ui/gui/data-editor.glade:135 msgid "Recently Used Da_ta" -msgstr "" +msgstr "Dades usades recentment" #: src/ui/gui/data-editor.glade:142 msgid "Recently Used _Files" -msgstr "" +msgstr "Arxius utilitzats recentment" #: src/ui/gui/data-editor.glade:166 src/ui/gui/output-viewer.glade:55 #: src/ui/gui/syntax-editor.glade:118 msgid "_Edit" -msgstr "" +msgstr "_Editar" #: src/ui/gui/data-editor.glade:182 msgid "Insert Cases" -msgstr "" +msgstr "Insertar Casos" #: src/ui/gui/data-editor.glade:190 src/ui/gui/data-editor.glade:780 -#, fuzzy msgid "Go To Case" msgstr "Anar a" #: src/ui/gui/data-editor.glade:231 -#, fuzzy msgid "Cl_ear Variables" -msgstr "Variables:" +msgstr "_Eliminar Variables:" #: src/ui/gui/data-editor.glade:239 msgid "_Clear Cases" -msgstr "" +msgstr "_Eliminar Casos" #: src/ui/gui/data-editor.glade:252 msgid "gtk-find" -msgstr "" +msgstr "gtk-find" #: src/ui/gui/data-editor.glade:264 msgid "_View" -msgstr "" +msgstr "_Veure" #: src/ui/gui/data-editor.glade:271 msgid "_Status Bar" -msgstr "" +msgstr "Barra d'E_stat" #: src/ui/gui/data-editor.glade:284 msgid "_Fonts" -msgstr "" +msgstr "_Fonts" #: src/ui/gui/data-editor.glade:291 msgid "_Grid Lines" -msgstr "" +msgstr "_Linies divisories" #: src/ui/gui/data-editor.glade:299 msgid "Value _Labels" -msgstr "" +msgstr "Etiquetes de _Valors" #: src/ui/gui/data-editor.glade:318 src/ui/gui/data-editor.glade:613 -#, fuzzy msgid "_Variables" -msgstr "Variables:" +msgstr "_Variables:" #: src/ui/gui/data-editor.glade:336 msgid "_Sort Cases" -msgstr "" +msgstr "_Ordenar Casos" #: src/ui/gui/data-editor.glade:350 msgid "_Transpose" -msgstr "" +msgstr "_Transposar" #: src/ui/gui/data-editor.glade:363 -#, fuzzy msgid "S_plit File" -msgstr "Arxiu de Sistema." +msgstr "Divideix Arxiu" #: src/ui/gui/data-editor.glade:371 msgid "Select _Cases" -msgstr "" +msgstr "Seleccionar _Casos" #: src/ui/gui/data-editor.glade:378 -#, fuzzy msgid "_Weight Cases" -msgstr "Ponderat" +msgstr "Pondera Cassos" #: src/ui/gui/data-editor.glade:390 msgid "_Transform" -msgstr "" +msgstr "_Transformar" #: src/ui/gui/data-editor.glade:400 -#, fuzzy msgid "_Compute" -msgstr "Recompte" +msgstr "_Calcular" #: src/ui/gui/data-editor.glade:408 -#, fuzzy msgid "Ran_k Cases" -msgstr "Rangs" +msgstr "Rang de casos" #: src/ui/gui/data-editor.glade:420 msgid "Recode into _Same Variables" -msgstr "" +msgstr "Recodificar a les Mateixe_s Variables" #: src/ui/gui/data-editor.glade:427 msgid "Recode into _Different Variables" -msgstr "" +msgstr "Recodificar a variables _Diferents" #: src/ui/gui/data-editor.glade:440 msgid "_Run Pending Transforms" -msgstr "" +msgstr "Executa_r Transformacions pendents" #: src/ui/gui/data-editor.glade:453 msgid "_Analyze" -msgstr "" +msgstr "_Analitzar" #: src/ui/gui/data-editor.glade:463 -#, fuzzy msgid "_Descriptive Statistics" -msgstr "Estadístiques Descriptives" +msgstr "Estadística _Descriptiva" #: src/ui/gui/data-editor.glade:473 -#, fuzzy msgid "_Frequencies" -msgstr "Freqüències" +msgstr "_Freqüències" #: src/ui/gui/data-editor.glade:481 src/ui/gui/oneway.glade:179 -#, fuzzy msgid "_Descriptives" -msgstr "Descripció" +msgstr "_Descriptives" #: src/ui/gui/data-editor.glade:489 msgid "_Explore" -msgstr "" +msgstr "_Explorar" #: src/ui/gui/data-editor.glade:497 msgid "_Crosstabs" -msgstr "" +msgstr "_Creuaments tabulars" #: src/ui/gui/data-editor.glade:509 msgid "Compare _Means" -msgstr "" +msgstr "Comparar _Mitjanes" #: src/ui/gui/data-editor.glade:519 msgid "_One Sample T Test" -msgstr "" +msgstr "Prova T per una mostra" #: src/ui/gui/data-editor.glade:527 msgid "_Independent Samples T Test" -msgstr "" +msgstr "Prova T per mostres _Independents" #: src/ui/gui/data-editor.glade:535 msgid "_Paired Samples T Test" -msgstr "" +msgstr "Prova T per mostres A_parellades" #: src/ui/gui/data-editor.glade:543 msgid "One Way _ANOVA" -msgstr "" +msgstr "_ANOVA d'un factor" #: src/ui/gui/data-editor.glade:554 msgid "Re_liability" -msgstr "" +msgstr "Fiabi_litat" #: src/ui/gui/data-editor.glade:562 -#, fuzzy msgid "Linear _Regression" -msgstr "en l'expressió" +msgstr "_Regressió Linear" #: src/ui/gui/data-editor.glade:569 -#, fuzzy msgid "_Non-Parametric Statistics" -msgstr "Proves Estad." +msgstr "Proves _No-Paramétriques" #: src/ui/gui/data-editor.glade:579 -#, fuzzy msgid "_Chi-Square" -msgstr "Chi-quadrat" +msgstr "_Chi-quadrat" #: src/ui/gui/data-editor.glade:587 -#, fuzzy msgid "_Binomial" -msgstr "Prova Binomial" +msgstr "_Binomial" #: src/ui/gui/data-editor.glade:603 msgid "_Utilities" -msgstr "" +msgstr "_Utilitats" #: src/ui/gui/data-editor.glade:622 msgid "Data File _Comments" -msgstr "" +msgstr "_Comentaris arxiu de dades" #: src/ui/gui/data-editor.glade:633 src/ui/gui/output-viewer.glade:78 #: src/ui/gui/syntax-editor.glade:209 msgid "_Windows" -msgstr "" +msgstr "Finestres" #: src/ui/gui/data-editor.glade:640 src/ui/gui/output-viewer.glade:88 #: src/ui/gui/syntax-editor.glade:218 msgid "_Minimize All Windows" -msgstr "" +msgstr "_Minimitza totes les finestres" #: src/ui/gui/data-editor.glade:647 msgid "_Split" -msgstr "" +msgstr "Divideix" #: src/ui/gui/data-editor.glade:658 src/ui/gui/output-viewer.glade:99 #: src/ui/gui/syntax-editor.glade:229 -#, fuzzy msgid "_Help" -msgstr "Ajuda" +msgstr "Ajut" #: src/ui/gui/data-editor.glade:665 src/ui/gui/output-viewer.glade:106 #: src/ui/gui/syntax-editor.glade:237 msgid "_Reference Manual" -msgstr "" +msgstr "Manual de _Referencia" #: src/ui/gui/data-editor.glade:678 src/ui/gui/output-viewer.glade:113 #: src/ui/gui/syntax-editor.glade:244 msgid "_About" -msgstr "" +msgstr "Qu_ant a..." #: src/ui/gui/data-editor.glade:722 -#, fuzzy msgid "Print" -msgstr "imprimir" +msgstr "Iimprimir" #: src/ui/gui/data-editor.glade:732 msgid "Recall" -msgstr "" +msgstr "Refer" #: src/ui/gui/data-editor.glade:750 msgid "Undo" -msgstr "" +msgstr "Desfer" #: src/ui/gui/data-editor.glade:760 -#, fuzzy msgid "Redo" -msgstr "Registre" +msgstr "Re-Fer" #: src/ui/gui/data-editor.glade:790 -#, fuzzy msgid "Variables" msgstr "Variables:" #: src/ui/gui/data-editor.glade:811 msgid "Find" -msgstr "" +msgstr "Cercar" #: src/ui/gui/data-editor.glade:863 -#, fuzzy msgid "Split File" -msgstr "Arxiu de Sistema." +msgstr "Divideix Arxiu" #: src/ui/gui/data-editor.glade:874 -#, fuzzy msgid "Weight Cases" -msgstr "Ponderat" +msgstr "Ponderar Cassos" #: src/ui/gui/data-editor.glade:886 msgid "Select Cases" -msgstr "" +msgstr "Seleccionar casos" #: src/ui/gui/data-editor.glade:906 src/ui/gui/var-sheet-dialogs.glade:401 #: src/ui/gui/var-sheet-dialogs.glade:582 -#, fuzzy msgid "Value Labels" -msgstr "Etiqueta d'arxiu:" +msgstr "Etiquetes de Valor" #: src/ui/gui/data-editor.glade:917 msgid "Use Sets" -msgstr "" +msgstr "Utilitzar conjunts" #: src/ui/gui/data-editor.glade:938 -#, fuzzy msgid "Information Area" -msgstr "Informació del PSPP" +msgstr "Àrea d'Informació" #: src/ui/gui/data-editor.glade:957 msgid "Processor Area" -msgstr "" +msgstr "Area del processador" #: src/ui/gui/data-editor.glade:982 msgid "Case Counter Area" -msgstr "" +msgstr "Area del Recompte" #: src/ui/gui/data-editor.glade:1007 msgid "Filter Use Status Area" -msgstr "" +msgstr "Area del Filtre" #: src/ui/gui/data-editor.glade:1033 msgid "Weight Status Area" -msgstr "" +msgstr "Area de Ponderació" #: src/ui/gui/data-editor.glade:1059 msgid "Split File Status Area" -msgstr "" +msgstr "Area de Divisió" #: src/ui/gui/examine.glade:49 msgid "Label Cases by:" -msgstr "" +msgstr "Etiqueta casos per:" #: src/ui/gui/examine.glade:100 msgid "Factor List:" -msgstr "" +msgstr "Llista de Factors:" #: src/ui/gui/examine.glade:150 msgid "Dependent List:" -msgstr "" +msgstr "Llista de Dependents:" #: src/ui/gui/examine.glade:257 src/ui/gui/t-test.glade:69 #: src/ui/gui/t-test.glade:629 src/ui/gui/t-test.glade:780 msgid "Options..." -msgstr "" +msgstr "Opcions..." #: src/ui/gui/examine.glade:310 src/language/stats/examine.q:1750 #: src/language/stats/oneway.q:408 -#, fuzzy msgid "Descriptives" -msgstr "Descripció" +msgstr "Descriptives" #: src/ui/gui/examine.glade:320 msgid "Extremes" -msgstr "" +msgstr "Extrems" #: src/ui/gui/examine.glade:388 -#, fuzzy msgid "Exclude cases listwise" -msgstr "N Valid (listwise)" +msgstr "Exclou casos segons llista" #: src/ui/gui/examine.glade:399 msgid "Exclude cases pairwise" -msgstr "" +msgstr "Excloure casos per parelles" #: src/ui/gui/examine.glade:414 msgid "Repeat values" -msgstr "" +msgstr "Repetir valors" #: src/ui/gui/examine.glade:432 src/ui/gui/t-test.glade:460 #: src/ui/gui/var-sheet-dialogs.glade:649 -#, fuzzy msgid "Missing Values" -msgstr "Valors perduts:" +msgstr "Valors perduts" #: src/ui/gui/find.glade:80 -#, fuzzy msgid "Variable:" -msgstr "Variables:" +msgstr "Variable:" #: src/ui/gui/find.glade:111 src/ui/gui/recode.glade:185 #: src/ui/gui/var-sheet-dialogs.glade:512 -#, fuzzy msgid "Value:" -msgstr "Valor" +msgstr "Valor:" #: src/ui/gui/find.glade:137 -#, fuzzy msgid "Search value labels" -msgstr "Prefereixo les etiquetes de variable" +msgstr "Cerca etiquetes de valor" #: src/ui/gui/find.glade:161 -#, fuzzy msgid "Regular expression Match" -msgstr "Expressió regular incorrecta: %s" +msgstr "Expressió regular coincident" #: src/ui/gui/find.glade:172 msgid "Search substrings" -msgstr "" +msgstr "Cercar subcadenes" #: src/ui/gui/find.glade:185 +#, fuzzy msgid "Wrap around" -msgstr "" +msgstr "Envolcallar" #: src/ui/gui/find.glade:198 msgid "Search backward" -msgstr "" +msgstr "Cerca cap enrrera" #: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:252 #: src/ui/gui/rank.glade:103 -#, fuzzy msgid "Variable(s):" -msgstr "Variables:" +msgstr "Variable(s):" #: src/ui/gui/frequencies.glade:168 msgid "Display Frequency Table" -msgstr "" +msgstr "Mostrar la taula de freqüències" #: src/ui/gui/frequencies.glade:264 msgid "Ascending Order" -msgstr "" +msgstr "Ordre Ascendent" #: src/ui/gui/frequencies.glade:275 msgid "Descending Order" -msgstr "" +msgstr "Ordre Descendent" #: src/ui/gui/frequencies.glade:290 msgid "Ascending Counts" -msgstr "" +msgstr "Recompte Ascendent" #: src/ui/gui/frequencies.glade:305 msgid "Descending Counts" -msgstr "" +msgstr "Recompte Descendent" #: src/ui/gui/frequencies.glade:323 msgid "Order by" -msgstr "" +msgstr "Ordenat per" #: src/ui/gui/frequencies.glade:355 msgid "Supress tables with more than N categories" -msgstr "" +msgstr "Suprimir les taules amb més de N categories" #: src/ui/gui/frequencies.glade:371 msgid "Maximum no of categories" -msgstr "" +msgstr "Màxim nombre de categories" #: src/ui/gui/message-dialog.glade:10 msgid "Messages Reported" -msgstr "" +msgstr "S'han generat missatges" #: src/ui/gui/message-dialog.glade:47 msgid "The PSPP processor reported # errors. The first # and last # are shown below:" -msgstr "" +msgstr "El processador d'PSPP ha genrat # errors. Els primers # y els darrers # es mostren a continuació:" #: src/ui/gui/message-dialog.glade:101 msgid "gtk-close" -msgstr "" +msgstr "tanca-gtk" #: src/ui/gui/psppire.glade:58 -#, fuzzy msgid "Weight cases by" -msgstr "Ponderat" +msgstr "Pondera cassos per" #: src/ui/gui/psppire.glade:83 -#, fuzzy msgid "Frequency Variable" -msgstr "Freqüències" +msgstr "Variable de Freqüència" #: src/ui/gui/psppire.glade:123 msgid "Current Status: " -msgstr "" +msgstr "Estatus actual: " #: src/ui/gui/psppire.glade:219 -#, fuzzy msgid "Name Variable:" -msgstr "Variables:" +msgstr "Nom de Variable:" #: src/ui/gui/psppire.glade:404 msgid "Analyze all cases. Do not create groups." -msgstr "" +msgstr "Analitzar tots els casos. No crear grups." #: src/ui/gui/psppire.glade:415 -#, fuzzy msgid "Compare groups." -msgstr "Compressió %s." +msgstr "Comparar grups." #: src/ui/gui/psppire.glade:429 msgid "Organize output by groups." -msgstr "" +msgstr "Organitzar els resultats per grups." #: src/ui/gui/psppire.glade:477 msgid "Groups based on:" -msgstr "" +msgstr "Grups basats en:" #: src/ui/gui/psppire.glade:540 msgid "Sort the file by grouping variables." -msgstr "" +msgstr "Ordena l'arxiu per variables d'agrupació." #: src/ui/gui/psppire.glade:552 msgid "File is already sorted." -msgstr "" +msgstr "L'arxiu ja está ordenat." #: src/ui/gui/psppire.glade:597 msgid "Current Status : " -msgstr "" +msgstr "Estatus actual : " #: src/ui/gui/psppire.glade:605 msgid "Analysis by groups is off" -msgstr "" +msgstr "L'anàlisi per grups està activat" #: src/ui/gui/psppire.glade:704 msgid "Sort by:" -msgstr "" +msgstr "Ordenat per:" #: src/ui/gui/psppire.glade:767 msgid "Descending" -msgstr "" +msgstr "Descendent" #: src/ui/gui/psppire.glade:784 msgid "Sort Order" -msgstr "" +msgstr "Ordre" #: src/ui/gui/psppire.glade:853 -#, fuzzy msgid "Target Variable:" -msgstr "Variable de prova" +msgstr "Variable objectiu:" #: src/ui/gui/psppire.glade:884 msgid "Type & Label" -msgstr "" +msgstr "Tipus y Etiquetes" #: src/ui/gui/psppire.glade:924 msgid "=" -msgstr "" +msgstr "=" #: src/ui/gui/psppire.glade:970 -#, fuzzy msgid "Numeric Expressions:" -msgstr "en l'expressió" +msgstr "Expressions Numeriques:" #: src/ui/gui/psppire.glade:1024 msgid "Functions:" -msgstr "" +msgstr "Funcions:" #: src/ui/gui/psppire.glade:1087 src/ui/gui/psppire.glade:1491 #: src/ui/gui/recode.glade:731 msgid "If..." -msgstr "" +msgstr "si..." #: src/ui/gui/psppire.glade:1320 -#, fuzzy msgid "Use filter variable" -msgstr "Variable de prova" +msgstr "Utilitzar variable de filtre" #: src/ui/gui/psppire.glade:1373 msgid "Based on time or case range" -msgstr "" +msgstr "Basat en interval de temps o casos" #: src/ui/gui/psppire.glade:1386 -#, fuzzy msgid "Range..." -msgstr "Interval" +msgstr "Interval..." #: src/ui/gui/psppire.glade:1425 msgid "Random sample of cases" -msgstr "" +msgstr "Mostra aleatoria de casos" #: src/ui/gui/psppire.glade:1439 msgid "Sample..." -msgstr "" +msgstr "Mostra..." #: src/ui/gui/psppire.glade:1477 msgid "If condition is satisfied" -msgstr "" +msgstr "si la condició es satisfà" #: src/ui/gui/psppire.glade:1526 -#, fuzzy msgid "All Cases" -msgstr "Casos:" +msgstr "Tots els Casos:" #: src/ui/gui/psppire.glade:1541 msgid "Select" -msgstr "" +msgstr "Selecciona" #: src/ui/gui/psppire.glade:1570 -#, fuzzy msgid "Filtered" -msgstr "Arxiu:" +msgstr "Filtrat" #: src/ui/gui/psppire.glade:1581 msgid "Deleted" -msgstr "" +msgstr "Eliminat" #: src/ui/gui/psppire.glade:1599 msgid "Unselected Cases Are" -msgstr "" +msgstr "Els casos no seleccionats son" #: src/ui/gui/psppire.glade:1664 -#, fuzzy msgid "Comments:" -msgstr "Columnes" +msgstr "Comentaris:" #: src/ui/gui/psppire.glade:1706 msgid "Display comments in output" -msgstr "" +msgstr "Mostra comentaris al resultat" #: src/ui/gui/psppire.glade:1721 -#, fuzzy msgid "Column Number: 0" -msgstr "Número de columna: %d" +msgstr "Columna Numero: 0" #: src/ui/gui/psppire.glade:1804 msgid "First case" -msgstr "" +msgstr "Primer cas" #: src/ui/gui/psppire.glade:1817 msgid "Last case" -msgstr "" +msgstr "Últim cas" #: src/ui/gui/psppire.glade:1830 msgid "Observation" -msgstr "" +msgstr "Observació" #: src/ui/gui/psppire.glade:1894 -#, fuzzy msgid "Use expression as label" -msgstr "en l'expressió" +msgstr "Utilitza l'expressio com a etiqueta" #: src/ui/gui/psppire.glade:2150 msgid "Goto Case Number:" -msgstr "" +msgstr "Anar al cas número:" #: src/ui/gui/psppire.glade:2287 msgid "Sample Size" -msgstr "" +msgstr "Grandaria de mostra" #: src/ui/gui/oneway.glade:30 msgid "_Factor:" -msgstr "" +msgstr "_Factor:" #: src/ui/gui/oneway.glade:66 -#, fuzzy msgid "Dependent _Variable(s):" -msgstr "Variables:" +msgstr "_Variable(s) Depenents:" #: src/ui/gui/oneway.glade:190 msgid "_Homogeneity" -msgstr "" +msgstr "_Homogeneitat" #: src/ui/gui/oneway.glade:226 msgid "_Contrasts..." -msgstr "" +msgstr "_Contrasts..." #: src/ui/gui/oneway.glade:309 msgid "gtk-go-back" -msgstr "" +msgstr "gtk-go-back" #: src/ui/gui/oneway.glade:320 msgid "gtk-go-forward" -msgstr "" +msgstr "gtk-go-forward" #: src/ui/gui/oneway.glade:343 msgid "_Coefficients:" -msgstr "" +msgstr "_Coeficients:" #: src/ui/gui/oneway.glade:389 msgid "Coefficient Total: " -msgstr "" +msgstr "Coeficient Total: " #: src/ui/gui/oneway.glade:422 msgid "Contrast 1 of 1" -msgstr "" +msgstr "Contrast 1 de 1" #: src/ui/gui/output-viewer.glade:32 msgid "gtk-save" -msgstr "" +msgstr "gtk-save" #: src/ui/gui/output-viewer.glade:41 msgid "gtk-save-as" -msgstr "" +msgstr "gtk-save-as" #: src/ui/gui/output-viewer.glade:65 msgid "gtk-copy" -msgstr "" +msgstr "gtk-copy" #: src/ui/gui/rank.glade:57 msgid "By:" -msgstr "" +msgstr "Per:" #: src/ui/gui/rank.glade:196 msgid "_Smallest Value" -msgstr "" +msgstr "Valor Inferior" #: src/ui/gui/rank.glade:208 msgid "_Largest Value" -msgstr "" +msgstr "Valor Superior" #: src/ui/gui/rank.glade:227 msgid "Assign rank 1 to:" -msgstr "" +msgstr "Assigna rang 1 a:" #: src/ui/gui/rank.glade:245 msgid "_Display summary tables" -msgstr "" +msgstr "Mostra taules resum" #: src/ui/gui/rank.glade:261 -#, fuzzy msgid "Rank T_ypes" -msgstr "Rangs" +msgstr "Tipus de Rangs" #: src/ui/gui/rank.glade:272 -#, fuzzy msgid "_Ties..." -msgstr "Lligams" +msgstr "Vincles..." #: src/ui/gui/rank.glade:339 msgid "Sum of case weights" -msgstr "" +msgstr "Suma de casos ponderats" #: src/ui/gui/rank.glade:355 msgid "Fractional rank as %" -msgstr "" +msgstr "Rang fracional com %" #: src/ui/gui/rank.glade:369 msgid "Fractional rank" -msgstr "" +msgstr "Rang fraccional" #: src/ui/gui/rank.glade:383 msgid "Savage score" -msgstr "" +msgstr "Puntuació de Savage" #: src/ui/gui/rank.glade:397 -#, fuzzy msgid "Rank" -msgstr "Rangs" +msgstr "Rang" #: src/ui/gui/rank.glade:411 -#, fuzzy msgid "Ntiles" -msgstr "Lligams" +msgstr "Ntiles" #: src/ui/gui/rank.glade:450 msgid "Proportion Estimates" -msgstr "" +msgstr "Estimació de Proporcions" #: src/ui/gui/rank.glade:460 msgid "Normal Scores" -msgstr "" +msgstr "Puntuació Normal" #: src/ui/gui/rank.glade:494 msgid "Blom" -msgstr "" +msgstr "Blom" #: src/ui/gui/rank.glade:505 msgid "Tukey" -msgstr "" +msgstr "Tukey" #: src/ui/gui/rank.glade:519 -#, fuzzy msgid "Rankit" -msgstr "Rangs" +msgstr "Rankit" #: src/ui/gui/rank.glade:533 msgid "Van der Wärden" -msgstr "" +msgstr "Van der Wärden" #: src/ui/gui/rank.glade:550 msgid "Proportion Estimation Formula" -msgstr "" +msgstr "Formula d'estimació de Porporcións" #: src/ui/gui/rank.glade:612 -#, fuzzy msgid "_Mean" -msgstr "Mitjana" +msgstr "_Mitjana" #: src/ui/gui/rank.glade:624 msgid "_Low" -msgstr "" +msgstr "Baix" #: src/ui/gui/rank.glade:640 -#, fuzzy msgid "_High" -msgstr "Dreta" +msgstr "Superior" #: src/ui/gui/rank.glade:658 msgid "_Sequential ranks to unique values" -msgstr "" +msgstr "Rangs _Sequencials per a valors únics" #: src/ui/gui/rank.glade:678 msgid "Rank Assigned to Ties" -msgstr "" +msgstr "Rang assignat a empats" #: src/ui/gui/recode.glade:197 -#, fuzzy msgid "System-Missing" -msgstr "Perduts N" +msgstr "Perduts del sistema" #: src/ui/gui/recode.glade:211 msgid "System-or user-missing" -msgstr "" +msgstr "Perdut de sistema o d'usuari" #: src/ui/gui/recode.glade:245 msgid "through" -msgstr "" +msgstr "fins a" #: src/ui/gui/recode.glade:283 msgid "Range, LOWEST thru value" -msgstr "" +msgstr "Interval, MENOR fins al valor" #: src/ui/gui/recode.glade:297 msgid "Range, value thru HIGHEST" -msgstr "" +msgstr "Interval, valor fins al SUPERIOR" #: src/ui/gui/recode.glade:327 msgid "All other values" -msgstr "" +msgstr "Tota la resta de valors" #: src/ui/gui/recode.glade:363 -#, fuzzy msgid "Range:" -msgstr "Interval" +msgstr "Interval:" #: src/ui/gui/recode.glade:380 -#, fuzzy msgid "Old Value" -msgstr "Valor" +msgstr "Valor antic" #: src/ui/gui/recode.glade:462 -#, fuzzy msgid "System Missing" -msgstr "Arxiu de Sistema." +msgstr "Perdut del Sistema" #: src/ui/gui/recode.glade:476 msgid "Copy old values" -msgstr "" +msgstr "Copiar els valors antics" #: src/ui/gui/recode.glade:500 -#, fuzzy msgid "Value: " -msgstr "Valor" +msgstr "Valor:" #: src/ui/gui/recode.glade:530 -#, fuzzy msgid "New Value" -msgstr "Valor" +msgstr "Nou Valor" #: src/ui/gui/recode.glade:590 msgid "Convert numeric strings to numbers ('5' -> 5)" -msgstr "" +msgstr "Convertir cadenes numériques a números ('5' -> 5)" #: src/ui/gui/recode.glade:608 -#, fuzzy msgid "Output variables are strings" -msgstr "Nom de la variable %s duplicat." +msgstr "Les variables de sortida son alfabetiques" #: src/ui/gui/recode.glade:620 msgid "Width: " -msgstr "" +msgstr "Ample:" #: src/ui/gui/recode.glade:743 msgid "(optional case selection condition)" -msgstr "" +msgstr "(condició opcional de selecció de casos)" #: src/ui/gui/recode.glade:823 msgid "Name:" -msgstr "" +msgstr "Nom:" #: src/ui/gui/recode.glade:867 -#, fuzzy msgid "Change" -msgstr "Interval" +msgstr "Canvi" #: src/ui/gui/recode.glade:885 -#, fuzzy msgid "Output Variable" -msgstr "Variable" +msgstr "Variables de sortida" #: src/ui/gui/recode.glade:965 msgid "Old and New Values" -msgstr "" +msgstr "Valors antics i nous" #: src/ui/gui/regression.glade:40 msgid "Save..." -msgstr "" +msgstr "Desar..." #: src/ui/gui/regression.glade:145 msgid "Dependent" -msgstr "" +msgstr "Dependent" #: src/ui/gui/regression.glade:193 msgid "Independent" -msgstr "" +msgstr "Independent" #: src/ui/gui/regression.glade:243 msgid "Predicted values" -msgstr "" +msgstr "Valors predits" #: src/ui/gui/regression.glade:252 -#, fuzzy msgid "Residuals" -msgstr "Residual" +msgstr "Residuals" #: src/ui/gui/reliability.glade:89 msgid "_Items:" -msgstr "" +msgstr "_Items:" #: src/ui/gui/reliability.glade:111 -#, fuzzy msgid "Model:\t" -msgstr "Mode:" +msgstr "Model:\t" #: src/ui/gui/reliability.glade:122 msgid "" "Alpha\n" "Split" msgstr "" +"Alpha\n" +"Dividit" #: src/ui/gui/reliability.glade:144 -#, fuzzy msgid "Variables in first split:" -msgstr "Variable sota prova" +msgstr "Variables a primera divissió:" #: src/ui/gui/syntax-editor.glade:163 msgid "_Run" -msgstr "" +msgstr "Executa_r" #: src/ui/gui/syntax-editor.glade:172 msgid "All" -msgstr "" +msgstr "Tots" #: src/ui/gui/syntax-editor.glade:180 -#, fuzzy msgid "Selection" -msgstr "Descripció" +msgstr "Selecció" #: src/ui/gui/syntax-editor.glade:188 -#, fuzzy msgid "Current Line" -msgstr "Continuar" +msgstr "Linia actual" #: src/ui/gui/syntax-editor.glade:197 msgid "To End" -msgstr "" +msgstr "Fins al final" #: src/ui/gui/text-data-import.glade:8 msgid "Importing Textual Data" -msgstr "" +msgstr "Important dades textuals" #: src/ui/gui/text-data-import.glade:18 msgid "" @@ -5461,255 +5359,241 @@ msgid "" "\n" "The selected file contains N lines of text. Only the first M of these will be shown for preview purposes in the following screens. You may choose below how much of the file should actually be imported." msgstr "" +"Aquest assitent t'acompanyarà per tot el procés d'importar dades al PSPP des d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comas, o altres delimitadors.\n" +"\n" +"L'arxiu seleccionat conté N linies de text. Només les primeres M seran mostrades per previsualització a les pantalles seguents. Pots triar a continuació quina part de l'arxiu ha de ser importat." #: src/ui/gui/text-data-import.glade:50 msgid "All cases" -msgstr "" +msgstr "Tots els casos" #: src/ui/gui/text-data-import.glade:66 src/ui/gui/text-data-import.glade:122 msgid "Only first " -msgstr "" +msgstr "Només el primer" #: src/ui/gui/text-data-import.glade:97 -#, fuzzy msgid " cases" -msgstr "Casos:" +msgstr " cassos" #: src/ui/gui/text-data-import.glade:152 msgid "% of file (approximately)" -msgstr "" +msgstr "% de l'arxiu (aproximadament)" #: src/ui/gui/text-data-import.glade:173 msgid "Amount to Import" -msgstr "" +msgstr "Quantitat a importar" #: src/ui/gui/text-data-import.glade:195 msgid "Select Data to Import" -msgstr "" +msgstr "Selecionar dades per a importar" #: src/ui/gui/text-data-import.glade:205 msgid "Select the first line of the data file that contains data." -msgstr "" +msgstr "Seleccionar la primera linia del'arxiu que conté dades." #: src/ui/gui/text-data-import.glade:236 msgid "Line above selected line contains variable names" -msgstr "" +msgstr "La linia sobre la linia seleccionada contè els noms de les variables" #: src/ui/gui/text-data-import.glade:251 msgid "Choose Separators" -msgstr "" +msgstr "Triar els separadors" #: src/ui/gui/text-data-import.glade:299 msgid "C_ustom" -msgstr "" +msgstr "_Usuari" #: src/ui/gui/text-data-import.glade:314 msgid "Slas_h (/)" -msgstr "" +msgstr "Barra (/)" #: src/ui/gui/text-data-import.glade:331 msgid "Semicolo_n (;)" -msgstr "" +msgstr "Punt i coma (;)" #: src/ui/gui/text-data-import.glade:348 msgid "P_ipe (|)" -msgstr "" +msgstr "Tub (|)" #: src/ui/gui/text-data-import.glade:363 msgid "H_yphen (-)" -msgstr "" +msgstr "Guionet (-)" #: src/ui/gui/text-data-import.glade:380 msgid "Co_mma (,)" -msgstr "" +msgstr "Coma (,)" #: src/ui/gui/text-data-import.glade:397 msgid "_Colon (:)" -msgstr "" +msgstr "Dos punts (:)" #: src/ui/gui/text-data-import.glade:412 msgid "Ban_g (!)" -msgstr "" +msgstr "Exclamació (!)" #: src/ui/gui/text-data-import.glade:427 msgid "Ta_b" -msgstr "" +msgstr "Tabulador" #: src/ui/gui/text-data-import.glade:442 msgid "_Space" -msgstr "" +msgstr "E-spai" #: src/ui/gui/text-data-import.glade:456 msgid "Separators" -msgstr "" +msgstr "Separadors" #: src/ui/gui/text-data-import.glade:489 msgid "Doubled quote mark treated as escape" -msgstr "" +msgstr "La marca \" es tractada con a ESCAPE" #: src/ui/gui/text-data-import.glade:526 msgid "Quote separator characters with" -msgstr "" +msgstr "Separar caracters amb comilla" #: src/ui/gui/text-data-import.glade:543 msgid "Quoting" -msgstr "" +msgstr "Comilles" #: src/ui/gui/text-data-import.glade:594 msgid "Fields Preview" -msgstr "" +msgstr "Previsualitza camps" #: src/ui/gui/text-data-import.glade:612 msgid "Adjust Variable Formats" -msgstr "" +msgstr "Ajustar formats de variables" #: src/ui/gui/text-data-import.glade:622 msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later." -msgstr "" +msgstr "Comprovar les formats de les dades mostrades a continuació i corregir els problemes. Es pot asignar altres propietats de les variables ara o més tard." #: src/ui/gui/text-data-import.glade:665 -#, fuzzy msgid "Variables" -msgstr "Variables:" +msgstr "Variables" #: src/ui/gui/text-data-import.glade:712 msgid "Data Preview" -msgstr "" +msgstr "Previsualització de dades" #: src/ui/gui/t-test.glade:56 src/ui/gui/t-test.glade:165 msgid "Define Groups" -msgstr "" +msgstr "Definir grups" #: src/ui/gui/t-test.glade:123 src/ui/gui/t-test.glade:549 #: src/ui/gui/t-test.glade:761 -#, fuzzy msgid "Test Variable(s):" -msgstr "Variable de prova" +msgstr "Variable(s) de prova:" #: src/ui/gui/t-test.glade:258 -#, fuzzy msgid "Group_2 value:" -msgstr "Grup 2" +msgstr "Valor del grup 2:" #: src/ui/gui/t-test.glade:271 -#, fuzzy msgid "Group_1 value:" -msgstr "Grup 1" +msgstr "Valor del Grup 1:" #: src/ui/gui/t-test.glade:320 msgid "_Cut point:" -msgstr "" +msgstr "Punt de tall:" #: src/ui/gui/t-test.glade:349 msgid "_Use specified values:" -msgstr "" +msgstr "Utilitza valors especificats:" #: src/ui/gui/t-test.glade:431 msgid "Exclude cases _analysis by analysis" -msgstr "" +msgstr "Excloure casos _anàlisi per analìsi" #: src/ui/gui/t-test.glade:442 msgid "Exclude cases _listwise" -msgstr "" +msgstr "Exclure casos per _llista" #: src/ui/gui/t-test.glade:594 -#, fuzzy msgid "Test Value: " -msgstr "Valors perduts:" +msgstr "Valor de prova: " #: src/ui/gui/var-sheet-dialogs.glade:7 -#, fuzzy msgid "Variable Type" -msgstr "Variable" +msgstr "Tipus de Variable" #: src/ui/gui/var-sheet-dialogs.glade:75 msgid "Scientific notation" -msgstr "" +msgstr "Notació científica" #: src/ui/gui/var-sheet-dialogs.glade:123 msgid "Custom currency" -msgstr "" +msgstr "Moneda propia" #: src/ui/gui/var-sheet-dialogs.glade:217 -#, fuzzy msgid "positive" -msgstr "Positiu" +msgstr "positiu" #: src/ui/gui/var-sheet-dialogs.glade:223 -#, fuzzy msgid "negative" -msgstr "Negatiu" +msgstr "negatiu" #: src/ui/gui/var-sheet-dialogs.glade:236 -#, fuzzy msgid "Sample" -msgstr "Escala" +msgstr "Mostra" #: src/ui/gui/var-sheet-dialogs.glade:286 -#, fuzzy msgid "Width:" -msgstr "Pes:" +msgstr "Ample:" #: src/ui/gui/var-sheet-dialogs.glade:330 msgid "Decimal Places:" -msgstr "" +msgstr "Llocs decimals:" #: src/ui/gui/var-sheet-dialogs.glade:499 -#, fuzzy msgid "Value Label:" -msgstr "Etiqueta d'arxiu:" +msgstr "Etiqueta de Valor:" #: src/ui/gui/var-sheet-dialogs.glade:677 -#, fuzzy msgid "_No missing values" -msgstr "Valors perduts:" +msgstr "Sense valors perduts" #: src/ui/gui/var-sheet-dialogs.glade:747 -#, fuzzy msgid "_Discrete missing values" -msgstr "Valors perduts:" +msgstr "Valors perduts _Discrets" #: src/ui/gui/var-sheet-dialogs.glade:782 msgid "_Low:" -msgstr "" +msgstr "Baix:" #: src/ui/gui/var-sheet-dialogs.glade:801 -#, fuzzy msgid "_High:" -msgstr "Pes:" +msgstr "Superior:" #: src/ui/gui/var-sheet-dialogs.glade:826 msgid "Di_screte value:" -msgstr "" +msgstr "Valor Di_scret:" #: src/ui/gui/var-sheet-dialogs.glade:856 msgid "_Range plus one optional discrete missing value" -msgstr "" +msgstr "Valor perdut discreto ocpional d'interval més un" #: src/ui/gui/variable-info-dialog.glade:49 -#, fuzzy msgid "Variable Information:" -msgstr "informació de l'arxiu de dades" +msgstr "Informació de la Variable" #: tests/dissect-sysfile.c:528 -#, fuzzy, c-format +#, c-format msgid "Unrecognized record type 7, subtype %d." -msgstr "Tipus de registre %d no reconegut." +msgstr "Tipus de registre 7 no reconegut, subtipe %d." #: tests/dissect-sysfile.c:701 -#, fuzzy, c-format +#, c-format msgid "%s: Error parsing attribute value %s[%d]" -msgstr "Error en analitzar el valor de l'atribut %s[%d]" +msgstr "%s: Error en analitzar valor de l'atribut %s[%d]" #: tests/dissect-sysfile.c:707 -#, fuzzy, c-format +#, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" -msgstr "El valor de l'atribut %s[%d] no esta entre cometes: %s" +msgstr "%s: El valor de l'atribut %s[%d] no esta entre cometes: %s" #: src/language/utilities/set.q:202 -#, fuzzy msgid "WORKSPACE must be at least 1MB" -msgstr "Valor de FIRST ha de ser com a mínim 1." +msgstr "WORKSPACE ha de ser com a mínim 1 Mb" #: src/language/utilities/set.q:208 src/language/utilities/set.q:210 #: src/language/utilities/set.q:212 src/language/utilities/set.q:214 @@ -5718,1039 +5602,964 @@ msgstr "Valor de FIRST ha de ser com a mínim 1." #: src/language/utilities/set.q:224 #, c-format msgid "%s is obsolete." -msgstr "" +msgstr "%s és obsolet." #: src/language/utilities/set.q:227 -#, fuzzy, c-format +#, c-format msgid "%s is not implemented." -msgstr "%s encara no està implementat." +msgstr "%s no està implementat." #: src/language/utilities/set.q:230 -#, fuzzy msgid "Active file compression is not implemented." -msgstr "%s encara no està implementat." +msgstr "La compressió d'arxius no està implementada." #: src/language/utilities/set.q:325 msgid "EPOCH must be 1500 or later." -msgstr "" +msgstr "EPOCH ha de ser 1500 o més tard." #: src/language/utilities/set.q:332 -#, fuzzy msgid "expecting AUTOMATIC or year" -msgstr "esperant COMM o TAPE" +msgstr "esperant AUTOMATICA o any" #: src/language/utilities/set.q:353 -#, fuzzy msgid "LENGTH must be at least 1." -msgstr "Valor de FIRST ha de ser com a mínim 1." +msgstr "LENGTH ha de ser com a mínim 1." #: src/language/utilities/set.q:389 -#, fuzzy, c-format +#, c-format msgid "%s is not a recognised encoding or locale name" -msgstr "%s és un nom de variable existent." +msgstr "%s no és una codificació o un nom local reconegut" #: src/language/utilities/set.q:432 -#, fuzzy msgid "WIDTH must be at least 40." -msgstr "Valor de FIRST ha de ser com a mínim 1." +msgstr "WIDTH ha de ser com a mínim 40." #: src/language/utilities/set.q:455 #, c-format msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string." -msgstr "" +msgstr "FORMAT requereix format de resultat numeric com a argument. El format %s especificat es de tipus cadena." #: src/language/utilities/set.q:668 msgid "ISL (32-bit IEEE 754 single, little-endian)" -msgstr "" +msgstr "ISL (32-bit IEEE 754 single, little-endian)" #: src/language/utilities/set.q:671 msgid "ISB (32-bit IEEE 754 single, big-endian)" -msgstr "" +msgstr "ISB (32-bit IEEE 754 single, big-endian)" #: src/language/utilities/set.q:674 msgid "IDL (64-bit IEEE 754 double, little-endian)" -msgstr "" +msgstr "IDL (64-bit IEEE 754 double, little-endian)" #: src/language/utilities/set.q:677 msgid "IDB (64-bit IEEE 754 double, big-endian)" -msgstr "" +msgstr "IDB (64-bit IEEE 754 double, big-endian)" #: src/language/utilities/set.q:681 msgid "VF (32-bit VAX F, VAX-endian)" -msgstr "" +msgstr "VF (32-bit VAX F, VAX-endian)" #: src/language/utilities/set.q:684 msgid "VD (64-bit VAX D, VAX-endian)" -msgstr "" +msgstr "VD (64-bit VAX D, VAX-endian)" #: src/language/utilities/set.q:687 msgid "VG (64-bit VAX G, VAX-endian)" -msgstr "" +msgstr "VG (64-bit VAX G, VAX-endian)" #: src/language/utilities/set.q:691 msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)" -msgstr "" +msgstr "ZS (32-bit IBM Z hexadecimal short, big-endian)" #: src/language/utilities/set.q:694 msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)" -msgstr "" +msgstr "ZL (64-bit IBM Z hexadecimal long, big-endian)" #: src/language/utilities/set.q:793 -#, fuzzy, c-format +#, c-format msgid "%s is %s." -msgstr "%s sense %s." +msgstr "%s és %s." #: src/language/stats/crosstabs.q:327 msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." -msgstr "" +msgstr "L'INFORME de perduts no esta disponible el mode general. S'assumeix MISSING=TABLE." #: src/language/stats/crosstabs.q:416 msgid "Too many cross-tabulation variables or dimensions." -msgstr "" +msgstr "Massa variables o dimensions per a l'encreuament tabulat." #: src/language/stats/crosstabs.q:426 -#, fuzzy msgid "expecting BY" -msgstr "esperant BREAK" +msgstr "esperant BY" #: src/language/stats/crosstabs.q:486 msgid "VARIABLES must be specified before TABLES." -msgstr "" +msgstr "Les VARIABLES han de ser especificades abans de TABLES." #: src/language/stats/crosstabs.q:524 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." -msgstr "" +msgstr "El valor màxim (%ld) en menor que el valor mínim (%ld)." #: src/language/stats/crosstabs.q:840 -#, fuzzy msgid "Summary." -msgstr "Resum del Cas" +msgstr "Resum." #: src/language/stats/crosstabs.q:842 src/language/stats/examine.q:1277 #: src/language/stats/reliability.q:709 -#, fuzzy msgid "Cases" -msgstr "Casos:" +msgstr "Casos" #: src/language/stats/crosstabs.q:843 src/language/stats/examine.q:1214 #: src/language/stats/frequencies.q:1049 src/language/stats/frequencies.q:1400 #: src/language/stats/reliability.q:712 -#, fuzzy msgid "Valid" -msgstr "N vàlids" +msgstr "Vàlid" #: src/language/stats/crosstabs.q:853 src/language/stats/examine.q:1292 #: src/language/stats/frequencies.q:1053 src/language/stats/frequencies.q:1054 #: src/language/stats/frequencies.q:1055 -#, fuzzy msgid "Percent" -msgstr "Percentils" +msgstr "Percentatge" #: src/language/stats/crosstabs.q:1133 -#, fuzzy msgid "count" -msgstr "Recompte" +msgstr "recompte" #: src/language/stats/crosstabs.q:1134 msgid "row %" -msgstr "" +msgstr "fila %" #: src/language/stats/crosstabs.q:1135 -#, fuzzy msgid "column %" -msgstr "columna %d" +msgstr "columna %" #: src/language/stats/crosstabs.q:1136 -#, fuzzy msgid "total %" -msgstr "octal" +msgstr "total %" #: src/language/stats/crosstabs.q:1137 -#, fuzzy msgid "expected" -msgstr "Esperat" +msgstr "esperat" #: src/language/stats/crosstabs.q:1138 -#, fuzzy msgid "residual" -msgstr "Residual" +msgstr "residual" #: src/language/stats/crosstabs.q:1139 -#, fuzzy msgid "std. resid." -msgstr "Residu Tipificat" +msgstr "residu tipificat" #: src/language/stats/crosstabs.q:1140 msgid "adj. resid." -msgstr "" +msgstr "resid.ajust." #: src/language/stats/crosstabs.q:1231 -#, fuzzy msgid "Chi-square tests." -msgstr "Chi-quadrat" +msgstr "Proves Chi-quadrat." #: src/language/stats/crosstabs.q:1238 -#, fuzzy msgid "Asymp. Sig. (2-sided)" msgstr "Sig. Asimp. (2-cues)" #: src/language/stats/crosstabs.q:1240 -#, fuzzy msgid "Exact Sig. (2-sided)" msgstr "Sig. Exacta (2-cues)" #: src/language/stats/crosstabs.q:1242 -#, fuzzy msgid "Exact Sig. (1-sided)" msgstr "Sig. Exacta (1-cua)" #: src/language/stats/crosstabs.q:1257 msgid "Symmetric measures." -msgstr "" +msgstr "Mesures simètriques." #: src/language/stats/crosstabs.q:1263 src/language/stats/crosstabs.q:1312 -#, fuzzy msgid "Asymp. Std. Error" -msgstr "Error Est." +msgstr "Error Est. Asimp." #: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1313 msgid "Approx. T" -msgstr "" +msgstr "Aprox. T" #: src/language/stats/crosstabs.q:1265 src/language/stats/crosstabs.q:1314 -#, fuzzy msgid "Approx. Sig." -msgstr "Sig. Asimpt." +msgstr "Sig. Aproxim." #: src/language/stats/crosstabs.q:1280 msgid "Risk estimate." -msgstr "" +msgstr "Estimador de Risc." #: src/language/stats/crosstabs.q:1284 -#, fuzzy, c-format +#, c-format msgid "95%% Confidence Interval" -msgstr " Interval de Confiança Asimp. %g%%" +msgstr "Interval de Confiança del 95%%" #: src/language/stats/crosstabs.q:1287 src/language/stats/t-test.q:757 #: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014 -#, fuzzy msgid "Lower" -msgstr "Límit Inferior" +msgstr "Inferior" #: src/language/stats/crosstabs.q:1288 src/language/stats/t-test.q:758 #: src/language/stats/t-test.q:922 src/language/stats/t-test.q:1015 -#, fuzzy msgid "Upper" -msgstr "Límit Superior" +msgstr "Superior" #: src/language/stats/crosstabs.q:1305 msgid "Directional measures." -msgstr "" +msgstr "Mesures direccionals." #: src/language/stats/crosstabs.q:1776 -#, fuzzy msgid "Pearson Chi-Square" -msgstr "Chi-quadrat" +msgstr "Chi-quadrat de Pearson" #: src/language/stats/crosstabs.q:1777 +#, fuzzy msgid "Likelihood Ratio" -msgstr "" +msgstr "Raó de Semblança" #: src/language/stats/crosstabs.q:1778 msgid "Fisher's Exact Test" -msgstr "" +msgstr "Prova exacta de Fisher" #: src/language/stats/crosstabs.q:1779 msgid "Continuity Correction" -msgstr "" +msgstr "Correcció per continuitat" #: src/language/stats/crosstabs.q:1780 msgid "Linear-by-Linear Association" -msgstr "" +msgstr "Asociació linear per linear" #: src/language/stats/crosstabs.q:1815 src/language/stats/crosstabs.q:1890 #: src/language/stats/crosstabs.q:1955 msgid "N of Valid Cases" -msgstr "" +msgstr "N de casos vàlids" #: src/language/stats/crosstabs.q:1834 src/language/stats/crosstabs.q:1973 msgid "Nominal by Nominal" -msgstr "" +msgstr "Nominal segons Nominal" #: src/language/stats/crosstabs.q:1835 src/language/stats/crosstabs.q:1974 msgid "Ordinal by Ordinal" -msgstr "" +msgstr "Ordinal segons Ordinal" #: src/language/stats/crosstabs.q:1836 msgid "Interval by Interval" -msgstr "" +msgstr "Interval segons Interval" #: src/language/stats/crosstabs.q:1837 msgid "Measure of Agreement" -msgstr "" +msgstr "Mesura d'Acord" #: src/language/stats/crosstabs.q:1843 msgid "Cramer's V" -msgstr "" +msgstr "V de Cramer" #: src/language/stats/crosstabs.q:1844 msgid "Contingency Coefficient" -msgstr "" +msgstr "Coeficient de Contingencia" #: src/language/stats/crosstabs.q:1845 msgid "Kendall's tau-b" -msgstr "" +msgstr "Tau-B de Kendall" #: src/language/stats/crosstabs.q:1846 msgid "Kendall's tau-c" -msgstr "" +msgstr "Tau-C de Kendall" #: src/language/stats/crosstabs.q:1848 msgid "Spearman Correlation" -msgstr "" +msgstr "Correlació de Spearman" #: src/language/stats/crosstabs.q:1849 msgid "Pearson's R" -msgstr "" +msgstr "R de Pearson" #: src/language/stats/crosstabs.q:1928 #, c-format msgid "Odds Ratio for %s (%g / %g)" -msgstr "" +msgstr "Raó de diferencies per a %s (%g / %g)" #: src/language/stats/crosstabs.q:1931 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" -msgstr "" +msgstr "Raó de diferències per a %s (%.*s / %.*s)" #: src/language/stats/crosstabs.q:1939 #, c-format msgid "For cohort %s = %g" -msgstr "" +msgstr "Per cohort %s = %g" #: src/language/stats/crosstabs.q:1942 #, c-format msgid "For cohort %s = %.*s" -msgstr "" +msgstr "Per cohort %s = %.*s" #: src/language/stats/crosstabs.q:1975 msgid "Nominal by Interval" -msgstr "" +msgstr "Nominal segons Interval" #: src/language/stats/crosstabs.q:1981 msgid "Goodman and Kruskal tau" -msgstr "" +msgstr "Tau de Kruskal i Goodman" #: src/language/stats/crosstabs.q:1982 msgid "Uncertainty Coefficient" -msgstr "" +msgstr "Coeficient d'Incertessa" #: src/language/stats/crosstabs.q:1983 msgid "Somers' d" -msgstr "" +msgstr "D de Somers" #: src/language/stats/crosstabs.q:1989 -#, fuzzy msgid "Symmetric" -msgstr "Numèric" +msgstr "Simètric" #: src/language/stats/crosstabs.q:1990 src/language/stats/crosstabs.q:1991 #, c-format msgid "%s Dependent" -msgstr "" +msgstr "%s Dependent" #: src/language/stats/examine.q:346 src/language/stats/examine.q:499 #: src/language/stats/examine.q:1060 msgid "Not creating plot because data set is empty." -msgstr "" +msgstr "No es crea el gràfic perquè el conjunt de dades es buit." #: src/language/stats/examine.q:356 #, c-format msgid "Normal Q-Q Plot of %s" -msgstr "" +msgstr "Gràfica Normal Q-Q de %s" #: src/language/stats/examine.q:357 src/language/stats/examine.q:362 -#, fuzzy msgid "Observed Value" -msgstr "N observat" +msgstr "Valor observat" #: src/language/stats/examine.q:358 -#, fuzzy msgid "Expected Normal" -msgstr "N esperat" +msgstr "Normal esperada" #: src/language/stats/examine.q:360 -#, c-format +#, fuzzy, c-format msgid "Detrended Normal Q-Q Plot of %s" -msgstr "" +msgstr "Gràfica Normal Detrended Q-Q de %s" #: src/language/stats/examine.q:363 msgid "Dev from Normal" -msgstr "" +msgstr "Desviació de la Normal" #: src/language/stats/examine.q:516 #, c-format msgid "Boxplot of %s vs. %s" -msgstr "" +msgstr "Diagrama de caixa de %s vs. %s" #: src/language/stats/examine.q:520 #, c-format msgid "Boxplot of %s" -msgstr "" +msgstr "Diagrama de caixa de %s" #: src/language/stats/examine.q:756 src/language/stats/examine.q:769 #, c-format msgid "%s and %s are mutually exclusive" -msgstr "" +msgstr "%s i %s son mutuament excloents" #: src/language/stats/examine.q:1272 src/language/stats/reliability.q:686 -#, fuzzy msgid "Case Processing Summary" -msgstr "Resum del Cas" +msgstr "Resum de processament del Casos" #: src/language/stats/examine.q:1564 src/language/stats/oneway.q:398 -#, fuzzy, c-format +#, c-format msgid "%g%% Confidence Interval for Mean" -msgstr " Interval de Confiança Asimp. %g%%" +msgstr "Interval de Confiança de Miitjana %g%%" #: src/language/stats/examine.q:1579 msgid "5% Trimmed Mean" -msgstr "" +msgstr "Mitjana retallada al 5%" #: src/language/stats/examine.q:1614 msgid "Interquartile Range" -msgstr "" +msgstr "Interval inter-quartilic" #: src/language/stats/examine.q:1939 -#, fuzzy msgid "Highest" -msgstr "Dreta" +msgstr "Superior" #: src/language/stats/examine.q:1944 -#, fuzzy msgid "Lowest" -msgstr "Esquerra" +msgstr "Inferior" #: src/language/stats/examine.q:1951 msgid "Extreme Values" -msgstr "" +msgstr "Valor extrems" #: src/language/stats/examine.q:1955 -#, fuzzy msgid "Case Number" -msgstr "Resum del Cas" +msgstr "Número de Cas" #: src/language/stats/examine.q:2077 msgid "Tukey's Hinges" -msgstr "" +msgstr "Bisagras de Tukey" #: src/language/stats/examine.q:2124 #, c-format msgid "%g" -msgstr "" +msgstr "%g" #: src/language/stats/frequencies.q:124 -#, fuzzy msgid "S.E. Mean" -msgstr "Mitj. E.E." +msgstr "E.E. Mitj." #: src/language/stats/frequencies.q:130 -#, fuzzy msgid "S.E. Kurt" -msgstr "Curt.E.E." +msgstr "E.E. Curt." #: src/language/stats/frequencies.q:132 -#, fuzzy msgid "S.E. Skew" -msgstr "Asim.E.E." +msgstr "E.E. Asim." #: src/language/stats/frequencies.q:407 +#, fuzzy msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be assumed. Argument values will be given precedence increasing along the order given." -msgstr "" +msgstr "Al menys s'ha de demar un d'entre BARCHART, HISTOGRAM o HBAR. S'assumeix HBAR. (Argument values will be given precedence increasing along the order given)." #: src/language/stats/frequencies.q:490 #, c-format msgid "MAX must be greater than or equal to MIN, if both are specified. However, MIN was specified as %g and MAX as %g. MIN and MAX will be ignored." -msgstr "" +msgstr "MAX ha de ser major o igual a MIN, si tots dos s'especifiquen. Però, MIN s'ha especificat com a %g i MAX com a %g. MIN i MAX son ignorats." #: src/language/stats/frequencies.q:754 -#, fuzzy, c-format +#, c-format msgid "Variable %s specified multiple times on VARIABLES subcommand." -msgstr "La variable %s s'especifica dues vegades als criteris d'ordenació." +msgstr "La variable %s s'ha especificat més d'una vegada a l'ordre VARIABLES." #: src/language/stats/frequencies.q:812 -#, fuzzy msgid "`)' expected after GROUPED interval list." -msgstr "`(' esperat després de la llista de variables." +msgstr "`)' esperat després de la llista de variables GRUPED." #: src/language/stats/frequencies.q:824 #, c-format msgid "Variables %s specified on GROUPED but not on VARIABLES." -msgstr "" +msgstr "Variables %s especificades a GROUPED però no a VARIABLES." #: src/language/stats/frequencies.q:831 -#, fuzzy, c-format +#, c-format msgid "Variables %s specified multiple times on GROUPED subcommand." -msgstr "La variable %s s'especifica dues vegades als criteris d'ordenació." +msgstr "La variable %s s'ha especificat més d'una vegada a l'ordre GROUPED." #: src/language/stats/frequencies.q:1050 src/language/stats/frequencies.q:1143 #: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1179 -#, fuzzy msgid "Cum" -msgstr "Suma" +msgstr "Acumulat" #: src/language/stats/frequencies.q:1073 -#, fuzzy msgid "Value Label" -msgstr "Etiqueta d'arxiu:" +msgstr "Etiqueta de Valor" #: src/language/stats/frequencies.q:1177 -#, fuzzy msgid "Freq" -msgstr "Freqüència" +msgstr "Freq" #: src/language/stats/frequencies.q:1178 src/language/stats/frequencies.q:1180 msgid "Pct" -msgstr "" +msgstr "Pct" #: src/language/stats/frequencies.q:1373 -#, fuzzy, c-format +#, c-format msgid "No valid data for variable %s; statistics not displayed." -msgstr "Cap variable per mostrar." +msgstr "No hi ha dades vàlides per a la variable %s; not es mostren estadístiques." #: src/language/stats/frequencies.q:1414 -#, fuzzy msgid "50 (Median)" -msgstr "50è (Mediana)" +msgstr "50 (Mediana)" #: src/language/stats/glm.q:196 -#, fuzzy msgid "Multivariate GLM not yet supported" -msgstr "Macros no disponibles." +msgstr "GLM multivariable encara no disponible" #: src/language/stats/glm.q:320 src/language/stats/regression.q:1000 msgid "No valid data found. This command was skipped." -msgstr "" +msgstr "No s'han trobat dades vàlides. S'gnora aquesta ordre." #: src/language/stats/means.q:100 -#, fuzzy msgid "Missing required subcommand TABLES." -msgstr "subordre requerida %s absent" +msgstr "Falta subordre requerida TABLES" #: src/language/stats/means.q:134 -#, fuzzy msgid "TABLES subcommand may not appear more than once." -msgstr "El subcomando RENAME pot ser utilitzat només una vegada." +msgstr "El subcomando TABLES no pot apareixer més d'una vegada." #: src/language/stats/npar.q:109 -#, fuzzy msgid "NPAR subcommand not currently implemented." -msgstr "Només USE ALL s'està aplicant actualment." +msgstr "Actualment no está implenetat el subcomandament NPAR." #: src/language/stats/npar.q:252 #, c-format msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)" -msgstr "" +msgstr "El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)" #: src/language/stats/npar.q:307 #, c-format msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values." -msgstr "" +msgstr "S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) requereix exactament %d valors." #: src/language/stats/npar.q:441 src/language/stats/t-test.q:379 #, c-format msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)." -msgstr "" +msgstr "S'ha especificat PAIRED però el nombre de variables abans de WITH (%zu) not conicideixen amb en nombre de variables seguents (%zu)." #: src/language/stats/oneway.q:171 msgid "Number of contrast coefficients must equal the number of groups" -msgstr "" +msgstr "El nombre de coeficients de contrast ha de ser igual al nombre de grups." #: src/language/stats/oneway.q:180 #, c-format msgid "Coefficients for contrast %zu do not total zero" -msgstr "" +msgstr "Els coeficients per contrastar %zu no sumen cero." #: src/language/stats/oneway.q:243 -#, fuzzy, c-format +#, c-format msgid "`%s' is not a variable name" -msgstr "%s no és un nom de variable." +msgstr "`%s' no és un nom de variable" #: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 -#, fuzzy msgid "Sum of Squares" -msgstr "Suma de Rangs" +msgstr "Suma de Quadrats" #: src/language/stats/oneway.q:279 src/language/stats/regression.q:303 -#, fuzzy msgid "Mean Square" msgstr "Rang mitjà" #: src/language/stats/oneway.q:280 src/language/stats/regression.q:304 #: src/language/stats/t-test.q:750 msgid "F" -msgstr "" +msgstr "F" #: src/language/stats/oneway.q:281 src/language/stats/oneway.q:539 #: src/language/stats/regression.q:206 src/language/stats/regression.q:305 msgid "Significance" -msgstr "" +msgstr "Significativitat" #: src/language/stats/oneway.q:303 msgid "Between Groups" -msgstr "" +msgstr "Entre Grups" #: src/language/stats/oneway.q:304 msgid "Within Groups" -msgstr "" +msgstr "Intra Grups" #: src/language/stats/oneway.q:348 src/language/stats/regression.q:330 msgid "ANOVA" -msgstr "" +msgstr "ANOVA" #: src/language/stats/oneway.q:536 -#, fuzzy msgid "Levene Statistic" -msgstr "Estatístic" +msgstr "Estatístic de Levene" #: src/language/stats/oneway.q:537 -#, fuzzy msgid "df1" -msgstr "df" +msgstr "df1" #: src/language/stats/oneway.q:538 -#, fuzzy msgid "df2" -msgstr "df" +msgstr "df2" #: src/language/stats/oneway.q:541 msgid "Test of Homogeneity of Variances" -msgstr "" +msgstr "Prova de Homogeneitat de variances" #: src/language/stats/oneway.q:608 msgid "Contrast Coefficients" -msgstr "" +msgstr "Coeficinents de Contrast" #: src/language/stats/oneway.q:610 src/language/stats/oneway.q:687 -#, fuzzy msgid "Contrast" -msgstr "Recompte" +msgstr "Contrast" #: src/language/stats/oneway.q:685 msgid "Contrast Tests" -msgstr "" +msgstr "Proves de contrats" #: src/language/stats/oneway.q:688 msgid "Value of Contrast" -msgstr "" +msgstr "Valor de constrast" #: src/language/stats/oneway.q:690 src/language/stats/regression.q:205 #: src/language/stats/t-test.q:752 src/language/stats/t-test.q:923 #: src/language/stats/t-test.q:1010 msgid "t" -msgstr "" +msgstr "t" #: src/language/stats/oneway.q:692 src/language/stats/t-test.q:754 #: src/language/stats/t-test.q:925 src/language/stats/t-test.q:1012 -#, fuzzy msgid "Sig. (2-tailed)" -msgstr "Sig. Exacta (2-cues)" +msgstr "Sig. (2-cues)" #: src/language/stats/oneway.q:736 msgid "Assume equal variances" -msgstr "" +msgstr "S'assumeix igualtat de variances" #: src/language/stats/oneway.q:740 msgid "Does not assume equal" -msgstr "" +msgstr "No s'assumeix igualtat" #: src/language/stats/rank.q:221 #, c-format msgid "%s of %s by %s" -msgstr "" +msgstr "%s de %s per %s" #: src/language/stats/rank.q:226 -#, fuzzy, c-format +#, c-format msgid "%s of %s" -msgstr "puntuació-Z de %s" +msgstr "%s de %s" #: src/language/stats/rank.q:601 -#, fuzzy msgid "Cannot create new rank variable. All candidates in use." -msgstr "No es pot crear el nom de la variable des de %s" +msgstr "No es pot crear la nova variable de rangs. Tots els candidats estan en ús." #: src/language/stats/rank.q:694 msgid "Variables Created By RANK" -msgstr "" +msgstr "Variables creades per RANK" #: src/language/stats/rank.q:718 #, c-format msgid "%s into %s(%s of %s using %s BY %s)" -msgstr "" +msgstr "%s en %s(%s de %s utilitzant %s BY %s)" #: src/language/stats/rank.q:728 #, c-format msgid "%s into %s(%s of %s BY %s)" -msgstr "" +msgstr "%s en %s(%s de %s BY %s)" #: src/language/stats/rank.q:741 #, c-format msgid "%s into %s(%s of %s using %s)" -msgstr "" +msgstr "%s en %s(%s de %s utilitzant %s)" #: src/language/stats/rank.q:750 #, c-format msgid "%s into %s(%s of %s)" -msgstr "" +msgstr "%s en %s(%s de %s)" #: src/language/stats/rank.q:762 msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested. The FRACTION subcommand will be ignored." -msgstr "" +msgstr "S'ha especificat FRACTION, però no s'ahn demanat funcions de rang NORMAL o PROPORTION. La subordre FRACTION será ignorada." #: src/language/stats/rank.q:853 -#, fuzzy, c-format +#, c-format msgid "Variable %s already exists." -msgstr "Un vector anomenat %s ja existeix." +msgstr "La variable %s ja existeix." #: src/language/stats/rank.q:858 -#, fuzzy msgid "Too many variables in INTO clause." -msgstr "Massa valors en el comandament únic." +msgstr "Massa variables a la clausula INTO." #: src/language/stats/regression.q:160 -#, fuzzy msgid "R Square" -msgstr "Chi-quadrat" +msgstr "R Quadrada" #: src/language/stats/regression.q:161 -#, fuzzy msgid "Adjusted R Square" -msgstr "Residu Tipificat Ajustat" +msgstr "R Quadrada Ajustada" #: src/language/stats/regression.q:162 -#, fuzzy msgid "Std. Error of the Estimate" -msgstr "Error estàndard en la mitjana" +msgstr "Error estàndard de l'Estimador" #: src/language/stats/regression.q:167 -#, fuzzy msgid "Model Summary" -msgstr "Resum del Cas" +msgstr "Resum del model" #: src/language/stats/regression.q:202 msgid "B" -msgstr "" +msgstr "B" #: src/language/stats/regression.q:204 msgid "Beta" -msgstr "" +msgstr "Beta" #: src/language/stats/regression.q:207 msgid "(Constant)" -msgstr "" +msgstr "(Constant)" #: src/language/stats/regression.q:271 msgid "Coefficients" -msgstr "" +msgstr "Coeficients" #: src/language/stats/regression.q:307 -#, fuzzy msgid "Regression" -msgstr "en l'expressió" +msgstr "Regressió" #: src/language/stats/regression.q:389 -#, fuzzy msgid "Model" -msgstr "Mode" +msgstr "Model" #: src/language/stats/regression.q:390 -#, fuzzy msgid "Covariances" -msgstr "Variància" +msgstr "Covariància" #: src/language/stats/regression.q:405 msgid "Coefficient Correlations" -msgstr "" +msgstr "Correlacions de Coeficients" #: src/language/stats/regression.q:812 msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless." -msgstr "" +msgstr "La variable dependiente es igual a la variable independiente. La línea de minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics relacionats podríen ser irrellevants." #: src/language/stats/regression.q:904 -#, fuzzy msgid "Dependent variable must be numeric." -msgstr "Variable de ponderació ha de ser numèrica." +msgstr "La variable dependent ha de ser numèrica." #: src/language/stats/reliability.q:433 -#, fuzzy msgid "Reliability Statistics" -msgstr "Proves Estad." +msgstr "Estadístiques de fiabilitat" #: src/language/stats/reliability.q:476 -#, fuzzy msgid "Item-Total Statistics" -msgstr "Proves Estad." +msgstr "Estadístiques de total d'Items" #: src/language/stats/reliability.q:498 msgid "Scale Mean if Item Deleted" -msgstr "" +msgstr "Escalar la mitjana si s'esborra l'element" #: src/language/stats/reliability.q:501 msgid "Scale Variance if Item Deleted" -msgstr "" +msgstr "Escalar la variança si s'esborra l'element" #: src/language/stats/reliability.q:504 msgid "Corrected Item-Total Correlation" -msgstr "" +msgstr "Correlació total-item corregida" #: src/language/stats/reliability.q:507 msgid "Cronbach's Alpha if Item Deleted" -msgstr "" +msgstr "Cronbach's Alpha si s'esborra l'element" #: src/language/stats/reliability.q:557 src/language/stats/reliability.q:576 msgid "Cronbach's Alpha" -msgstr "" +msgstr "Alfa de Cronbach" #: src/language/stats/reliability.q:560 msgid "N of items" -msgstr "" +msgstr "N d'elements" #: src/language/stats/reliability.q:579 msgid "Part 1" -msgstr "" +msgstr "Part 1" #: src/language/stats/reliability.q:585 src/language/stats/reliability.q:596 msgid "N of Items" -msgstr "" +msgstr "N d'elements" #: src/language/stats/reliability.q:590 msgid "Part 2" -msgstr "" +msgstr "Part 2" #: src/language/stats/reliability.q:601 msgid "Total N of Items" -msgstr "" +msgstr "N total d'elements" #: src/language/stats/reliability.q:604 +#, fuzzy msgid "Correlation Between Forms" -msgstr "" +msgstr "Correlation entre formes" #: src/language/stats/reliability.q:608 msgid "Spearman-Brown Coefficient" -msgstr "" +msgstr "Coeficient d'Spearman-Brown" #: src/language/stats/reliability.q:611 msgid "Equal Length" -msgstr "" +msgstr "Ample igual" #: src/language/stats/reliability.q:614 msgid "Unequal Length" -msgstr "" +msgstr "Ample desigual" #: src/language/stats/reliability.q:618 msgid "Guttman Split-Half Coefficient" -msgstr "" +msgstr "Coeficient Gutman de DIvisió pel mig" #: src/language/stats/reliability.q:715 -#, fuzzy msgid "Excluded" -msgstr "Esperat" +msgstr "Exclós" #: src/language/stats/reliability.q:723 msgid "%" -msgstr "" +msgstr "%" #: src/language/stats/t-test.q:189 msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified." -msgstr "" +msgstr "Exactamente un dels subcomanaments TESTVAL, GROUPS y PAIRS ha d'especificarse." #: src/language/stats/t-test.q:210 -#, fuzzy msgid "VARIABLES subcommand may not be used with PAIRS." -msgstr "El subcomando END només pot ser utilitzat dins de INPUT PROGRAM." +msgstr "La subordre VARIABLES no pot se utilitzada amb PAIRS." #: src/language/stats/t-test.q:229 -#, fuzzy msgid "One or more VARIABLES must be specified." -msgstr "Al menys una variable ha de ser especificada." +msgstr "Una o més VARIABLES han de ser especificades." #: src/language/stats/t-test.q:323 -#, fuzzy msgid "When applying GROUPS to a string variable, two values must be specified." -msgstr "Al menys una variable ha de ser especificada." +msgstr "Quan s'aplica GROUPS a una variable alfabetica, s'han d'especificar dos valors." #: src/language/stats/t-test.q:394 -#, fuzzy msgid "At least two variables must be specified on PAIRS." -msgstr "Al menys una variable ha de ser especificada." +msgstr "Al menys dos variables s'han d'especificar a PAIRS." #: src/language/stats/t-test.q:504 -#, fuzzy msgid "One-Sample Statistics" -msgstr "Proves Estad." +msgstr "Estadisticas d'una mostra" #: src/language/stats/t-test.q:509 src/language/stats/t-test.q:529 #: src/language/stats/t-test.q:628 -#, fuzzy msgid "SE. Mean" -msgstr "Mitj. E.E." +msgstr "E.E. Mitj." #: src/language/stats/t-test.q:523 -#, fuzzy msgid "Group Statistics" -msgstr "Estatístic" +msgstr "Estadístiques de grup" #: src/language/stats/t-test.q:622 -#, fuzzy msgid "Paired Sample Statistics" -msgstr "Proves Estad." +msgstr "Estadistiques de mostres aparellades" #: src/language/stats/t-test.q:642 src/language/stats/t-test.q:945 #: src/language/stats/t-test.q:1119 #, c-format msgid "Pair %d" -msgstr "" +msgstr "Parell %d" #: src/language/stats/t-test.q:738 msgid "Independent Samples Test" -msgstr "" +msgstr "Prova per mostres independents" #: src/language/stats/t-test.q:746 msgid "Levene's Test for Equality of Variances" -msgstr "" +msgstr "Prova de Levene per a l'igualtat de variancies" #: src/language/stats/t-test.q:748 msgid "t-test for Equality of Means" -msgstr "" +msgstr "Prova T per l'igualtat de Mitjanes" #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:1107 -#, fuzzy msgid "Sig." -msgstr "Cadena" +msgstr "Sig." #: src/language/stats/t-test.q:755 src/language/stats/t-test.q:1013 -#, fuzzy msgid "Mean Difference" -msgstr "Diferències Negatives" +msgstr "Diferència Mitjana" #: src/language/stats/t-test.q:756 -#, fuzzy msgid "Std. Error Difference" -msgstr "Error Est." +msgstr "Err.Est. de la Diferència" #: src/language/stats/t-test.q:761 src/language/stats/t-test.q:915 #: src/language/stats/t-test.q:1005 -#, fuzzy, c-format +#, c-format msgid "%g%% Confidence Interval of the Difference" -msgstr " Interval de Confiança Asimp. %g%%" +msgstr "Interval de confiança de la Diferència %g%%" #: src/language/stats/t-test.q:815 msgid "Equal variances assumed" -msgstr "" +msgstr "S'asumeix igualtat de variancies" #: src/language/stats/t-test.q:861 msgid "Equal variances not assumed" -msgstr "" +msgstr "Igualtat de variancies no asumida" #: src/language/stats/t-test.q:905 msgid "Paired Samples Test" -msgstr "" +msgstr "Prova de mostres aparellades" #: src/language/stats/t-test.q:908 -#, fuzzy msgid "Paired Differences" -msgstr "Diferències Negatives" +msgstr "Diferències aparellades" #: src/language/stats/t-test.q:920 -#, fuzzy msgid "Std. Error Mean" -msgstr "Error Est." +msgstr "Error Est. Mitjana" #: src/language/stats/t-test.q:994 msgid "One-Sample Test" -msgstr "" +msgstr "Prova d'una mostra" #: src/language/stats/t-test.q:999 #, c-format msgid "Test Value = %f" -msgstr "" +msgstr "Valor de prova = %f" #: src/language/stats/t-test.q:1102 msgid "Paired Samples Correlations" -msgstr "" +msgstr "Correlacions de mostres aparellades" #: src/language/stats/t-test.q:1106 msgid "Correlation" -msgstr "" +msgstr "Correlació" #: src/language/stats/t-test.q:1121 #, c-format msgid "%s & %s" -msgstr "" +msgstr "%s & %s" #: src/language/data-io/file-handle.q:65 #, c-format msgid "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining a file handle." -msgstr "" +msgstr "El manipulador d'arxiu %s ja ha esta definit. Utilitzar CLOSE FILE HANDLE abans de redefinir un manipulador d'arxius." #: src/language/data-io/file-handle.q:120 msgid "RECFORM must be specified with MODE=360." -msgstr "" +msgstr "RECFORM ha de ser espeficat amb MODE=360." #: src/language/data-io/file-handle.q:131 #, c-format msgid "The specified file mode requires LRECL. Assuming %d-character records." -msgstr "" +msgstr "El mode d'arxiu especificat requereix LRECL. S'asumeix %d-registres de caracter." #: src/language/data-io/file-handle.q:135 #, c-format msgid "Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character records." -msgstr "" +msgstr "L'amplada de registre (%ld) ha d'estar entre 1 i %lu bytes. S'asumeix %d-registres de caracter." #: src/language/data-io/file-handle.q:177 -#, fuzzy msgid "file" -msgstr "Arxiu:" +msgstr "arxiu" #: src/language/data-io/file-handle.q:179 msgid "inline file" -msgstr "" +msgstr "arxiu en linia" #: src/language/data-io/file-handle.q:205 -#, fuzzy msgid "expecting a file name or handle name" -msgstr "esperant nom d'arxiu" +msgstr "experant un nom d'arxiu o un manipulador" #: src/language/data-io/file-handle.q:225 -#, fuzzy, c-format +#, c-format msgid "Handle for %s not allowed here." -msgstr "L'arxiu en línia no està permès aquí." +msgstr "Aquí no està permès un manipulador per a %s." #: src/language/data-io/list.q:165 #, c-format msgid "The first case (%ld) specified precedes the last case (%ld) specified. The values will be swapped." -msgstr "" +msgstr "El primer cas (%ld) especificat precedeix a l'ultim cas (%ld) especificat. Els valors s'intercanviaran." #: src/language/data-io/list.q:173 #, c-format msgid "The first case (%ld) to list is less than 1. The value is being reset to 1." -msgstr "" +msgstr "EL primer cas (%ld) per llistar es menor que 1. El valor es retorna a 1." #: src/language/data-io/list.q:179 #, c-format msgid "The last case (%ld) to list is less than 1. The value is being reset to 1." -msgstr "" +msgstr "L'últim cas (%ld) per llistar es menor que 1. El valor es restaura a 1.." #: src/language/data-io/list.q:185 #, c-format msgid "The step value %ld is less than 1. The value is being reset to 1." -msgstr "" +msgstr "El valor del pas %ld es menor que 1. el valor es retorna a 1." #: src/language/data-io/list.q:211 msgid "`/FORMAT WEIGHT' specified, but weighting is not on." -msgstr "" +msgstr "`/FORMAT WEIGHT' especificat, però la ponderació no està activada." #: src/language/data-io/list.q:468 msgid "Line" -msgstr "" +msgstr "Linea" diff --git a/po/nl.po b/po/nl.po index 0f838d8fb0..d75d400b5e 100644 --- a/po/nl.po +++ b/po/nl.po @@ -30,7 +30,7 @@ msgstr "" "Project-Id-Version: pspp-0.7.2-pre1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" "POT-Creation-Date: 2009-09-08 21:57-0700\n" -"PO-Revision-Date: 2009-11-16 18:38+0100\n" +"PO-Revision-Date: 2009-12-21 19:12+0100\n" "Last-Translator: Harry Thijssen \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" @@ -3673,13 +3673,13 @@ msgstr "Start een interactieve sessie" #: src/ui/gui/about.c:64 msgid "A program for the analysis of sampled data" -msgstr "Een programma voor de analyse van bemonsterde gegevens." +msgstr "Een programma voor de analyse van bemonsterde gegevens" #. TRANSLATORS: Use this string to list the people who have helped with #. translation to your language. #: src/ui/gui/about.c:74 msgid "translator-credits" -msgstr "vertaler-credits" +msgstr "Harry Thijssen" #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1234 #: src/language/stats/crosstabs.q:1261 src/language/stats/crosstabs.q:1285 @@ -4253,7 +4253,7 @@ msgstr "Als u niet opslaat zullen de aanpassingen van de laatste %ld seconden pe #: src/ui/gui/psppire-window.c:491 msgid "Close _without saving" -msgstr "%s zonder %s" +msgstr "Sluit _zonder opslaan" #: src/ui/gui/recode-dialog.c:881 msgid "Recode into Different Variables" diff --git a/src/language/command.def b/src/language/command.def index 066ecf92c4..d51f329593 100644 --- a/src/language/command.def +++ b/src/language/command.def @@ -106,6 +106,7 @@ DEF_CMD (S_DATA, 0, "DESCRIPTIVES", cmd_descriptives) DEF_CMD (S_DATA, 0, "EXAMINE", cmd_examine) DEF_CMD (S_DATA, 0, "EXECUTE", cmd_execute) DEF_CMD (S_DATA, 0, "EXPORT", cmd_export) +DEF_CMD (S_DATA, 0, "FACTOR", cmd_factor) DEF_CMD (S_DATA, 0, "FILTER", cmd_filter) DEF_CMD (S_DATA, 0, "FLIP", cmd_flip) DEF_CMD (S_DATA, 0, "FREQUENCIES", cmd_frequencies) @@ -175,7 +176,6 @@ UNIMPL_CMD ("DETECTANOMALY", "Find unusual cases") UNIMPL_CMD ("DISCRIMINANT", "Linear discriminant analysis") UNIMPL_CMD ("EDIT", "obsolete") UNIMPL_CMD ("END FILE TYPE", "Ends complex data input") -UNIMPL_CMD ("FACTOR", "Factor analysis") UNIMPL_CMD ("FILE TYPE", "Complex data input") UNIMPL_CMD ("FIT", "Goodness of Fit") UNIMPL_CMD ("GENLOG", "Categorical model fitting") diff --git a/src/language/stats/automake.mk b/src/language/stats/automake.mk index 05e8bcf944..21e3f0ae4e 100644 --- a/src/language/stats/automake.mk +++ b/src/language/stats/automake.mk @@ -28,6 +28,7 @@ language_stats_sources = \ src/language/stats/sort-cases.c \ src/language/stats/sort-criteria.c \ src/language/stats/sort-criteria.h \ + src/language/stats/factor.c \ src/language/stats/flip.c \ src/language/stats/freq.c \ src/language/stats/freq.h \ diff --git a/src/language/stats/factor.c b/src/language/stats/factor.c new file mode 100644 index 0000000000..b035fc8d8a --- /dev/null +++ b/src/language/stats/factor.c @@ -0,0 +1,1529 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 2009 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +enum method + { + METHOD_CORR, + METHOD_COV + }; + +enum missing_type + { + MISS_LISTWISE, + MISS_PAIRWISE, + MISS_MEANSUB, + }; + +enum extraction_method + { + EXTRACTION_PC, + EXTRACTION_PAF, + }; + +enum print_opts + { + PRINT_UNIVARIATE = 0x0001, + PRINT_DETERMINANT = 0x0002, + PRINT_INV = 0x0004, + PRINT_AIC = 0x0008, + PRINT_SIG = 0x0010, + PRINT_COVARIANCE = 0x0020, + PRINT_CORRELATION = 0x0040, + PRINT_ROTATION = 0x0080, + PRINT_EXTRACTION = 0x0100, + PRINT_INITIAL = 0x0200, + PRINT_KMO = 0x0400, + PRINT_REPR = 0x0800, + PRINT_FSCORE = 0x1000 + }; + + +struct cmd_factor +{ + size_t n_vars; + const struct variable **vars; + + const struct variable *wv; + + enum method method; + enum missing_type missing_type; + enum mv_class exclude; + enum print_opts print; + enum extraction_method extraction; + + /* Extraction Criteria */ + int n_factors; + double min_eigen; + double econverge; + int iterations; + + /* Format */ + double blank; + bool sort; +}; + +struct idata +{ + /* Intermediate values used in calculation */ + + const gsl_matrix *corr ; /* The correlation matrix */ + const gsl_matrix *cov ; /* The covariance matrix */ + const gsl_matrix *n ; /* Matrix of number of samples */ + + gsl_vector *eval ; /* The eigenvalues */ + gsl_matrix *evec ; /* The eigenvectors */ + + int n_extractions; + + gsl_vector *msr ; /* Multiple Squared Regressions */ +}; + +static struct idata * +idata_alloc (size_t n_vars) +{ + struct idata *id = xzalloc (sizeof (*id)); + + id->n_extractions = 0; + id->msr = gsl_vector_alloc (n_vars); + + id->eval = gsl_vector_alloc (n_vars); + id->evec = gsl_matrix_alloc (n_vars, n_vars); + + return id; +} + +static void +idata_free (struct idata *id) +{ + gsl_vector_free (id->msr); + gsl_vector_free (id->eval); + gsl_matrix_free (id->evec); + + free (id); +} + + +static void +dump_matrix (const gsl_matrix *m) +{ + size_t i, j; + + for (i = 0 ; i < m->size1; ++i) + { + for (j = 0 ; j < m->size2; ++j) + printf ("%02f ", gsl_matrix_get (m, i, j)); + printf ("\n"); + } +} + + +static void +dump_matrix_permute (const gsl_matrix *m, const gsl_permutation *p) +{ + size_t i, j; + + for (i = 0 ; i < m->size1; ++i) + { + for (j = 0 ; j < m->size2; ++j) + printf ("%02f ", gsl_matrix_get (m, gsl_permutation_get (p, i), j)); + printf ("\n"); + } +} + + +static void +dump_vector (const gsl_vector *v) +{ + size_t i; + for (i = 0 ; i < v->size; ++i) + { + printf ("%02f\n", gsl_vector_get (v, i)); + } + printf ("\n"); +} + + +static int +n_extracted_factors (const struct cmd_factor *factor, struct idata *idata) +{ + int i; + + /* If there is a cached value, then return that. */ + if ( idata->n_extractions != 0) + return idata->n_extractions; + + /* Otherwise, if the number of factors has been explicitly requested, + use that. */ + if (factor->n_factors > 0) + { + idata->n_extractions = factor->n_factors; + goto finish; + } + + /* Use the MIN_EIGEN setting. */ + for (i = 0 ; i < idata->eval->size; ++i) + { + double evali = fabs (gsl_vector_get (idata->eval, i)); + + idata->n_extractions = i; + + if (evali < factor->min_eigen) + goto finish; + } + + finish: + return idata->n_extractions; +} + + +/* Returns a newly allocated matrix identical to M. + It it the callers responsibility to free the returned value. +*/ +static gsl_matrix * +matrix_dup (const gsl_matrix *m) +{ + gsl_matrix *n = gsl_matrix_alloc (m->size1, m->size2); + + gsl_matrix_memcpy (n, m); + + return n; +} + + +struct smr_workspace +{ + /* Copy of the subject */ + gsl_matrix *m; + + gsl_matrix *inverse; + + gsl_permutation *perm; + + gsl_matrix *result1; + gsl_matrix *result2; +}; + + +static struct smr_workspace *ws_create (const gsl_matrix *input) +{ + struct smr_workspace *ws = xmalloc (sizeof (*ws)); + + ws->m = gsl_matrix_alloc (input->size1, input->size2); + ws->inverse = gsl_matrix_calloc (input->size1 - 1, input->size2 - 1); + ws->perm = gsl_permutation_alloc (input->size1 - 1); + ws->result1 = gsl_matrix_calloc (input->size1 - 1, 1); + ws->result2 = gsl_matrix_calloc (1, 1); + + return ws; +} + +static void +ws_destroy (struct smr_workspace *ws) +{ + gsl_matrix_free (ws->result2); + gsl_matrix_free (ws->result1); + gsl_permutation_free (ws->perm); + gsl_matrix_free (ws->inverse); + gsl_matrix_free (ws->m); + + free (ws); +} + + +/* + Return the square of the regression coefficient for VAR regressed against all other variables. + */ +static double +squared_multiple_correlation (const gsl_matrix *corr, int var, struct smr_workspace *ws) +{ + /* For an explanation of what this is doing, see + http://www.visualstatistics.net/Visual%20Statistics%20Multimedia/multiple_regression_analysis.htm + */ + + int signum = 0; + gsl_matrix_view rxx; + + gsl_matrix_memcpy (ws->m, corr); + + gsl_matrix_swap_rows (ws->m, 0, var); + gsl_matrix_swap_columns (ws->m, 0, var); + + rxx = gsl_matrix_submatrix (ws->m, 1, 1, ws->m->size1 - 1, ws->m->size1 - 1); + + gsl_linalg_LU_decomp (&rxx.matrix, ws->perm, &signum); + + gsl_linalg_LU_invert (&rxx.matrix, ws->perm, ws->inverse); + + { + gsl_matrix_const_view rxy = gsl_matrix_const_submatrix (ws->m, 1, 0, ws->m->size1 - 1, 1); + gsl_matrix_const_view ryx = gsl_matrix_const_submatrix (ws->m, 0, 1, 1, ws->m->size1 - 1); + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, ws->inverse, &rxy.matrix, 0.0, ws->result1); + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, &ryx.matrix, ws->result1, 0.0, ws->result2); + } + + return gsl_matrix_get (ws->result2, 0, 0); +} + + + +static double the_communality (const gsl_matrix *evec, const gsl_vector *eval, int n, int n_factors); + + +struct factor_matrix_workspace +{ + size_t n_factors; + gsl_eigen_symmv_workspace *eigen_ws; + + gsl_vector *eval ; + gsl_matrix *evec ; + + gsl_matrix *gamma ; + + gsl_matrix *r; +}; + +static struct factor_matrix_workspace * +factor_matrix_workspace_alloc (size_t n, size_t nf) +{ + struct factor_matrix_workspace *ws = xmalloc (sizeof (*ws)); + + ws->n_factors = nf; + ws->gamma = gsl_matrix_calloc (nf, nf); + ws->eigen_ws = gsl_eigen_symmv_alloc (n); + ws->eval = gsl_vector_alloc (n); + ws->evec = gsl_matrix_alloc (n, n); + ws->r = gsl_matrix_alloc (n, n); + + return ws; +} + +static void +factor_matrix_workspace_free (struct factor_matrix_workspace *ws) +{ + gsl_eigen_symmv_free (ws->eigen_ws); + gsl_vector_free (ws->eval); + gsl_matrix_free (ws->evec); + gsl_matrix_free (ws->gamma); + gsl_matrix_free (ws->r); + free (ws); +} + +/* + Shift P left by OFFSET places, and overwrite TARGET + with the shifted result. + Positions in TARGET less than OFFSET are unchanged. +*/ +static void +perm_shift_apply (gsl_permutation *target, const gsl_permutation *p, + size_t offset) +{ + size_t i; + assert (target->size == p->size); + assert (offset <= target->size); + + for (i = 0; i < target->size - offset; ++i) + { + target->data[i] = p->data [i + offset]; + } +} + + +/* + Indirectly sort the rows of matrix INPUT, storing the sort order in PERM. + The sort criteria are as follows: + + Rows are sorted on the first column, until the absolute value of an + element in a subsequent column is greater than that of the first + column. Thereafter, rows will be sorted on the second column, + until the absolute value of an element in a subsequent column + exceeds that of the second column ... +*/ +static void +sort_matrix_indirect (const gsl_matrix *input, gsl_permutation *perm) +{ + const size_t n = perm->size; + const size_t m = input->size2; + int i, j; + gsl_matrix *mat ; + int column_n = 0; + int row_n = 0; + gsl_permutation *p; + + assert (perm->size == input->size1); + + p = gsl_permutation_alloc (n); + + /* Copy INPUT into MAT, discarding the sign */ + mat = gsl_matrix_alloc (n, m); + for (i = 0 ; i < mat->size1; ++i) + { + for (j = 0 ; j < mat->size2; ++j) + { + double x = gsl_matrix_get (input, i, j); + gsl_matrix_set (mat, i, j, fabs (x)); + } + } + + while (column_n < m && row_n < n) + { + gsl_vector_const_view columni = gsl_matrix_const_column (mat, column_n); + gsl_sort_vector_index (p, &columni.vector); + + for (i = 0 ; i < n; ++i) + { + gsl_vector_view row = gsl_matrix_row (mat, p->data[n - 1 - i]); + size_t maxindex = gsl_vector_max_index (&row.vector); + + if ( maxindex > column_n ) + break; + + /* All subsequent elements of this row, are of no interest. + So set them all to a highly negative value */ + for (j = column_n + 1; j < row.vector.size ; ++j) + gsl_vector_set (&row.vector, j, -DBL_MAX); + } + + perm_shift_apply (perm, p, row_n); + row_n += i; + + column_n++; + } + + gsl_permutation_free (p); + gsl_matrix_free (mat); + + assert ( 0 == gsl_permutation_valid (perm)); + + /* We want the biggest value to be first */ + gsl_permutation_reverse (perm); +} + + +/* + Get an approximation for the factor matrix into FACTORS, and the communalities into COMMUNALITIES. + R is the matrix to be analysed. + WS is a pointer to a structure which must have been initialised with factor_matrix_workspace_init. + */ +static void +iterate_factor_matrix (const gsl_matrix *r, gsl_vector *communalities, gsl_matrix *factors, struct factor_matrix_workspace *ws) +{ + size_t i; + gsl_matrix_view mv ; + + assert (r->size1 == r->size2); + assert (r->size1 == communalities->size); + + assert (factors->size1 == r->size1); + assert (factors->size2 == ws->n_factors); + + gsl_matrix_memcpy (ws->r, r); + + /* Apply Communalities to diagonal of correlation matrix */ + for (i = 0 ; i < communalities->size ; ++i) + { + double *x = gsl_matrix_ptr (ws->r, i, i); + *x = gsl_vector_get (communalities, i); + } + + gsl_eigen_symmv (ws->r, ws->eval, ws->evec, ws->eigen_ws); + + mv = gsl_matrix_submatrix (ws->evec, 0, 0, ws->evec->size1, ws->n_factors); + + /* Gamma is the diagonal matrix containing the absolute values of the eigenvalues */ + for (i = 0 ; i < ws->n_factors ; ++i) + { + double *ptr = gsl_matrix_ptr (ws->gamma, i, i); + *ptr = fabs (gsl_vector_get (ws->eval, i)); + } + + /* Take the square root of gamma */ + gsl_linalg_cholesky_decomp (ws->gamma); + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, &mv.matrix, ws->gamma, 0.0, factors); + + for (i = 0 ; i < r->size1 ; ++i) + { + double h = the_communality (ws->evec, ws->eval, i, ws->n_factors); + gsl_vector_set (communalities, i, h); + } +} + + + +static bool run_factor (struct dataset *ds, const struct cmd_factor *factor); + + +int +cmd_factor (struct lexer *lexer, struct dataset *ds) +{ + bool extraction_seen = false; + const struct dictionary *dict = dataset_dict (ds); + + struct cmd_factor factor; + factor.method = METHOD_CORR; + factor.missing_type = MISS_LISTWISE; + factor.exclude = MV_ANY; + factor.print = PRINT_INITIAL | PRINT_EXTRACTION | PRINT_ROTATION; + factor.extraction = EXTRACTION_PC; + factor.n_factors = 0; + factor.min_eigen = SYSMIS; + factor.iterations = 25; + factor.econverge = 0.001; + factor.blank = 0; + factor.sort = false; + + factor.wv = dict_get_weight (dict); + + lex_match (lexer, '/'); + + if (!lex_force_match_id (lexer, "VARIABLES")) + { + goto error; + } + + lex_match (lexer, '='); + + if (!parse_variables_const (lexer, dict, &factor.vars, &factor.n_vars, + PV_NO_DUPLICATE | PV_NUMERIC)) + goto error; + + while (lex_token (lexer) != '.') + { + lex_match (lexer, '/'); + +#if FACTOR_FULLY_IMPLEMENTED + if (lex_match_id (lexer, "PLOT")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "EIGEN")) + { + } + else if (lex_match_id (lexer, "ROTATION")) + { + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else +#endif + if (lex_match_id (lexer, "METHOD")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "COVARIANCE")) + { + factor.method = METHOD_COV; + } + else if (lex_match_id (lexer, "CORRELATION")) + { + factor.method = METHOD_CORR; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } +#if FACTOR_FULLY_IMPLEMENTED + else if (lex_match_id (lexer, "ROTATION")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "VARIMAX")) + { + } + else if (lex_match_id (lexer, "DEFAULT")) + { + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } +#endif + else if (lex_match_id (lexer, "CRITERIA")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "FACTORS")) + { + if ( lex_force_match (lexer, '(')) + { + lex_force_int (lexer); + factor.n_factors = lex_integer (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + } + else if (lex_match_id (lexer, "MINEIGEN")) + { + if ( lex_force_match (lexer, '(')) + { + lex_force_num (lexer); + factor.min_eigen = lex_number (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + } + else if (lex_match_id (lexer, "ECONVERGE")) + { + if ( lex_force_match (lexer, '(')) + { + lex_force_num (lexer); + factor.econverge = lex_number (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + } + else if (lex_match_id (lexer, "ITERATE")) + { + if ( lex_force_match (lexer, '(')) + { + lex_force_int (lexer); + factor.iterations = lex_integer (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + } + else if (lex_match_id (lexer, "DEFAULT")) + { + factor.n_factors = 0; + factor.min_eigen = 1; + factor.iterations = 25; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "EXTRACTION")) + { + extraction_seen = true; + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "PAF")) + { + factor.extraction = EXTRACTION_PAF; + } + else if (lex_match_id (lexer, "PC")) + { + factor.extraction = EXTRACTION_PC; + } + else if (lex_match_id (lexer, "PA1")) + { + factor.extraction = EXTRACTION_PC; + } + else if (lex_match_id (lexer, "DEFAULT")) + { + factor.extraction = EXTRACTION_PC; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "FORMAT")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "SORT")) + { + factor.sort = true; + } + else if (lex_match_id (lexer, "BLANK")) + { + if ( lex_force_match (lexer, '(')) + { + lex_force_num (lexer); + factor.blank = lex_number (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + } + else if (lex_match_id (lexer, "DEFAULT")) + { + factor.blank = 0; + factor.sort = false; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "PRINT")) + { + factor.print = 0; + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "UNIVARIATE")) + { + factor.print |= PRINT_UNIVARIATE; + } + else if (lex_match_id (lexer, "DET")) + { + factor.print |= PRINT_DETERMINANT; + } +#if FACTOR_FULLY_IMPLEMENTED + else if (lex_match_id (lexer, "INV")) + { + } + else if (lex_match_id (lexer, "AIC")) + { + } +#endif + else if (lex_match_id (lexer, "SIG")) + { + factor.print |= PRINT_SIG; + } + else if (lex_match_id (lexer, "CORRELATION")) + { + factor.print |= PRINT_CORRELATION; + } +#if FACTOR_FULLY_IMPLEMENTED + else if (lex_match_id (lexer, "COVARIANCE")) + { + } +#endif + else if (lex_match_id (lexer, "ROTATION")) + { + factor.print |= PRINT_ROTATION; + } + else if (lex_match_id (lexer, "EXTRACTION")) + { + factor.print |= PRINT_EXTRACTION; + } + else if (lex_match_id (lexer, "INITIAL")) + { + factor.print |= PRINT_INITIAL; + } +#if FACTOR_FULLY_IMPLEMENTED + else if (lex_match_id (lexer, "KMO")) + { + } + else if (lex_match_id (lexer, "REPR")) + { + } + else if (lex_match_id (lexer, "FSCORE")) + { + } +#endif + else if (lex_match (lexer, T_ALL)) + { + factor.print = 0xFFFF; + } + else if (lex_match_id (lexer, "DEFAULT")) + { + factor.print |= PRINT_INITIAL ; + factor.print |= PRINT_EXTRACTION ; + factor.print |= PRINT_ROTATION ; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "MISSING")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "INCLUDE")) + { + factor.exclude = MV_SYSTEM; + } + else if (lex_match_id (lexer, "EXCLUDE")) + { + factor.exclude = MV_ANY; + } + else if (lex_match_id (lexer, "LISTWISE")) + { + factor.missing_type = MISS_LISTWISE; + } + else if (lex_match_id (lexer, "PAIRWISE")) + { + factor.missing_type = MISS_PAIRWISE; + } + else if (lex_match_id (lexer, "MEANSUB")) + { + factor.missing_type = MISS_MEANSUB; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + + if ( ! run_factor (ds, &factor)) + goto error; + + free (factor.vars); + return CMD_SUCCESS; + + error: + free (factor.vars); + return CMD_FAILURE; +} + +static void do_factor (const struct cmd_factor *factor, struct casereader *group); + + +static bool +run_factor (struct dataset *ds, const struct cmd_factor *factor) +{ + struct dictionary *dict = dataset_dict (ds); + bool ok; + struct casereader *group; + + struct casegrouper *grouper = casegrouper_create_splits (proc_open (ds), dict); + + while (casegrouper_get_next_group (grouper, &group)) + { + if ( factor->missing_type == MISS_LISTWISE ) + group = casereader_create_filter_missing (group, factor->vars, factor->n_vars, + factor->exclude, + NULL, NULL); + do_factor (factor, group); + } + + ok = casegrouper_destroy (grouper); + ok = proc_commit (ds) && ok; + + return ok; +} + + +/* Return the communality of variable N, calculated to N_FACTORS */ +static double +the_communality (const gsl_matrix *evec, const gsl_vector *eval, int n, int n_factors) +{ + size_t i; + + double comm = 0; + + assert (n >= 0); + assert (n < eval->size); + assert (n < evec->size1); + assert (n_factors <= eval->size); + + for (i = 0 ; i < n_factors; ++i) + { + double evali = fabs (gsl_vector_get (eval, i)); + + double eveci = gsl_matrix_get (evec, n, i); + + comm += pow2 (eveci) * evali; + } + + return comm; +} + +/* Return the communality of variable N, calculated to N_FACTORS */ +static double +communality (struct idata *idata, int n, int n_factors) +{ + return the_communality (idata->evec, idata->eval, n, n_factors); +} + + + +static void +show_communalities (const struct cmd_factor * factor, + const gsl_vector *initial, const gsl_vector *extracted) +{ + int i; + int c = 0; + const int heading_columns = 1; + int nc = heading_columns; + const int heading_rows = 1; + const int nr = heading_rows + factor->n_vars; + struct tab_table *t; + + if (factor->print & PRINT_EXTRACTION) + nc++; + + if (factor->print & PRINT_INITIAL) + nc++; + + /* No point having a table with only headings */ + if (nc <= 1) + return; + + t = tab_create (nc, nr); + + tab_title (t, _("Communalities")); + + tab_dim (t, tab_natural_dimensions, NULL, NULL); + + tab_headers (t, heading_columns, 0, heading_rows, 0); + + c = 1; + if (factor->print & PRINT_INITIAL) + tab_text (t, c++, 0, TAB_CENTER | TAT_TITLE, _("Initial")); + + if (factor->print & PRINT_EXTRACTION) + tab_text (t, c++, 0, TAB_CENTER | TAT_TITLE, _("Extraction")); + + /* Outline the box */ + tab_box (t, + TAL_2, TAL_2, + -1, -1, + 0, 0, + nc - 1, nr - 1); + + /* Vertical lines */ + tab_box (t, + -1, -1, + -1, TAL_1, + heading_columns, 0, + nc - 1, nr - 1); + + tab_hline (t, TAL_1, 0, nc - 1, heading_rows); + tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + + for (i = 0 ; i < factor->n_vars; ++i) + { + c = 0; + tab_text (t, c++, i + heading_rows, TAT_TITLE, var_to_string (factor->vars[i])); + + if (factor->print & PRINT_INITIAL) + tab_double (t, c++, i + heading_rows, 0, gsl_vector_get (initial, i), NULL); + + if (factor->print & PRINT_EXTRACTION) + tab_double (t, c++, i + heading_rows, 0, gsl_vector_get (extracted, i), NULL); + } + + tab_submit (t); +} + + +static void +show_factor_matrix (const struct cmd_factor *factor, struct idata *idata, const gsl_matrix *fm) +{ + int i; + const int n_factors = n_extracted_factors (factor, idata); + + const int heading_columns = 1; + const int heading_rows = 2; + const int nr = heading_rows + factor->n_vars; + const int nc = heading_columns + n_factors; + gsl_permutation *perm; + + struct tab_table *t = tab_create (nc, nr); + + if ( factor->extraction == EXTRACTION_PC ) + tab_title (t, _("Component Matrix")); + else + tab_title (t, _("Factor Matrix")); + + tab_dim (t, tab_natural_dimensions, NULL, NULL); + + tab_headers (t, heading_columns, 0, heading_rows, 0); + + if ( factor->extraction == EXTRACTION_PC ) + tab_joint_text (t, + 1, 0, + nc - 1, 0, + TAB_CENTER | TAT_TITLE, _("Component")); + else + tab_joint_text (t, + 1, 0, + nc - 1, 0, + TAB_CENTER | TAT_TITLE, _("Factor")); + + + tab_hline (t, TAL_1, heading_columns, nc - 1, 1); + + + /* Outline the box */ + tab_box (t, + TAL_2, TAL_2, + -1, -1, + 0, 0, + nc - 1, nr - 1); + + /* Vertical lines */ + tab_box (t, + -1, -1, + -1, TAL_1, + heading_columns, 1, + nc - 1, nr - 1); + + tab_hline (t, TAL_1, 0, nc - 1, heading_rows); + tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + + + /* Initialise to the identity permutation */ + perm = gsl_permutation_calloc (factor->n_vars); + + if ( factor->sort) + sort_matrix_indirect (fm, perm); + + for (i = 0 ; i < n_factors; ++i) + { + tab_text_format (t, heading_columns + i, 1, TAB_CENTER | TAT_TITLE, _("%d"), i + 1); + } + + for (i = 0 ; i < factor->n_vars; ++i) + { + int j; + const int matrix_row = perm->data[i]; + tab_text (t, 0, i + heading_rows, TAT_TITLE, var_to_string (factor->vars[matrix_row])); + + for (j = 0 ; j < n_factors; ++j) + { + double x = gsl_matrix_get (fm, matrix_row, j); + + if ( fabs (x) < factor->blank) + continue; + + tab_double (t, heading_columns + j, heading_rows + i, 0, x, NULL); + } + } + + gsl_permutation_free (perm); + + tab_submit (t); +} + + +static void +show_explained_variance (const struct cmd_factor * factor, struct idata *idata, + const gsl_vector *initial_eigenvalues, + const gsl_vector *extracted_eigenvalues) +{ + size_t i; + int c = 0; + const int heading_columns = 1; + const int heading_rows = 2; + const int nr = heading_rows + factor->n_vars; + + struct tab_table *t ; + + double i_total = 0.0; + double i_cum = 0.0; + + double e_total = 0.0; + double e_cum = 0.0; + + int nc = heading_columns; + + if (factor->print & PRINT_EXTRACTION) + nc += 3; + + if (factor->print & PRINT_INITIAL) + nc += 3; + + if (factor->print & PRINT_ROTATION) + nc += 3; + + /* No point having a table with only headings */ + if ( nc <= heading_columns) + return; + + t = tab_create (nc, nr); + + tab_title (t, _("Total Variance Explained")); + + tab_dim (t, tab_natural_dimensions, NULL, NULL); + + tab_headers (t, heading_columns, 0, heading_rows, 0); + + /* Outline the box */ + tab_box (t, + TAL_2, TAL_2, + -1, -1, + 0, 0, + nc - 1, nr - 1); + + /* Vertical lines */ + tab_box (t, + -1, -1, + -1, TAL_1, + heading_columns, 0, + nc - 1, nr - 1); + + tab_hline (t, TAL_1, 0, nc - 1, heading_rows); + tab_hline (t, TAL_1, 1, nc - 1, 1); + + tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + + + if ( factor->extraction == EXTRACTION_PC) + tab_text (t, 0, 1, TAB_LEFT | TAT_TITLE, _("Component")); + else + tab_text (t, 0, 1, TAB_LEFT | TAT_TITLE, _("Factor")); + + c = 1; + if (factor->print & PRINT_INITIAL) + { + tab_joint_text (t, c, 0, c + 2, 0, TAB_CENTER | TAT_TITLE, _("Initial Eigenvalues")); + c += 3; + } + + if (factor->print & PRINT_EXTRACTION) + { + tab_joint_text (t, c, 0, c + 2, 0, TAB_CENTER | TAT_TITLE, _("Extraction Sums of Squared Loadings")); + c += 3; + } + + if (factor->print & PRINT_ROTATION) + { + tab_joint_text (t, c, 0, c + 2, 0, TAB_CENTER | TAT_TITLE, _("Rotation Sums of Squared Loadings")); + c += 3; + } + + for (i = 0; i < (nc - heading_columns) / 3 ; ++i) + { + tab_text (t, i * 3 + 1, 1, TAB_CENTER | TAT_TITLE, _("Total")); + tab_text (t, i * 3 + 2, 1, TAB_CENTER | TAT_TITLE, _("% of Variance")); + tab_text (t, i * 3 + 3, 1, TAB_CENTER | TAT_TITLE, _("Cumulative %")); + + tab_vline (t, TAL_2, heading_columns + i * 3, 0, nr - 1); + } + + for (i = 0 ; i < initial_eigenvalues->size; ++i) + i_total += gsl_vector_get (initial_eigenvalues, i); + + if ( factor->extraction == EXTRACTION_PAF) + { + e_total = factor->n_vars; + } + else + { + e_total = i_total; + } + + + for (i = 0 ; i < factor->n_vars; ++i) + { + const double i_lambda = gsl_vector_get (initial_eigenvalues, i); + double i_percent = 100.0 * i_lambda / i_total ; + + const double e_lambda = gsl_vector_get (extracted_eigenvalues, i); + double e_percent = 100.0 * e_lambda / e_total ; + + c = 0; + + tab_text_format (t, c++, i + heading_rows, TAB_LEFT | TAT_TITLE, _("%d"), i + 1); + + i_cum += i_percent; + e_cum += e_percent; + + /* Initial Eigenvalues */ + if (factor->print & PRINT_INITIAL) + { + tab_double (t, c++, i + heading_rows, 0, i_lambda, NULL); + tab_double (t, c++, i + heading_rows, 0, i_percent, NULL); + tab_double (t, c++, i + heading_rows, 0, i_cum, NULL); + } + + if (factor->print & PRINT_EXTRACTION) + { + if ( i < n_extracted_factors (factor, idata)) + { + /* Sums of squared loadings */ + tab_double (t, c++, i + heading_rows, 0, e_lambda, NULL); + tab_double (t, c++, i + heading_rows, 0, e_percent, NULL); + tab_double (t, c++, i + heading_rows, 0, e_cum, NULL); + } + } + } + + tab_submit (t); +} + + +static void +show_correlation_matrix (const struct cmd_factor *factor, const struct idata *idata) +{ + struct tab_table *t ; + size_t i, j; + int y_pos_corr = -1; + int y_pos_sig = -1; + int suffix_rows = 0; + + const int heading_rows = 1; + const int heading_columns = 2; + + int nc = heading_columns ; + int nr = heading_rows ; + int n_data_sets = 0; + + if (factor->print & PRINT_CORRELATION) + { + y_pos_corr = n_data_sets; + n_data_sets++; + nc = heading_columns + factor->n_vars; + } + + if (factor->print & PRINT_SIG) + { + y_pos_sig = n_data_sets; + n_data_sets++; + nc = heading_columns + factor->n_vars; + } + + nr += n_data_sets * factor->n_vars; + + if (factor->print & PRINT_DETERMINANT) + suffix_rows = 1; + + /* If the table would contain only headings, don't bother rendering it */ + if (nr <= heading_rows && suffix_rows == 0) + return; + + t = tab_create (nc, nr + suffix_rows); + + tab_title (t, _("Correlation Matrix")); + + tab_dim (t, tab_natural_dimensions, NULL, NULL); + + tab_hline (t, TAL_1, 0, nc - 1, heading_rows); + + if (nr > heading_rows) + { + tab_headers (t, heading_columns, 0, heading_rows, 0); + + tab_vline (t, TAL_2, 2, 0, nr - 1); + + /* Outline the box */ + tab_box (t, + TAL_2, TAL_2, + -1, -1, + 0, 0, + nc - 1, nr - 1); + + /* Vertical lines */ + tab_box (t, + -1, -1, + -1, TAL_1, + heading_columns, 0, + nc - 1, nr - 1); + + + for (i = 0; i < factor->n_vars; ++i) + tab_text (t, heading_columns + i, 0, TAT_TITLE, var_to_string (factor->vars[i])); + + + for (i = 0 ; i < n_data_sets; ++i) + { + int y = heading_rows + i * factor->n_vars; + size_t v; + for (v = 0; v < factor->n_vars; ++v) + tab_text (t, 1, y + v, TAT_TITLE, var_to_string (factor->vars[v])); + + tab_hline (t, TAL_1, 0, nc - 1, y); + } + + if (factor->print & PRINT_CORRELATION) + { + const double y = heading_rows + y_pos_corr; + tab_text (t, 0, y, TAT_TITLE, _("Correlations")); + + for (i = 0; i < factor->n_vars; ++i) + { + for (j = 0; j < factor->n_vars; ++j) + tab_double (t, heading_columns + i, y + j, 0, gsl_matrix_get (idata->corr, i, j), NULL); + } + } + + if (factor->print & PRINT_SIG) + { + const double y = heading_rows + y_pos_sig * factor->n_vars; + tab_text (t, 0, y, TAT_TITLE, _("Sig. 1-tailed")); + + for (i = 0; i < factor->n_vars; ++i) + { + for (j = 0; j < factor->n_vars; ++j) + { + double rho = gsl_matrix_get (idata->corr, i, j); + double w = gsl_matrix_get (idata->n, i, j); + + if (i == j) + continue; + + tab_double (t, heading_columns + i, y + j, 0, significance_of_correlation (rho, w), NULL); + } + } + } + } + + if (factor->print & PRINT_DETERMINANT) + { + int sign = 0; + double det = 0.0; + + const int size = idata->corr->size1; + gsl_permutation *p = gsl_permutation_calloc (size); + gsl_matrix *tmp = gsl_matrix_calloc (size, size); + gsl_matrix_memcpy (tmp, idata->corr); + + gsl_linalg_LU_decomp (tmp, p, &sign); + det = gsl_linalg_LU_det (tmp, sign); + gsl_permutation_free (p); + gsl_matrix_free (tmp); + + + tab_text (t, 0, nr, TAB_LEFT | TAT_TITLE, _("Determinant")); + tab_double (t, 1, nr, 0, det, NULL); + } + + tab_submit (t); +} + + + +static void +do_factor (const struct cmd_factor *factor, struct casereader *r) +{ + struct ccase *c; + const gsl_matrix *var_matrix; + const gsl_matrix *mean_matrix; + + const gsl_matrix *analysis_matrix; + struct idata *idata = idata_alloc (factor->n_vars); + + struct covariance *cov = covariance_create (factor->n_vars, factor->vars, + factor->wv, factor->exclude); + + for ( ; (c = casereader_read (r) ); case_unref (c)) + { + covariance_accumulate (cov, c); + } + + idata->cov = covariance_calculate (cov); + + var_matrix = covariance_moments (cov, MOMENT_VARIANCE); + mean_matrix = covariance_moments (cov, MOMENT_MEAN); + idata->n = covariance_moments (cov, MOMENT_NONE); + + if ( factor->method == METHOD_CORR) + { + idata->corr = correlation_from_covariance (idata->cov, var_matrix); + analysis_matrix = idata->corr; + } + else + analysis_matrix = idata->cov; + + if ( factor->print & PRINT_UNIVARIATE) + { + const int nc = 4; + int i; + const struct fmt_spec *wfmt = factor->wv ? var_get_print_format (factor->wv) : & F_8_0; + + + const int heading_columns = 1; + const int heading_rows = 1; + + const int nr = heading_rows + factor->n_vars; + + struct tab_table *t = tab_create (nc, nr); + tab_title (t, _("Descriptive Statistics")); + tab_dim (t, tab_natural_dimensions, NULL, NULL); + + tab_headers (t, heading_columns, 0, heading_rows, 0); + + /* Outline the box */ + tab_box (t, + TAL_2, TAL_2, + -1, -1, + 0, 0, + nc - 1, nr - 1); + + /* Vertical lines */ + tab_box (t, + -1, -1, + -1, TAL_1, + heading_columns, 0, + nc - 1, nr - 1); + + tab_hline (t, TAL_1, 0, nc - 1, heading_rows); + tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + + tab_text (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Mean")); + tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation")); + tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("Analysis N")); + + for (i = 0 ; i < factor->n_vars; ++i) + { + const struct variable *v = factor->vars[i]; + tab_text (t, 0, i + heading_rows, TAB_LEFT | TAT_TITLE, var_to_string (v)); + + tab_double (t, 1, i + heading_rows, 0, gsl_matrix_get (mean_matrix, i, i), NULL); + tab_double (t, 2, i + heading_rows, 0, sqrt (gsl_matrix_get (var_matrix, i, i)), NULL); + tab_double (t, 3, i + heading_rows, 0, gsl_matrix_get (idata->n, i, i), wfmt); + } + + tab_submit (t); + } + + show_correlation_matrix (factor, idata); + +#if 1 + { + gsl_eigen_symmv_workspace *workspace = gsl_eigen_symmv_alloc (factor->n_vars); + + gsl_eigen_symmv (matrix_dup (analysis_matrix), idata->eval, idata->evec, workspace); + + gsl_eigen_symmv_free (workspace); + } + + gsl_eigen_symmv_sort (idata->eval, idata->evec, GSL_EIGEN_SORT_ABS_DESC); +#endif + + { + const gsl_vector *extracted_eigenvalues = NULL; + gsl_vector *initial_communalities = gsl_vector_alloc (factor->n_vars); + gsl_vector *extracted_communalities = gsl_vector_alloc (factor->n_vars); + size_t i; + struct factor_matrix_workspace *fmw = factor_matrix_workspace_alloc (idata->msr->size, n_extracted_factors (factor, idata)); + gsl_matrix *factor_matrix = gsl_matrix_calloc (factor->n_vars, fmw->n_factors); + + if ( factor->extraction == EXTRACTION_PAF) + { + gsl_vector *diff = gsl_vector_alloc (idata->msr->size); + struct smr_workspace *ws = ws_create (analysis_matrix); + + for (i = 0 ; i < factor->n_vars ; ++i) + { + double r2 = squared_multiple_correlation (analysis_matrix, i, ws); + + gsl_vector_set (idata->msr, i, r2); + } + ws_destroy (ws); + + gsl_vector_memcpy (initial_communalities, idata->msr); + + for (i = 0; i < factor->iterations; ++i) + { + double min, max; + gsl_vector_memcpy (diff, idata->msr); + + iterate_factor_matrix (analysis_matrix, idata->msr, factor_matrix, fmw); + + gsl_vector_sub (diff, idata->msr); + + gsl_vector_minmax (diff, &min, &max); + + if ( fabs (min) < factor->econverge && fabs (max) < factor->econverge) + break; + } + gsl_vector_free (diff); + + gsl_vector_memcpy (extracted_communalities, idata->msr); + extracted_eigenvalues = fmw->eval; + } + else if (factor->extraction == EXTRACTION_PC) + { + for (i = 0 ; i < factor->n_vars; ++i) + { + gsl_vector_set (initial_communalities, i, communality (idata, i, factor->n_vars)); + } + gsl_vector_memcpy (extracted_communalities, initial_communalities); + + iterate_factor_matrix (analysis_matrix, extracted_communalities, factor_matrix, fmw); + extracted_eigenvalues = idata->eval; + } + + show_communalities (factor, initial_communalities, extracted_communalities); + + show_explained_variance (factor, idata, idata->eval, extracted_eigenvalues); + + factor_matrix_workspace_free (fmw); + + show_factor_matrix (factor, idata, factor_matrix); + + gsl_vector_free (initial_communalities); + gsl_vector_free (extracted_communalities); + } + + idata_free (idata); + + casereader_destroy (r); +}