From: John Darrington Date: Fri, 21 May 2010 10:22:51 +0000 (+0200) Subject: Merge commit 'origin/covariance' X-Git-Tag: v0.7.5~7 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f550aee00a62fe1d8baf62d83cd7efef6cc2ee92;hp=18ef561271ad1b619f62d994e3dc2286958532f1;p=pspp-builds.git Merge commit 'origin/covariance' Conflicts: src/data/dictionary.c src/language/stats/correlations.c src/language/stats/regression.q src/math/automake.mk --- diff --git a/po/ca.po b/po/ca.po index f0752809..a0e3deb2 100644 --- a/po/ca.po +++ b/po/ca.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pspp-0.7.2-pre1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-09 21:32+0200\n" +"POT-Creation-Date: 2010-05-21 12:02+0200\n" "PO-Revision-Date: 2010-01-24 16:28+0100\n" "Last-Translator: Francesc Josep Miguel Quesada \n" "Language-Team: Catalan \n" @@ -250,7 +250,7 @@ msgstr "sistema" msgid "scratch" msgstr "zero" -#: src/data/dictionary.c:981 +#: src/data/dictionary.c:980 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." @@ -258,7 +258,7 @@ msgstr "" "Almenys un cas a l'arxiu de dades tenia un valor de ponderació que és perdut " "d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)." -#: src/data/dictionary.c:1284 +#: src/data/dictionary.c:1283 #, c-format msgid "Truncating document line to %d bytes." msgstr "Línia de document tallada a %d bytes." @@ -350,20 +350,20 @@ msgstr[1] "" msgid "%s variables are not compatible with %s format %s." msgstr "Les variables %s no són compatibles amb %s format %s." -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "Cadena" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "Numèric" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -371,8 +371,8 @@ msgstr "Numèric" msgid "numeric" msgstr "numèric" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -578,7 +578,7 @@ msgstr "Amplada de la variable invàlida %d." msgid "Invalid variable name `%s' in position %d." msgstr "Nom de la variable invàlid `%s' en la posició %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:602 +#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 #, c-format msgid "Bad width %d for variable %s." msgstr "Amplada %d incorrecte per a la variable %s." @@ -699,7 +699,7 @@ msgstr "" msgid "Variable suffix too large." msgstr "Sufix de la variable massa gran." -#: src/data/sys-file-reader.c:222 +#: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "" @@ -708,42 +708,42 @@ msgstr "" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:286 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 msgid "system file" msgstr "arxiu de sistema" -#: src/data/sys-file-reader.c:293 +#: src/data/sys-file-reader.c:297 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "Error al obrir \"%s\" per a la lectura com arxiu de sistema: %s." -#: src/data/sys-file-reader.c:332 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 msgid "Misplaced type 4 record." msgstr "Registre de tipus 4 fora de lloc." -#: src/data/sys-file-reader.c:343 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 #, c-format msgid "Unrecognized record type %d." msgstr "Tipus de registre %d no reconegut." -#: src/data/sys-file-reader.c:384 +#: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" "Capçalera de l'arxiu requereix %d posicions de variable, però s'han llegit %" "d des de l'arxiu." -#: src/data/sys-file-reader.c:424 +#: src/data/sys-file-reader.c:428 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "Error al tancar l'arxiu de sistema \"%s\": %s." -#: src/data/sys-file-reader.c:489 src/data/sys-file-reader.c:499 +#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 #: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 msgid "This is not an SPSS system file." msgstr "Això no és un arxiu de sistema de SPSS." -#: src/data/sys-file-reader.c:521 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." @@ -751,78 +751,73 @@ msgstr "" "El biaix de compressió no és el valor habitual de 100, o l'arxiu de sistema " "utilitza un format de punt flotant no reconegut." -#: src/data/sys-file-reader.c:598 +#: src/data/sys-file-reader.c:602 #, c-format msgid "Invalid variable name `%s'." msgstr "Nom de variable '%s' no vàlid." -#: src/data/sys-file-reader.c:606 +#: src/data/sys-file-reader.c:610 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "Nom de variable '%s' duplicat dins de l'arxiu de sistema." -#: src/data/sys-file-reader.c:614 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 msgid "Variable label indicator field is not 0 or 1." msgstr "Camp indicador d'etiqueta de variable no és 0 o 1." -#: src/data/sys-file-reader.c:622 tests/dissect-sysfile.c:365 -#, c-format -msgid "Variable %s has label of invalid length %zu." -msgstr "Variable %s té una etiqueta de longitud no vàlida %zu." - -#: src/data/sys-file-reader.c:641 tests/dissect-sysfile.c:383 +#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" "Camp d'indicador de valors perduts numèrics no és -3, -2, 0, 1, 2 o 3." -#: src/data/sys-file-reader.c:659 tests/dissect-sysfile.c:398 +#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "Camp d'indicador de valors perduts de cadena no és 0, 1, 2 o 3." -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:699 msgid "Missing string continuation record." msgstr "Manca de registre de continuació de cadena." -#: src/data/sys-file-reader.c:725 +#: src/data/sys-file-reader.c:733 #, c-format msgid "Unknown variable format %." msgstr "Format de variable % desconegut." -#: src/data/sys-file-reader.c:743 +#: src/data/sys-file-reader.c:751 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "%s variable %s amb un format %s no vàlid %s." -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "print" msgstr "imprimir" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "write" msgstr "escriure" -#: src/data/sys-file-reader.c:750 +#: src/data/sys-file-reader.c:758 msgid "Suppressing further invalid format warnings." msgstr "Es desactiven les alertes posteriors de format no vàlid." -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:776 msgid "Weighting variable must be numeric." msgstr "Variable de ponderació ha de ser numèrica." -#: src/data/sys-file-reader.c:782 +#: src/data/sys-file-reader.c:790 msgid "Multiple type 6 (document) records." msgstr "Múltiples registres de tipus 6 (document)." -#: src/data/sys-file-reader.c:786 +#: src/data/sys-file-reader.c:794 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "Nombre de línies de document (%d) ha de ser major que 0." -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:802 msgid "Document line contains null byte." msgstr "Una línia del document conté un byte nul." -#: src/data/sys-file-reader.c:885 +#: src/data/sys-file-reader.c:893 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " @@ -831,14 +826,14 @@ msgstr "" "Registre de tipus 7, subtipus %d , no reconegut. Si us plau envieu una còpia " "d'aquest arxiu, així com de la sintaxi que el va crear a %s" -#: src/data/sys-file-reader.c:912 tests/dissect-sysfile.c:590 +#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "" "Camp de longitud (%zu) o quantitat (%zu) invàlids en el registre tipus 7, " "subtipus 3." -#: src/data/sys-file-reader.c:932 +#: src/data/sys-file-reader.c:940 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " @@ -847,90 +842,90 @@ msgstr "" "Representació del punt flotant indicat per l'arxiu de sistema (%d) difereix " "de l'esperat (%d)." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 #, fuzzy msgid "Little Endian" msgstr "Little Endian." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 #, fuzzy msgid "Big Endian" msgstr "Big Endian." -#: src/data/sys-file-reader.c:946 +#: src/data/sys-file-reader.c:954 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." msgstr "" "Format enter indicat per l'arxiu de sistema (%s) difereix de l'esperat (%s)." -#: src/data/sys-file-reader.c:1003 tests/dissect-sysfile.c:621 +#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "Longitud (%zu) o quantitat (%zu) de l'extensió 4 no vàlid." -#: src/data/sys-file-reader.c:1007 src/data/sys-file-reader.c:1011 -#: src/data/sys-file-reader.c:1015 tests/dissect-sysfile.c:626 -#: tests/dissect-sysfile.c:631 tests/dissect-sysfile.c:636 +#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 +#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "L'arxiu especifica un valor inesperat %g com a %s." -#: src/data/sys-file-reader.c:1048 +#: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1066 tests/dissect-sysfile.c:687 +#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1075 tests/dissect-sysfile.c:696 +#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format msgid "" "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " "record" msgstr "" -#: src/data/sys-file-reader.c:1081 +#: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1110 +#: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1121 +#: src/data/sys-file-reader.c:1129 #, fuzzy, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "Nom de la variable %s duplicat en la posició %d." -#: src/data/sys-file-reader.c:1134 +#: src/data/sys-file-reader.c:1142 #, fuzzy, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "" "Ignorant el registre del valor de cadena llarga per a la variable numèrica %" "s." -#: src/data/sys-file-reader.c:1149 +#: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." msgstr "" -#: src/data/sys-file-reader.c:1186 tests/dissect-sysfile.c:754 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." msgstr "Longitud no vàlid %zu en l'extensió 11." -#: src/data/sys-file-reader.c:1198 tests/dissect-sysfile.c:766 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "Extensió 11 té un recompte invàlid %zu (per a %zu variables)." -#: src/data/sys-file-reader.c:1219 +#: src/data/sys-file-reader.c:1227 #, c-format msgid "" "Invalid variable display parameters for variable %zu (%s). Default " @@ -939,26 +934,26 @@ msgstr "" "Paràmetres de visualització de variable no vàlids per a la variable %zu (%" "s). Substitució pels paràmetres per defecte." -#: src/data/sys-file-reader.c:1263 +#: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "" "Identificació de variable llarga des de %s cap a un nom de variable invàlid " "'%s'." -#: src/data/sys-file-reader.c:1273 +#: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "Nom de la variable llarga '%s' duplicat dins de l'arxiu de sistema." -#: src/data/sys-file-reader.c:1326 +#: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." msgstr "" "%s figura com a cadena de longitud no vàlida %s en un registre de cadena " "molt llarg." -#: src/data/sys-file-reader.c:1336 +#: src/data/sys-file-reader.c:1344 #, c-format msgid "" "%s listed in very long string record with width %s, which requires only one " @@ -967,12 +962,12 @@ msgstr "" "%s figura en el registre de cadena molt llarga amb longitud %s, que " "requereix només un segment." -#: src/data/sys-file-reader.c:1342 +#: src/data/sys-file-reader.c:1350 #, c-format msgid "Very long string %s overflows dictionary." msgstr "Cadena molt llarga %s desborda el diccionari." -#: src/data/sys-file-reader.c:1356 +#: src/data/sys-file-reader.c:1364 #, c-format msgid "" "Very long string with width %ld has segment %d of width %d (expected %d)" @@ -980,12 +975,12 @@ msgstr "" "Cadena molt llarga amb una longitud de %ld té un segment %d de longitud %d " "(s'espera %d)" -#: src/data/sys-file-reader.c:1402 +#: src/data/sys-file-reader.c:1410 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Nombre d'etiquetes invàlid: %d. Ignorant etiquetes." -#: src/data/sys-file-reader.c:1433 tests/dissect-sysfile.c:464 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." @@ -993,7 +988,7 @@ msgstr "" "Registre d'índex de variable (tipus 4) no és seguit immediatament pel " "registre d'etiquetes de valors (tipus 3) com hauria." -#: src/data/sys-file-reader.c:1440 +#: src/data/sys-file-reader.c:1448 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " @@ -1002,7 +997,7 @@ msgstr "" "Nombre de variables associades amb una etiqueta de valors (%d) no està entre " "1 i el nombre de variables (%zu)." -#: src/data/sys-file-reader.c:1451 +#: src/data/sys-file-reader.c:1459 #, c-format msgid "" "Value labels may not be added to long string variables (e.g. %s) using " @@ -1011,7 +1006,7 @@ msgstr "" "No es pot afegir etiquetes dels valors a les variables de cadena llarga (e." "g. %s) utilitzant els tipus de registres 3 i 4." -#: src/data/sys-file-reader.c:1460 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "" "Variables associated with value label are not all of identical type. " @@ -1020,27 +1015,27 @@ msgstr "" "Les variables associades amb etiqueta de valors no són totes del mateix " "tipus. La variable %s és %s, però la variable %s és %s." -#: src/data/sys-file-reader.c:1494 +#: src/data/sys-file-reader.c:1502 #, c-format msgid "Duplicate value label for %g on %s." msgstr "Etiqueta de valors duplicats per %g en %s." -#: src/data/sys-file-reader.c:1497 src/data/sys-file-reader.c:1678 +#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "Etiqueta de valor duplicat per a \"%.*s\" a %s." -#: src/data/sys-file-reader.c:1535 +#: src/data/sys-file-reader.c:1543 #, c-format msgid "Error parsing attribute value %s[%d]" msgstr "Error en analitzar el valor de l'atribut %s[%d]" -#: src/data/sys-file-reader.c:1549 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "Attribute value %s[%d] is not quoted: %s" msgstr "El valor de l'atribut %s[%d] no esta entre cometes: %s" -#: src/data/sys-file-reader.c:1612 tests/dissect-sysfile.c:932 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format msgid "" "Variable name length in long string value label record (%d) exceeds %d-byte " @@ -1049,21 +1044,21 @@ msgstr "" "La longitud del nom de la variable al registre de l'etiqueta del valor de " "cadena llarga (%d) supera el límit %d-byte." -#: src/data/sys-file-reader.c:1622 +#: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." msgstr "" "Ignorant el registre del valor de cadena llarga per a la variable " "desconeguda %s." -#: src/data/sys-file-reader.c:1629 +#: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." msgstr "" "Ignorant el registre del valor de cadena llarga per a la variable numèrica %" "s." -#: src/data/sys-file-reader.c:1636 +#: src/data/sys-file-reader.c:1644 #, c-format msgid "" "Ignoring long string value record for variable %s because the record's width " @@ -1072,7 +1067,7 @@ msgstr "" "Ignorant el registre del valor de cadena llarga %s ja que l'amplada del " "registre (%d) no coincideix amb l'amplada de la variable (%d)" -#: src/data/sys-file-reader.c:1658 +#: src/data/sys-file-reader.c:1666 #, c-format msgid "" "Ignoring long string value %zu for variable %s, with width %d, that has bad " @@ -1081,75 +1076,75 @@ msgstr "" "Ignorant el valor de cadena llarga %zu per a la variable %s, d'amplada %d, " "que té una amplada de valor incorrecta %zu." -#: src/data/sys-file-reader.c:1773 +#: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." msgstr "L'arxiu acaba en un cas parcial." -#: src/data/sys-file-reader.c:1781 +#: src/data/sys-file-reader.c:1789 #, c-format msgid "Error reading case from file %s." msgstr "Error llegint un cas de l'arxiu %s." -#: src/data/sys-file-reader.c:1882 +#: src/data/sys-file-reader.c:1890 msgid "" "Possible compressed data corruption: compressed spaces appear in numeric " "field." msgstr "" -#: src/data/sys-file-reader.c:1935 +#: src/data/sys-file-reader.c:1943 #, c-format msgid "" "Possible compressed data corruption: string contains compressed integer " "(opcode %d)" msgstr "" -#: src/data/sys-file-reader.c:2027 +#: src/data/sys-file-reader.c:2035 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "Índex de la variable %d no en l'interval vàlid de 1...%d." -#: src/data/sys-file-reader.c:2032 +#: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "" "Índex de la variable %d es refereix a una continuació de cadena llarga." -#: src/data/sys-file-reader.c:2100 +#: src/data/sys-file-reader.c:2108 #, c-format msgid "Suppressed %d additional related warnings." msgstr "Suprimides %d advertències addicionals." -#: src/data/sys-file-reader.c:2141 +#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 #, fuzzy, c-format msgid "Dictionary record refers to unknown variable %s." msgstr "Mapa de la variable es refereix a una variable desconeguda %s." -#: src/data/sys-file-reader.c:2202 +#: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2209 +#: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2216 +#: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." msgstr "" -#: src/data/sys-file-reader.c:2226 +#: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2318 tests/dissect-sysfile.c:1337 +#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format msgid "System error: %s." msgstr "Error de sistema: %s." -#: src/data/sys-file-reader.c:2320 tests/dissect-sysfile.c:1339 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 msgid "Unexpected end of file." msgstr "Final d'arxiu inesperat." @@ -1168,7 +1163,7 @@ msgstr "Error en obrir \"%s\" per gravar com arxiu de sistema: %s." msgid "An I/O error occurred writing system file \"%s\"." msgstr "S'ha produït un error de E/S al desar l'arxiu de sistema \"%s\"." -#: src/data/variable.c:215 +#: src/data/variable.c:206 #, c-format msgid "" "Character `%c' (in %s) may not appear as the first character in a variable " @@ -1177,21 +1172,21 @@ msgstr "" "Caràcter '%c' (em %s) no pot aparèixer com el primer caràcter en un nom de " "variable." -#: src/data/variable.c:227 +#: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "Caràcter '%c' (em %s) no pot aparèixer en un nom de variable." -#: src/data/variable.c:253 +#: src/data/variable.c:244 msgid "Variable name cannot be empty string." msgstr "El nom de la variable no pot ser una cadena buida. " -#: src/data/variable.c:259 +#: src/data/variable.c:250 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "El nom de la variable %s supera el límit de %d caràcters." -#: src/data/variable.c:267 +#: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" @@ -2163,7 +2158,7 @@ msgid "IBM 390 Hex Long." msgstr "IBM 390 Hex Long." #: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:161 src/ui/gui/recode.ui:960 +#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "Variables:" @@ -2554,7 +2549,7 @@ msgstr "Variable de destí %s duplica una variable existent %s." msgid "Variable %s is not dichotomous" msgstr "La variable %s no és dicotòmica" -#: src/language/stats/binomial.c:192 +#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "Prova Binomial" @@ -2567,13 +2562,13 @@ msgid "Group2" msgstr "Grup 2" #: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1188 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 #: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 #: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 #: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 #: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 #: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:306 src/language/stats/reliability.q:702 +#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 msgid "Total" msgstr "Total" @@ -2582,8 +2577,8 @@ msgstr "Total" msgid "Category" msgstr "Categoria" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:120 -#: src/language/stats/correlations.c:228 src/language/stats/npar-summary.c:122 +#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 #: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 #: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 #: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 @@ -2624,7 +2619,7 @@ msgid "Expected N" msgstr "N esperat" #: src/language/stats/chisquare.c:163 src/language/stats/chisquare.c:202 -#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:305 +#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:290 msgid "Residual" msgstr "Residual" @@ -2644,7 +2639,7 @@ msgstr "Chi-quadrat" #: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 #: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 -#: src/language/stats/regression.q:299 src/language/stats/t-test.q:752 +#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "df" @@ -2653,13 +2648,13 @@ msgstr "df" msgid "Asymp. Sig." msgstr "Sig. Asimpt." -#: src/language/stats/correlations.c:97 src/language/stats/factor.c:1431 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 #: src/language/stats/npar-summary.c:108 msgid "Descriptive Statistics" msgstr "Estadístiques Descriptives" -#: src/language/stats/correlations.c:118 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1452 src/language/stats/npar-summary.c:125 +#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 +#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 #: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 #: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 #: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 @@ -2668,7 +2663,7 @@ msgstr "Estadístiques Descriptives" msgid "Mean" msgstr "Mitjana" -#: src/language/stats/correlations.c:119 src/language/stats/factor.c:1453 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 #: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 #: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 @@ -2676,37 +2671,37 @@ msgstr "Mitjana" msgid "Std. Deviation" msgstr "Desviació Est." -#: src/language/stats/correlations.c:191 src/language/stats/factor.c:1331 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 #, fuzzy msgid "Correlations" msgstr "Correlació" -#: src/language/stats/correlations.c:217 +#: src/language/stats/correlations.c:216 #, fuzzy msgid "Pearson Correlation" msgstr "Correlació de Spearman" -#: src/language/stats/correlations.c:219 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "Sig. (2-cues)" -#: src/language/stats/correlations.c:219 +#: src/language/stats/correlations.c:218 #, fuzzy msgid "Sig. (1-tailed)" msgstr "Sig. (2-cues)" -#: src/language/stats/correlations.c:223 +#: src/language/stats/correlations.c:222 msgid "Cross-products" msgstr "" -#: src/language/stats/correlations.c:224 +#: src/language/stats/correlations.c:223 #, fuzzy msgid "Covariance" msgstr "Covariància" -#: src/language/stats/correlations.c:446 src/language/stats/descriptives.c:361 +#: src/language/stats/correlations.c:454 src/language/stats/descriptives.c:361 #: src/language/data-io/list.q:91 msgid "No variables specified." msgstr "Variables no especificades." @@ -2836,53 +2831,44 @@ msgstr "`)' esperat." msgid "Variable %s specified twice in sort criteria." msgstr "La variable %s s'especifica dues vegades als criteris d'ordenació." -#: src/language/stats/factor.c:558 +#: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." msgstr "" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Component Number" msgstr "Columna Numero: 0" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Factor Number" msgstr "Número de Cas" -#: src/language/stats/factor.c:970 +#: src/language/stats/factor.c:1237 #, fuzzy msgid "Communalities" msgstr "Comentaris:" -#: src/language/stats/factor.c:976 +#: src/language/stats/factor.c:1243 msgid "Initial" msgstr "" -#: src/language/stats/factor.c:979 +#: src/language/stats/factor.c:1246 msgid "Extraction" msgstr "" -#: src/language/stats/factor.c:1029 -msgid "Component Matrix" -msgstr "" - -#: src/language/stats/factor.c:1031 -#, fuzzy -msgid "Factor Matrix" -msgstr "Llista de Factors:" - -#: src/language/stats/factor.c:1039 src/language/stats/factor.c:1163 +#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 #, fuzzy msgid "Component" msgstr "Comentaris:" -#: src/language/stats/factor.c:1044 src/language/stats/factor.c:1165 +#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 #, fuzzy msgid "Factor" msgstr "_Factor:" -#: src/language/stats/factor.c:1076 src/language/stats/factor.c:1219 +#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: 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 @@ -2890,62 +2876,80 @@ msgstr "_Factor:" msgid "%d" msgstr "%d" -#: src/language/stats/factor.c:1138 +#: src/language/stats/factor.c:1412 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1170 +#: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1176 +#: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1182 +#: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1190 +#: src/language/stats/factor.c:1464 #, fuzzy, no-c-format msgid "% of Variance" msgstr "Variància" -#: src/language/stats/factor.c:1191 +#: src/language/stats/factor.c:1465 msgid "Cumulative %" msgstr "" -#: src/language/stats/factor.c:1289 +#: src/language/stats/factor.c:1578 #, fuzzy msgid "Correlation Matrix" msgstr "Correlació" -#: src/language/stats/factor.c:1343 +#: src/language/stats/factor.c:1632 #, fuzzy msgid "Sig. 1-tailed" msgstr "Sig. (2-cues)" -#: src/language/stats/factor.c:1377 +#: src/language/stats/factor.c:1666 #, fuzzy msgid "Determinant" msgstr "Dependent" -#: src/language/stats/factor.c:1454 +#: src/language/stats/factor.c:1743 msgid "Analysis N" msgstr "" -#: src/language/stats/factor.c:1487 +#: src/language/stats/factor.c:1776 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1493 +#: src/language/stats/factor.c:1782 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" +#: src/language/stats/factor.c:1865 +msgid "Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1865 +#, fuzzy +msgid "Factor Matrix" +msgstr "Llista de Factors:" + +#: src/language/stats/factor.c:1871 +msgid "Rotated Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1871 +#, fuzzy +msgid "Rotated Factor Matrix" +msgstr "Llista de Factors:" + #: src/language/stats/flip.c:98 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." @@ -3036,7 +3040,7 @@ msgstr "Àrea" #: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 #: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:201 +#: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "Error Est." @@ -3946,7 +3950,7 @@ msgstr "" msgid "ascii: opening output file \"%s\"" msgstr "ascii: obrint l'arxiu de resultats \"%s\"" -#: src/output/ascii.c:913 src/output/cairo.c:826 +#: src/output/ascii.c:913 src/output/cairo.c:784 #, c-format msgid "%s - Page %d" msgstr "%s - Pàgina %d" @@ -4064,12 +4068,12 @@ msgid "" msgstr "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" -#: src/output/cairo.c:283 +#: src/output/cairo.c:295 #, fuzzy, c-format msgid "error opening output file \"%s\": %s" msgstr "ascii: obrint l'arxiu de resultats \"%s\"" -#: src/output/cairo.c:301 +#: src/output/cairo.c:312 #, fuzzy, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " @@ -4080,7 +4084,7 @@ msgstr "" "només hi ha espai per %d línies de cada font en la mida per defecte de %d.%" "03d punts." -#: src/output/cairo.c:311 +#: src/output/cairo.c:322 #, fuzzy, c-format msgid "" "The defined page is not long enough to hold margins and headers, plus least %" @@ -4091,17 +4095,17 @@ msgstr "" "només hi ha espai per %d línies de cada font en la mida per defecte de %d.%" "03d punts." -#: src/output/cairo.c:364 +#: src/output/cairo.c:376 #, fuzzy, c-format msgid "error drawing output for %s driver: %s" msgstr "error de sintaxi analitzant opcions pel controlador \"%s\"" -#: src/output/cairo.c:906 +#: src/output/cairo.c:864 #, c-format msgid "\"%s\": bad font specification" msgstr "\"%s\": especificació de caràcter no vàlida" -#: src/output/cairo.c:1116 +#: src/output/cairo.c:1084 #, fuzzy, c-format msgid "error writing output file \"%s\": %s" msgstr "Error en tancar l'arxiu portàtil \"%s\": %s." @@ -4200,16 +4204,6 @@ msgstr "" msgid "%s: output option specified more than once" msgstr "" -#: src/ui/gui/about.c:66 -msgid "A program for the analysis of sampled data" -msgstr "Un programa per a l'anàlisi de dades de mostreig" - -#. TRANSLATORS: Use this string to list the people who have helped with -#. translation to your language. -#: src/ui/gui/about.c:76 -msgid "translator-credits" -msgstr "F.J. Miguel, J. Gómez, P. Payà" - #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 #: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 @@ -4276,7 +4270,7 @@ msgstr "Corr." #: src/ui/gui/crosstabs-dialog.c:54 src/ui/gui/crosstabs-dialog.c:65 #: src/ui/gui/crosstabs-dialog.c:100 src/ui/gui/crosstabs-dialog.c:108 #: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16 -#: src/ui/gui/variable-info-dialog.c:40 +#: src/ui/gui/variable-info-dialog.c:41 msgid "None" msgstr "Cap" @@ -4312,12 +4306,12 @@ msgstr "Desviació Estàndard" msgid "Standard error" msgstr "Error Estàndard" -#: src/ui/gui/find-dialog.c:651 +#: src/ui/gui/find-dialog.c:649 #, c-format msgid "Bad regular expression: %s" msgstr "Expressió regular incorrecta: %s" -#: src/ui/gui/factor-dialog.c:230 +#: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" msgstr "" @@ -4343,17 +4337,35 @@ msgstr "Error estàndard en la curtosi" msgid "Median" msgstr "Mediana" -#: src/ui/gui/helper.c:196 +#: src/ui/gui/helper.c:197 msgid "Sorry. The help system hasn't yet been implemented." msgstr "Disculpeu. El sistema d'ajuda encara no ha estat implementat." -#: src/ui/gui/helper.c:241 +#: src/ui/gui/help-menu.c:67 +msgid "A program for the analysis of sampled data" +msgstr "Un programa per a l'anàlisi de dades de mostreig" + +#. TRANSLATORS: Use this string to list the people who have helped with +#. translation to your language. +#: src/ui/gui/help-menu.c:77 +msgid "translator-credits" +msgstr "F.J. Miguel, J. Gómez, P. Payà" + +#: src/ui/gui/help-menu.c:98 #, c-format msgid "" "Cannot open reference manual: %s. The PSPP user manual is also available at " "http://www.gnu.org/software/pspp/documentation.html" msgstr "" +#: src/ui/gui/help-menu.c:117 +msgid "_Help" +msgstr "Ajut" + +#: src/ui/gui/help-menu.c:124 +msgid "_Reference Manual" +msgstr "Manual de _Referencia" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "Valor incorrecte pel tipus de variable" @@ -4362,7 +4374,7 @@ msgstr "Valor incorrecte pel tipus de variable" msgid "Incorrect range specification" msgstr "Especificació d'interval incorrecte" -#: src/ui/gui/oneway-anova-dialog.c:314 +#: src/ui/gui/oneway-anova-dialog.c:313 #, c-format msgid "Contrast %d of %d" msgstr "Contrast %d de %d" @@ -4387,58 +4399,58 @@ msgstr "Vista de Variables" msgid "var" msgstr "var" -#: src/ui/gui/psppire-data-window.c:210 +#: src/ui/gui/psppire-data-window.c:212 msgid "Transformations Pending" msgstr "Transformacions pendents" -#: src/ui/gui/psppire-data-window.c:226 +#: src/ui/gui/psppire-data-window.c:228 msgid "Filter off" msgstr "Filtre desactivat" -#: src/ui/gui/psppire-data-window.c:240 +#: src/ui/gui/psppire-data-window.c:242 #, c-format msgid "Filter by %s" msgstr "Filtrat per %s" -#: src/ui/gui/psppire-data-window.c:261 +#: src/ui/gui/psppire-data-window.c:263 msgid "No Split" msgstr "No dividit" -#: src/ui/gui/psppire-data-window.c:270 +#: src/ui/gui/psppire-data-window.c:272 msgid "Split by " msgstr "Dividit per " -#: src/ui/gui/psppire-data-window.c:298 +#: src/ui/gui/psppire-data-window.c:300 msgid "Weights off" msgstr "Sense Ponderar:" -#: src/ui/gui/psppire-data-window.c:312 +#: src/ui/gui/psppire-data-window.c:314 #, c-format msgid "Weight by %s" msgstr "Ponderat per %s" -#: src/ui/gui/psppire-data-window.c:380 +#: src/ui/gui/psppire-data-window.c:382 msgid "Open" msgstr "Obert" -#: src/ui/gui/psppire-data-window.c:390 +#: src/ui/gui/psppire-data-window.c:392 #, fuzzy msgid "Data and Syntax Files" msgstr "No es pot obrir l'arxiu de sintaxi \"%s\"" -#: src/ui/gui/psppire-data-window.c:400 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 msgid "System Files (*.sav)" msgstr "Arxius de Sistema (*.sav)" -#: src/ui/gui/psppire-data-window.c:406 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 msgid "Portable Files (*.por) " msgstr "Arxius Portables (*.por)" -#: src/ui/gui/psppire-data-window.c:412 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 msgid "Syntax Files (*.sps) " msgstr "Arxius de Sintàxi (*.sps) " -#: src/ui/gui/psppire-data-window.c:418 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Tots els arxius" @@ -4451,46 +4463,46 @@ msgstr "Desar" msgid "Portable File" msgstr "Arxiu Portable" -#: src/ui/gui/psppire-data-window.c:786 +#: src/ui/gui/psppire-data-window.c:773 msgid "Font Selection" msgstr "Selecció de font" -#: src/ui/gui/psppire-data-window.c:1581 +#: src/ui/gui/psppire-data-window.c:1261 msgid "Data Editor" msgstr "Editor de Dades" -#: src/ui/gui/psppire-output-window.c:441 +#: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" msgstr "" -#: src/ui/gui/psppire-output-window.c:449 +#: src/ui/gui/psppire-output-window.c:466 #, fuzzy msgid "PDF Files (*.pdf)" msgstr "Arxius Portables (*.por)" -#: src/ui/gui/psppire-output-window.c:450 +#: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" msgstr "" -#: src/ui/gui/psppire-output-window.c:451 +#: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:452 +#: src/ui/gui/psppire-output-window.c:469 #, fuzzy msgid "Text Files (*.txt)" msgstr "Arxius de Sistema (*.sav)" -#: src/ui/gui/psppire-output-window.c:453 +#: src/ui/gui/psppire-output-window.c:470 #, fuzzy msgid "PostScript Files (*.ps)" msgstr "Arxius Portables (*.por)" -#: src/ui/gui/psppire-output-window.c:454 +#: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" msgstr "" -#: src/ui/gui/psppire-output-window.c:593 +#: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" msgstr "Vista de resultats" @@ -4503,11 +4515,11 @@ msgstr "Desat com a arxiu \"%s\"" msgid "Save Syntax" msgstr "Desar sintaxi" -#: src/ui/gui/psppire-syntax-window.c:512 +#: src/ui/gui/psppire-syntax-window.c:496 msgid "Syntax Editor" msgstr "Editor de sintaxi" -#: src/ui/gui/psppire-syntax-window.c:526 +#: src/ui/gui/psppire-syntax-window.c:510 #, c-format msgid "Cannot load syntax file '%s'" msgstr "No es pot obrir l'arxiu de sintaxi \"%s\"" @@ -4590,27 +4602,27 @@ msgstr "" msgid "Close _without saving" msgstr "Tancar sense desar" -#: src/ui/gui/recode-dialog.c:915 +#: src/ui/gui/recode-dialog.c:911 msgid "Recode into Different Variables" msgstr "Recodifica en variables Diferents" -#: src/ui/gui/recode-dialog.c:918 src/ui/gui/recode.ui:692 +#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692 msgid "Recode into Same Variables" msgstr "Recodifica en les Mateixes variables" -#: src/ui/gui/recode-dialog.c:933 src/ui/gui/recode-dialog.c:1029 +#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025 msgid "New" msgstr "Nou" -#: src/ui/gui/recode-dialog.c:948 src/ui/gui/recode-dialog.c:1021 +#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017 msgid "Old" msgstr "Antic" -#: src/ui/gui/recode-dialog.c:1278 +#: src/ui/gui/recode-dialog.c:1274 msgid "Recode into Different Variables: Old and New Values " msgstr "Recodifica en variables Diferents: Antcs y Nous valors " -#: src/ui/gui/recode-dialog.c:1279 +#: src/ui/gui/recode-dialog.c:1275 msgid "Recode into Same Variables: Old and New Values" msgstr "Recodifica en les mateixes variables: Antics y Nous valors" @@ -4618,7 +4630,7 @@ msgstr "Recodifica en les mateixes variables: Antics y Nous valors" msgid "Coeff" msgstr "Coef." -#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:158 +#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:155 msgid "R" msgstr "R" @@ -4737,31 +4749,31 @@ msgstr "El contingut del camp \"%.*s\" no pot ser analitzat en format %s." msgid "Confidence Interval: %2d %%" msgstr "Interval de Confiança: %2d %%" -#: src/ui/gui/variable-info-dialog.c:76 +#: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" msgstr "Etiqueta: %s\n" -#: src/ui/gui/variable-info-dialog.c:83 +#: src/ui/gui/variable-info-dialog.c:84 #, c-format msgid "Type: %s\n" msgstr "Tipus: %s\n" -#: src/ui/gui/variable-info-dialog.c:87 +#: src/ui/gui/variable-info-dialog.c:88 #, c-format msgid "Missing Values: %s\n" msgstr "Valors perduts: %s\n" -#: src/ui/gui/variable-info-dialog.c:92 +#: src/ui/gui/variable-info-dialog.c:93 #, c-format msgid "Measurement Level: %s\n" msgstr "Nivel de Mesura: %s\n" -#: src/ui/gui/variable-info-dialog.c:105 +#: src/ui/gui/variable-info-dialog.c:106 msgid "Value Labels:\n" msgstr "Etiqueteas de valor:\n" -#: src/ui/gui/variable-info-dialog.c:115 +#: src/ui/gui/variable-info-dialog.c:116 #, c-format msgid "%s %s\n" msgstr "%s %s\n" @@ -4776,27 +4788,27 @@ msgstr "No ponderar casos." msgid "Weight cases by %s" msgstr "Pondera casos per %s" -#: tests/dissect-sysfile.c:567 +#: tests/dissect-sysfile.c:571 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Tipus de registre 7 no reconegut, subtipe %d." -#: tests/dissect-sysfile.c:846 +#: tests/dissect-sysfile.c:850 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "%s: Error en analitzar valor de l'atribut %s[%d]" -#: tests/dissect-sysfile.c:852 +#: tests/dissect-sysfile.c:856 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: El valor de l'atribut %s[%d] no esta entre cometes: %s" -#: tests/dissect-sysfile.c:876 +#: tests/dissect-sysfile.c:880 #, fuzzy, c-format msgid "Bad size %zu for extended number of cases." msgstr "Longitud no vàlid %zu en l'extensió 11." -#: tests/dissect-sysfile.c:882 +#: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." msgstr "" @@ -5271,14 +5283,10 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:245 +#: src/language/stats/glm.q:248 msgid "Multivariate GLM not yet supported" msgstr "GLM multivariable encara no disponible" -#: src/language/stats/glm.q:355 src/language/stats/regression.q:998 -msgid "No valid data found. This command was skipped." -msgstr "No s'han trobat dades vàlides. S'gnora aquesta ordre." - #: src/language/stats/means.q:100 msgid "Missing required subcommand TABLES." msgstr "Falta subordre requerida TABLES" @@ -5287,18 +5295,18 @@ msgstr "Falta subordre requerida TABLES" msgid "TABLES subcommand may not appear more than once." msgstr "El subcomando TABLES no pot apareixer més d'una vegada." -#: src/language/stats/npar.q:110 +#: src/language/stats/npar.q:111 msgid "NPAR subcommand not currently implemented." msgstr "Actualment no está implenetat el subcomandament NPAR." -#: src/language/stats/npar.q:254 +#: src/language/stats/npar.q:256 #, c-format msgid "" "The specified value of HI (%d) is lower than the specified value of LO (%d)" msgstr "" "El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)" -#: src/language/stats/npar.q:309 +#: src/language/stats/npar.q:311 #, c-format msgid "" "%d expected values were given, but the specified range (%d-%d) requires " @@ -5307,7 +5315,7 @@ msgstr "" "S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) " "requereix exactament %d valors." -#: src/language/stats/npar.q:444 src/language/stats/t-test.q:380 +#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%zu) did " @@ -5331,21 +5339,21 @@ msgstr "Els coeficients per contrastar %zu no sumen cero." msgid "`%s' is not a variable name" msgstr "`%s' no és un nom de variable" -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:298 +#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 msgid "Sum of Squares" msgstr "Suma de Quadrats" -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:300 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 msgid "Mean Square" msgstr "Rang mitjà" -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 +#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 #: src/language/stats/t-test.q:749 msgid "F" msgstr "F" #: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:204 src/language/stats/regression.q:302 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 msgid "Significance" msgstr "Significativitat" @@ -5357,7 +5365,7 @@ msgstr "Entre Grups" msgid "Within Groups" msgstr "Intra Grups" -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:327 +#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 msgid "ANOVA" msgstr "ANOVA" @@ -5393,7 +5401,7 @@ msgstr "Proves de contrats" msgid "Value of Contrast" msgstr "Valor de constrast" -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:203 +#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 #: src/language/stats/t-test.q:1009 msgid "t" @@ -5463,55 +5471,55 @@ msgstr "La variable %s ja existeix." msgid "Too many variables in INTO clause." msgstr "Massa variables a la clausula INTO." -#: src/language/stats/regression.q:159 +#: src/language/stats/regression.q:156 msgid "R Square" msgstr "R Quadrada" -#: src/language/stats/regression.q:160 +#: src/language/stats/regression.q:157 msgid "Adjusted R Square" msgstr "R Quadrada Ajustada" -#: src/language/stats/regression.q:161 +#: src/language/stats/regression.q:158 msgid "Std. Error of the Estimate" msgstr "Error estàndard de l'Estimador" -#: src/language/stats/regression.q:166 +#: src/language/stats/regression.q:163 msgid "Model Summary" msgstr "Resum del model" -#: src/language/stats/regression.q:200 +#: src/language/stats/regression.q:197 msgid "B" msgstr "B" -#: src/language/stats/regression.q:202 +#: src/language/stats/regression.q:199 msgid "Beta" msgstr "Beta" -#: src/language/stats/regression.q:205 +#: src/language/stats/regression.q:202 msgid "(Constant)" msgstr "(Constant)" -#: src/language/stats/regression.q:269 +#: src/language/stats/regression.q:254 msgid "Coefficients" msgstr "Coeficients" -#: src/language/stats/regression.q:304 src/ui/gui/regression.ui:7 +#: src/language/stats/regression.q:289 src/ui/gui/regression.ui:7 msgid "Regression" msgstr "Regressió" -#: src/language/stats/regression.q:385 +#: src/language/stats/regression.q:370 msgid "Model" msgstr "Model" -#: src/language/stats/regression.q:386 +#: src/language/stats/regression.q:371 msgid "Covariances" msgstr "Covariància" -#: src/language/stats/regression.q:401 +#: src/language/stats/regression.q:386 msgid "Coefficient Correlations" msgstr "Correlacions de Coeficients" -#: src/language/stats/regression.q:808 +#: src/language/stats/regression.q:793 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 " @@ -5521,9 +5529,13 @@ msgstr "" "minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics " "relacionats podríen ser irrellevants." -#: src/language/stats/regression.q:900 -msgid "Dependent variable must be numeric." -msgstr "La variable dependent ha de ser numèrica." +#: src/language/stats/regression.q:891 +msgid "REGRESSION requires numeric variables." +msgstr "" + +#: src/language/stats/regression.q:962 +msgid "No valid data found. This command was skipped." +msgstr "No s'han trobat dades vàlides. S'gnora aquesta ordre." #: src/language/stats/reliability.q:421 msgid "Reliability Statistics" @@ -5788,6 +5800,28 @@ msgstr "" msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "El valor del pas %ld es menor que 1. el valor es retorna a 1." +#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 +#, fuzzy +msgid "_Test Variable List:" +msgstr "Variable(s) de prova:" + +#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 +msgid "_Get from data" +msgstr "" + +#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 +msgid "_Cut point:" +msgstr "Punt de tall:" + +#: src/ui/gui/binomial.ui:178 +msgid "Define Dichotomy" +msgstr "" + +#: src/ui/gui/binomial.ui:197 +#, fuzzy +msgid "Test _Proportion:" +msgstr "Test Prop." + #: src/ui/gui/correlation.ui:7 #, fuzzy msgid "Bivariate Correlations" @@ -5901,6 +5935,45 @@ msgstr "Proves Estad." msgid "Statistics" msgstr "Estatísticas" +#: src/ui/gui/chi-square.ui:13 +#, fuzzy +msgid "Chi-Square Test" +msgstr "Proves Chi-quadrat." + +#: src/ui/gui/chi-square.ui:140 +#, fuzzy +msgid "Use _specified range" +msgstr "Utilitza valors especificats:" + +#: src/ui/gui/chi-square.ui:162 +#, fuzzy +msgid "_Lower:" +msgstr "Inferior" + +#: src/ui/gui/chi-square.ui:170 +#, fuzzy +msgid "_Upper:" +msgstr "Superior" + +#: src/ui/gui/chi-square.ui:214 +#, fuzzy +msgid "Expected Range:" +msgstr "N esperat" + +#: src/ui/gui/chi-square.ui:240 +msgid "All categor_ies equal" +msgstr "" + +#: src/ui/gui/chi-square.ui:257 +#, fuzzy +msgid "_Values" +msgstr "Valores" + +#: src/ui/gui/chi-square.ui:301 +#, fuzzy +msgid "Expected Values:" +msgstr "Valor extrems" + #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" msgstr "Estadístiques:" @@ -5980,64 +6053,102 @@ msgstr "Llista de Factors:" #: src/ui/gui/factor.ui:47 #, fuzzy -msgid "Descriptives..." +msgid "_Descriptives..." msgstr "Descriptives" #: src/ui/gui/factor.ui:60 #, fuzzy -msgid "Extraction..." +msgid "_Extraction..." msgstr "Opcions..." -#: src/ui/gui/factor.ui:180 +#: src/ui/gui/factor.ui:74 +#, fuzzy +msgid "_Rotations..." +msgstr "Opcions..." + +#: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:204 +#: src/ui/gui/factor.ui:216 #, fuzzy msgid "Method: " msgstr "Mode:" -#: src/ui/gui/factor.ui:254 +#: src/ui/gui/factor.ui:266 #, fuzzy msgid "Correlation matrix" msgstr "Correlació" -#: src/ui/gui/factor.ui:268 +#: src/ui/gui/factor.ui:280 #, fuzzy msgid "Covariance matrix" msgstr "Covariància" -#: src/ui/gui/factor.ui:288 +#: src/ui/gui/factor.ui:300 #, fuzzy msgid "Analyse" msgstr "_Analitzar" -#: src/ui/gui/factor.ui:312 +#: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:326 +#: src/ui/gui/factor.ui:338 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:345 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 #, fuzzy msgid "Display" msgstr "Contingut de cel.la" -#: src/ui/gui/factor.ui:418 +#: src/ui/gui/factor.ui:430 msgid "Number of factors:" msgstr "" -#: src/ui/gui/factor.ui:448 +#: src/ui/gui/factor.ui:460 #, fuzzy msgid "Extract" msgstr "Eta" -#: src/ui/gui/factor.ui:463 +#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" msgstr "" +#: src/ui/gui/factor.ui:538 +#, fuzzy +msgid "Factor Analysis: Rotation" +msgstr "Llista de Factors:" + +#: src/ui/gui/factor.ui:571 +#, fuzzy +msgid "_None" +msgstr "Cap" + +#: src/ui/gui/factor.ui:582 +#, fuzzy +msgid "_Varimax" +msgstr "_Variables:" + +#: src/ui/gui/factor.ui:598 +msgid "_Quartimax" +msgstr "" + +#: src/ui/gui/factor.ui:614 +msgid "_Equimax" +msgstr "" + +#: src/ui/gui/factor.ui:637 +#, fuzzy +msgid "Method" +msgstr "Mode:" + +#: src/ui/gui/factor.ui:648 +#, fuzzy +msgid "_Display rotated solution" +msgstr "Mostra _informació de l'arxiu de dades" + #: src/ui/gui/find.ui:8 #, fuzzy msgid "Find Case" @@ -6751,10 +6862,6 @@ msgstr "Valor del grup 2:" msgid "Group_1 value:" msgstr "Valor del Grup 1:" -#: src/ui/gui/t-test.ui:333 -msgid "_Cut point:" -msgstr "Punt de tall:" - #: src/ui/gui/t-test.ui:365 msgid "_Use specified values:" msgstr "Utilitza valors especificats:" @@ -7000,19 +7107,19 @@ msgstr "Ordenació ascendent" msgid "Sort Descending" msgstr "Ordenació descendent" -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.glade:21 -#: src/ui/gui/syntax-editor.glade:14 +#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "_Arxiu" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.glade:32 -#: src/ui/gui/syntax-editor.glade:62 +#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "_Sintaxi" #: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217 -#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.glade:41 -#: src/ui/gui/syntax-editor.glade:71 +#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "_Dades" @@ -7040,8 +7147,8 @@ msgstr "Dades usades recentment" msgid "Recently Used _Files" msgstr "Arxius utilitzats recentment" -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.glade:43 -#: src/ui/gui/syntax-editor.glade:118 +#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "_Editar" @@ -7261,13 +7368,13 @@ msgstr "Anar a la variable" msgid "Data File _Comments" msgstr "_Comentaris arxiu de dades" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.glade:66 -#: src/ui/gui/syntax-editor.glade:209 +#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 +#: src/ui/gui/syntax-editor.ui:131 msgid "_Windows" msgstr "Finestres" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.glade:76 -#: src/ui/gui/syntax-editor.glade:218 +#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:137 msgid "_Minimize All Windows" msgstr "_Minimitza totes les finestres" @@ -7275,69 +7382,64 @@ msgstr "_Minimitza totes les finestres" msgid "_Split" msgstr "Divideix" -#: src/ui/gui/data-editor.ui:462 src/ui/gui/output-viewer.glade:87 -#: src/ui/gui/syntax-editor.glade:229 -msgid "_Help" -msgstr "Ajut" - -#: src/ui/gui/data-editor.ui:468 src/ui/gui/output-viewer.glade:94 -#: src/ui/gui/syntax-editor.glade:237 -msgid "_Reference Manual" -msgstr "Manual de _Referencia" - -#: src/ui/gui/data-editor.ui:652 +#: src/ui/gui/data-editor.ui:630 msgid "Information Area" msgstr "Àrea d'Informació" -#: src/ui/gui/data-editor.ui:674 +#: src/ui/gui/data-editor.ui:652 msgid "Processor Area" msgstr "Area del processador" -#: src/ui/gui/data-editor.ui:699 +#: src/ui/gui/data-editor.ui:677 msgid "Case Counter Area" msgstr "Area del Recompte" -#: src/ui/gui/data-editor.ui:724 +#: src/ui/gui/data-editor.ui:702 msgid "Filter Use Status Area" msgstr "Area del Filtre" -#: src/ui/gui/data-editor.ui:750 +#: src/ui/gui/data-editor.ui:728 msgid "Weight Status Area" msgstr "Area de Ponderació" -#: src/ui/gui/data-editor.ui:776 +#: src/ui/gui/data-editor.ui:754 msgid "Split File Status Area" msgstr "Area de Divisió" -#: src/ui/gui/output-viewer.glade:31 +#: src/ui/gui/output-viewer.ui:22 #, fuzzy msgid "_Export" msgstr "_Explorar" -#: src/ui/gui/output-viewer.glade:101 src/ui/gui/syntax-editor.glade:244 -msgid "_About" -msgstr "Qu_ant a..." - -#: src/ui/gui/syntax-editor.glade:163 +#: src/ui/gui/syntax-editor.ui:100 msgid "_Run" msgstr "Executa_r" -#: src/ui/gui/syntax-editor.glade:172 +#: src/ui/gui/syntax-editor.ui:106 msgid "All" msgstr "Tots" -#: src/ui/gui/syntax-editor.glade:180 +#: src/ui/gui/syntax-editor.ui:112 msgid "Selection" msgstr "Selecció" -#: src/ui/gui/syntax-editor.glade:188 +#: src/ui/gui/syntax-editor.ui:118 msgid "Current Line" msgstr "Linia actual" -#: src/ui/gui/syntax-editor.glade:197 +#: src/ui/gui/syntax-editor.ui:125 msgid "To End" msgstr "Fins al final" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "La variable dependent ha de ser numèrica." + +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variable %s té una etiqueta de longitud no vàlida %zu." + +#~ msgid "_About" +#~ msgstr "Qu_ant a..." + #~ msgid "Buttons" #~ msgstr "Botons" diff --git a/po/en_GB.po b/po/en_GB.po index 4b1d3282..4ebdd60b 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.7.0\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-09 21:32+0200\n" +"POT-Creation-Date: 2010-05-21 12:02+0200\n" "PO-Revision-Date: 2008-11-05 08:17+0900\n" "Last-Translator: John Darrington \n" "Language-Team: John Darrington \n" @@ -241,13 +241,13 @@ msgstr "" msgid "scratch" msgstr "" -#: src/data/dictionary.c:981 +#: src/data/dictionary.c:980 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/dictionary.c:1284 +#: src/data/dictionary.c:1283 #, c-format msgid "Truncating document line to %d bytes." msgstr "" @@ -330,20 +330,20 @@ msgstr[1] "" msgid "%s variables are not compatible with %s format %s." msgstr "" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -351,8 +351,8 @@ msgstr "" msgid "numeric" msgstr "" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -552,7 +552,7 @@ msgstr "" msgid "Invalid variable name `%s' in position %d." msgstr "" -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:602 +#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 #, c-format msgid "Bad width %d for variable %s." msgstr "" @@ -661,47 +661,47 @@ msgstr "" msgid "Variable suffix too large." msgstr "" -#: src/data/sys-file-reader.c:222 +#: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:286 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 msgid "system file" msgstr "" -#: src/data/sys-file-reader.c:293 +#: src/data/sys-file-reader.c:297 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "" -#: src/data/sys-file-reader.c:332 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 msgid "Misplaced type 4 record." msgstr "" -#: src/data/sys-file-reader.c:343 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 #, c-format msgid "Unrecognized record type %d." msgstr "Unrecognised record type %d." -#: src/data/sys-file-reader.c:384 +#: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" -#: src/data/sys-file-reader.c:424 +#: src/data/sys-file-reader.c:428 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "" -#: src/data/sys-file-reader.c:489 src/data/sys-file-reader.c:499 +#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 #: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 msgid "This is not an SPSS system file." msgstr "" -#: src/data/sys-file-reader.c:521 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." @@ -709,364 +709,359 @@ msgstr "" "Compression bias is not the usual value of 100, or system file uses \n" "unrecognised floating-point format." -#: src/data/sys-file-reader.c:598 +#: src/data/sys-file-reader.c:602 #, c-format msgid "Invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:606 +#: src/data/sys-file-reader.c:610 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:614 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 msgid "Variable label indicator field is not 0 or 1." msgstr "" -#: src/data/sys-file-reader.c:622 tests/dissect-sysfile.c:365 -#, c-format -msgid "Variable %s has label of invalid length %zu." -msgstr "" - -#: src/data/sys-file-reader.c:641 tests/dissect-sysfile.c:383 +#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:659 tests/dissect-sysfile.c:398 +#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:699 msgid "Missing string continuation record." msgstr "" -#: src/data/sys-file-reader.c:725 +#: src/data/sys-file-reader.c:733 #, c-format msgid "Unknown variable format %." msgstr "" -#: src/data/sys-file-reader.c:743 +#: src/data/sys-file-reader.c:751 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "print" msgstr "" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "write" msgstr "" -#: src/data/sys-file-reader.c:750 +#: src/data/sys-file-reader.c:758 msgid "Suppressing further invalid format warnings." msgstr "" -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:776 msgid "Weighting variable must be numeric." msgstr "" -#: src/data/sys-file-reader.c:782 +#: src/data/sys-file-reader.c:790 msgid "Multiple type 6 (document) records." msgstr "" -#: src/data/sys-file-reader.c:786 +#: src/data/sys-file-reader.c:794 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "" -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:802 msgid "Document line contains null byte." msgstr "" -#: src/data/sys-file-reader.c:885 +#: src/data/sys-file-reader.c:893 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " "and the syntax which created it to %s" msgstr "" -#: src/data/sys-file-reader.c:912 tests/dissect-sysfile.c:590 +#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "" -#: src/data/sys-file-reader.c:932 +#: src/data/sys-file-reader.c:940 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " "expected (%d)." msgstr "" -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 msgid "Little Endian" msgstr "" -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 msgid "Big Endian" msgstr "" -#: src/data/sys-file-reader.c:946 +#: src/data/sys-file-reader.c:954 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." msgstr "" -#: src/data/sys-file-reader.c:1003 tests/dissect-sysfile.c:621 +#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "" -#: src/data/sys-file-reader.c:1007 src/data/sys-file-reader.c:1011 -#: src/data/sys-file-reader.c:1015 tests/dissect-sysfile.c:626 -#: tests/dissect-sysfile.c:631 tests/dissect-sysfile.c:636 +#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 +#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "" -#: src/data/sys-file-reader.c:1048 +#: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1066 tests/dissect-sysfile.c:687 +#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1075 tests/dissect-sysfile.c:696 +#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format msgid "" "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " "record" msgstr "" -#: src/data/sys-file-reader.c:1081 +#: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1110 +#: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1121 +#: src/data/sys-file-reader.c:1129 #, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1134 +#: src/data/sys-file-reader.c:1142 #, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "" -#: src/data/sys-file-reader.c:1149 +#: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." msgstr "" -#: src/data/sys-file-reader.c:1186 tests/dissect-sysfile.c:754 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." msgstr "" -#: src/data/sys-file-reader.c:1198 tests/dissect-sysfile.c:766 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "" -#: src/data/sys-file-reader.c:1219 +#: src/data/sys-file-reader.c:1227 #, c-format msgid "" "Invalid variable display parameters for variable %zu (%s). Default " "parameters substituted." msgstr "" -#: src/data/sys-file-reader.c:1263 +#: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:1273 +#: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:1326 +#: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." msgstr "" -#: src/data/sys-file-reader.c:1336 +#: src/data/sys-file-reader.c:1344 #, c-format msgid "" "%s listed in very long string record with width %s, which requires only one " "segment." msgstr "" -#: src/data/sys-file-reader.c:1342 +#: src/data/sys-file-reader.c:1350 #, c-format msgid "Very long string %s overflows dictionary." msgstr "" -#: src/data/sys-file-reader.c:1356 +#: src/data/sys-file-reader.c:1364 #, c-format msgid "" "Very long string with width %ld has segment %d of width %d (expected %d)" msgstr "" -#: src/data/sys-file-reader.c:1402 +#: src/data/sys-file-reader.c:1410 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "" -#: src/data/sys-file-reader.c:1433 tests/dissect-sysfile.c:464 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." msgstr "" -#: src/data/sys-file-reader.c:1440 +#: src/data/sys-file-reader.c:1448 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " "the number of variables (%zu)." msgstr "" -#: src/data/sys-file-reader.c:1451 +#: src/data/sys-file-reader.c:1459 #, c-format msgid "" "Value labels may not be added to long string variables (e.g. %s) using " "records types 3 and 4." msgstr "" -#: src/data/sys-file-reader.c:1460 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "" "Variables associated with value label are not all of identical type. " "Variable %s is %s, but variable %s is %s." msgstr "" -#: src/data/sys-file-reader.c:1494 +#: src/data/sys-file-reader.c:1502 #, c-format msgid "Duplicate value label for %g on %s." msgstr "" -#: src/data/sys-file-reader.c:1497 src/data/sys-file-reader.c:1678 +#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "" -#: src/data/sys-file-reader.c:1535 +#: src/data/sys-file-reader.c:1543 #, c-format msgid "Error parsing attribute value %s[%d]" msgstr "" -#: src/data/sys-file-reader.c:1549 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "Attribute value %s[%d] is not quoted: %s" msgstr "" -#: src/data/sys-file-reader.c:1612 tests/dissect-sysfile.c:932 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format msgid "" "Variable name length in long string value label record (%d) exceeds %d-byte " "limit." msgstr "" -#: src/data/sys-file-reader.c:1622 +#: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." msgstr "" -#: src/data/sys-file-reader.c:1629 +#: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." msgstr "" -#: src/data/sys-file-reader.c:1636 +#: src/data/sys-file-reader.c:1644 #, c-format msgid "" "Ignoring long string value record for variable %s because the record's width " "(%d) does not match the variable's width (%d)" msgstr "" -#: src/data/sys-file-reader.c:1658 +#: src/data/sys-file-reader.c:1666 #, c-format msgid "" "Ignoring long string value %zu for variable %s, with width %d, that has bad " "value width %zu." msgstr "" -#: src/data/sys-file-reader.c:1773 +#: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." msgstr "" -#: src/data/sys-file-reader.c:1781 +#: src/data/sys-file-reader.c:1789 #, c-format msgid "Error reading case from file %s." msgstr "" -#: src/data/sys-file-reader.c:1882 +#: src/data/sys-file-reader.c:1890 msgid "" "Possible compressed data corruption: compressed spaces appear in numeric " "field." msgstr "" -#: src/data/sys-file-reader.c:1935 +#: src/data/sys-file-reader.c:1943 #, c-format msgid "" "Possible compressed data corruption: string contains compressed integer " "(opcode %d)" msgstr "" -#: src/data/sys-file-reader.c:2027 +#: src/data/sys-file-reader.c:2035 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "" -#: src/data/sys-file-reader.c:2032 +#: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "" -#: src/data/sys-file-reader.c:2100 +#: src/data/sys-file-reader.c:2108 #, c-format msgid "Suppressed %d additional related warnings." msgstr "" -#: src/data/sys-file-reader.c:2141 +#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 #, c-format msgid "Dictionary record refers to unknown variable %s." msgstr "" -#: src/data/sys-file-reader.c:2202 +#: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2209 +#: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2216 +#: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." msgstr "" -#: src/data/sys-file-reader.c:2226 +#: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2318 tests/dissect-sysfile.c:1337 +#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format msgid "System error: %s." msgstr "" -#: src/data/sys-file-reader.c:2320 tests/dissect-sysfile.c:1339 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 msgid "Unexpected end of file." msgstr "" @@ -1085,28 +1080,28 @@ msgstr "" msgid "An I/O error occurred writing system file \"%s\"." msgstr "" -#: src/data/variable.c:215 +#: src/data/variable.c:206 #, c-format msgid "" "Character `%c' (in %s) may not appear as the first character in a variable " "name." msgstr "" -#: src/data/variable.c:227 +#: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "" -#: src/data/variable.c:253 +#: src/data/variable.c:244 msgid "Variable name cannot be empty string." msgstr "" -#: src/data/variable.c:259 +#: src/data/variable.c:250 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "" -#: src/data/variable.c:267 +#: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" @@ -2002,7 +1997,7 @@ msgid "IBM 390 Hex Long." msgstr "" #: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:161 src/ui/gui/recode.ui:960 +#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "" @@ -2376,7 +2371,7 @@ msgstr "" msgid "Variable %s is not dichotomous" msgstr "" -#: src/language/stats/binomial.c:192 +#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "" @@ -2389,13 +2384,13 @@ msgid "Group2" msgstr "" #: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1188 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 #: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 #: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 #: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 #: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 #: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:306 src/language/stats/reliability.q:702 +#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 msgid "Total" msgstr "" @@ -2404,8 +2399,8 @@ msgstr "" msgid "Category" msgstr "" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:120 -#: src/language/stats/correlations.c:228 src/language/stats/npar-summary.c:122 +#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 #: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 #: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 #: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 @@ -2444,7 +2439,7 @@ msgid "Expected N" msgstr "" #: src/language/stats/chisquare.c:163 src/language/stats/chisquare.c:202 -#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:305 +#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:290 msgid "Residual" msgstr "" @@ -2464,7 +2459,7 @@ msgstr "" #: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 #: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 -#: src/language/stats/regression.q:299 src/language/stats/t-test.q:752 +#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "" @@ -2473,13 +2468,13 @@ msgstr "" msgid "Asymp. Sig." msgstr "" -#: src/language/stats/correlations.c:97 src/language/stats/factor.c:1431 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 #: src/language/stats/npar-summary.c:108 msgid "Descriptive Statistics" msgstr "" -#: src/language/stats/correlations.c:118 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1452 src/language/stats/npar-summary.c:125 +#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 +#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 #: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 #: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 #: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 @@ -2488,7 +2483,7 @@ msgstr "" msgid "Mean" msgstr "" -#: src/language/stats/correlations.c:119 src/language/stats/factor.c:1453 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 #: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 #: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 @@ -2496,33 +2491,33 @@ msgstr "" msgid "Std. Deviation" msgstr "" -#: src/language/stats/correlations.c:191 src/language/stats/factor.c:1331 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 msgid "Correlations" msgstr "" -#: src/language/stats/correlations.c:217 +#: src/language/stats/correlations.c:216 msgid "Pearson Correlation" msgstr "" -#: src/language/stats/correlations.c:219 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "" -#: src/language/stats/correlations.c:219 +#: src/language/stats/correlations.c:218 msgid "Sig. (1-tailed)" msgstr "" -#: src/language/stats/correlations.c:223 +#: src/language/stats/correlations.c:222 msgid "Cross-products" msgstr "" -#: src/language/stats/correlations.c:224 +#: src/language/stats/correlations.c:223 msgid "Covariance" msgstr "" -#: src/language/stats/correlations.c:446 src/language/stats/descriptives.c:361 +#: src/language/stats/correlations.c:454 src/language/stats/descriptives.c:361 #: src/language/data-io/list.q:91 msgid "No variables specified." msgstr "" @@ -2650,47 +2645,39 @@ msgstr "" msgid "Variable %s specified twice in sort criteria." msgstr "" -#: src/language/stats/factor.c:558 +#: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." msgstr "" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 msgid "Component Number" msgstr "" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 msgid "Factor Number" msgstr "" -#: src/language/stats/factor.c:970 +#: src/language/stats/factor.c:1237 msgid "Communalities" msgstr "" -#: src/language/stats/factor.c:976 +#: src/language/stats/factor.c:1243 msgid "Initial" msgstr "" -#: src/language/stats/factor.c:979 +#: src/language/stats/factor.c:1246 msgid "Extraction" msgstr "" -#: src/language/stats/factor.c:1029 -msgid "Component Matrix" -msgstr "" - -#: src/language/stats/factor.c:1031 -msgid "Factor Matrix" -msgstr "" - -#: src/language/stats/factor.c:1039 src/language/stats/factor.c:1163 +#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 msgid "Component" msgstr "" -#: src/language/stats/factor.c:1044 src/language/stats/factor.c:1165 +#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 msgid "Factor" msgstr "" -#: src/language/stats/factor.c:1076 src/language/stats/factor.c:1219 +#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: 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 @@ -2698,59 +2685,75 @@ msgstr "" msgid "%d" msgstr "" -#: src/language/stats/factor.c:1138 +#: src/language/stats/factor.c:1412 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1170 +#: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1176 +#: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1182 +#: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1190 +#: src/language/stats/factor.c:1464 #, no-c-format msgid "% of Variance" msgstr "" -#: src/language/stats/factor.c:1191 +#: src/language/stats/factor.c:1465 msgid "Cumulative %" msgstr "" -#: src/language/stats/factor.c:1289 +#: src/language/stats/factor.c:1578 msgid "Correlation Matrix" msgstr "" -#: src/language/stats/factor.c:1343 +#: src/language/stats/factor.c:1632 msgid "Sig. 1-tailed" msgstr "" -#: src/language/stats/factor.c:1377 +#: src/language/stats/factor.c:1666 msgid "Determinant" msgstr "" -#: src/language/stats/factor.c:1454 +#: src/language/stats/factor.c:1743 msgid "Analysis N" msgstr "" -#: src/language/stats/factor.c:1487 +#: src/language/stats/factor.c:1776 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1493 +#: src/language/stats/factor.c:1782 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" +#: src/language/stats/factor.c:1865 +msgid "Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1865 +msgid "Factor Matrix" +msgstr "" + +#: src/language/stats/factor.c:1871 +msgid "Rotated Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1871 +msgid "Rotated Factor Matrix" +msgstr "" + #: src/language/stats/flip.c:98 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." @@ -2840,7 +2843,7 @@ msgstr "" #: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 #: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:201 +#: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "" @@ -3671,7 +3674,7 @@ msgstr "" msgid "ascii: opening output file \"%s\"" msgstr "" -#: src/output/ascii.c:913 src/output/cairo.c:826 +#: src/output/ascii.c:913 src/output/cairo.c:784 #, c-format msgid "%s - Page %d" msgstr "" @@ -3788,36 +3791,36 @@ msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/output/cairo.c:283 +#: src/output/cairo.c:295 #, c-format msgid "error opening output file \"%s\": %s" msgstr "" -#: src/output/cairo.c:301 +#: src/output/cairo.c:312 #, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " "default font. In fact, there's only room for %d characters." msgstr "" -#: src/output/cairo.c:311 +#: src/output/cairo.c:322 #, c-format msgid "" "The defined page is not long enough to hold margins and headers, plus least %" "d lines of the default fonts. In fact, there's only room for %d lines." msgstr "" -#: src/output/cairo.c:364 +#: src/output/cairo.c:376 #, c-format msgid "error drawing output for %s driver: %s" msgstr "" -#: src/output/cairo.c:906 +#: src/output/cairo.c:864 #, c-format msgid "\"%s\": bad font specification" msgstr "" -#: src/output/cairo.c:1116 +#: src/output/cairo.c:1084 #, c-format msgid "error writing output file \"%s\": %s" msgstr "" @@ -3913,16 +3916,6 @@ msgstr "" msgid "%s: output option specified more than once" msgstr "" -#: src/ui/gui/about.c:66 -msgid "A program for the analysis of sampled data" -msgstr "" - -#. TRANSLATORS: Use this string to list the people who have helped with -#. translation to your language. -#: src/ui/gui/about.c:76 -msgid "translator-credits" -msgstr "John Darrington" - #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 #: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 @@ -3989,7 +3982,7 @@ msgstr "" #: src/ui/gui/crosstabs-dialog.c:54 src/ui/gui/crosstabs-dialog.c:65 #: src/ui/gui/crosstabs-dialog.c:100 src/ui/gui/crosstabs-dialog.c:108 #: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16 -#: src/ui/gui/variable-info-dialog.c:40 +#: src/ui/gui/variable-info-dialog.c:41 msgid "None" msgstr "" @@ -4025,12 +4018,12 @@ msgstr "" msgid "Standard error" msgstr "" -#: src/ui/gui/find-dialog.c:651 +#: src/ui/gui/find-dialog.c:649 #, c-format msgid "Bad regular expression: %s" msgstr "" -#: src/ui/gui/factor-dialog.c:230 +#: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" msgstr "" @@ -4056,17 +4049,35 @@ msgstr "" msgid "Median" msgstr "" -#: src/ui/gui/helper.c:196 +#: src/ui/gui/helper.c:197 msgid "Sorry. The help system hasn't yet been implemented." msgstr "" -#: src/ui/gui/helper.c:241 +#: src/ui/gui/help-menu.c:67 +msgid "A program for the analysis of sampled data" +msgstr "" + +#. TRANSLATORS: Use this string to list the people who have helped with +#. translation to your language. +#: src/ui/gui/help-menu.c:77 +msgid "translator-credits" +msgstr "John Darrington" + +#: src/ui/gui/help-menu.c:98 #, c-format msgid "" "Cannot open reference manual: %s. The PSPP user manual is also available at " "http://www.gnu.org/software/pspp/documentation.html" msgstr "" +#: src/ui/gui/help-menu.c:117 +msgid "_Help" +msgstr "" + +#: src/ui/gui/help-menu.c:124 +msgid "_Reference Manual" +msgstr "" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "" @@ -4075,7 +4086,7 @@ msgstr "" msgid "Incorrect range specification" msgstr "" -#: src/ui/gui/oneway-anova-dialog.c:314 +#: src/ui/gui/oneway-anova-dialog.c:313 #, c-format msgid "Contrast %d of %d" msgstr "" @@ -4100,57 +4111,57 @@ msgstr "" msgid "var" msgstr "" -#: src/ui/gui/psppire-data-window.c:210 +#: src/ui/gui/psppire-data-window.c:212 msgid "Transformations Pending" msgstr "" -#: src/ui/gui/psppire-data-window.c:226 +#: src/ui/gui/psppire-data-window.c:228 msgid "Filter off" msgstr "" -#: src/ui/gui/psppire-data-window.c:240 +#: src/ui/gui/psppire-data-window.c:242 #, c-format msgid "Filter by %s" msgstr "" -#: src/ui/gui/psppire-data-window.c:261 +#: src/ui/gui/psppire-data-window.c:263 msgid "No Split" msgstr "" -#: src/ui/gui/psppire-data-window.c:270 +#: src/ui/gui/psppire-data-window.c:272 msgid "Split by " msgstr "" -#: src/ui/gui/psppire-data-window.c:298 +#: src/ui/gui/psppire-data-window.c:300 msgid "Weights off" msgstr "" -#: src/ui/gui/psppire-data-window.c:312 +#: src/ui/gui/psppire-data-window.c:314 #, c-format msgid "Weight by %s" msgstr "" -#: src/ui/gui/psppire-data-window.c:380 +#: src/ui/gui/psppire-data-window.c:382 msgid "Open" msgstr "" -#: src/ui/gui/psppire-data-window.c:390 +#: src/ui/gui/psppire-data-window.c:392 msgid "Data and Syntax Files" msgstr "" -#: src/ui/gui/psppire-data-window.c:400 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 msgid "System Files (*.sav)" msgstr "" -#: src/ui/gui/psppire-data-window.c:406 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 msgid "Portable Files (*.por) " msgstr "" -#: src/ui/gui/psppire-data-window.c:412 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 msgid "Syntax Files (*.sps) " msgstr "" -#: src/ui/gui/psppire-data-window.c:418 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "" @@ -4163,43 +4174,43 @@ msgstr "" msgid "Portable File" msgstr "" -#: src/ui/gui/psppire-data-window.c:786 +#: src/ui/gui/psppire-data-window.c:773 msgid "Font Selection" msgstr "" -#: src/ui/gui/psppire-data-window.c:1581 +#: src/ui/gui/psppire-data-window.c:1261 msgid "Data Editor" msgstr "" -#: src/ui/gui/psppire-output-window.c:441 +#: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" msgstr "" -#: src/ui/gui/psppire-output-window.c:449 +#: src/ui/gui/psppire-output-window.c:466 msgid "PDF Files (*.pdf)" msgstr "" -#: src/ui/gui/psppire-output-window.c:450 +#: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" msgstr "" -#: src/ui/gui/psppire-output-window.c:451 +#: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:452 +#: src/ui/gui/psppire-output-window.c:469 msgid "Text Files (*.txt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:453 +#: src/ui/gui/psppire-output-window.c:470 msgid "PostScript Files (*.ps)" msgstr "" -#: src/ui/gui/psppire-output-window.c:454 +#: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" msgstr "" -#: src/ui/gui/psppire-output-window.c:593 +#: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" msgstr "" @@ -4212,11 +4223,11 @@ msgstr "" msgid "Save Syntax" msgstr "" -#: src/ui/gui/psppire-syntax-window.c:512 +#: src/ui/gui/psppire-syntax-window.c:496 msgid "Syntax Editor" msgstr "" -#: src/ui/gui/psppire-syntax-window.c:526 +#: src/ui/gui/psppire-syntax-window.c:510 #, c-format msgid "Cannot load syntax file '%s'" msgstr "" @@ -4298,27 +4309,27 @@ msgstr "" msgid "Close _without saving" msgstr "" -#: src/ui/gui/recode-dialog.c:915 +#: src/ui/gui/recode-dialog.c:911 msgid "Recode into Different Variables" msgstr "" -#: src/ui/gui/recode-dialog.c:918 src/ui/gui/recode.ui:692 +#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692 msgid "Recode into Same Variables" msgstr "" -#: src/ui/gui/recode-dialog.c:933 src/ui/gui/recode-dialog.c:1029 +#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025 msgid "New" msgstr "" -#: src/ui/gui/recode-dialog.c:948 src/ui/gui/recode-dialog.c:1021 +#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017 msgid "Old" msgstr "" -#: src/ui/gui/recode-dialog.c:1278 +#: src/ui/gui/recode-dialog.c:1274 msgid "Recode into Different Variables: Old and New Values " msgstr "" -#: src/ui/gui/recode-dialog.c:1279 +#: src/ui/gui/recode-dialog.c:1275 msgid "Recode into Same Variables: Old and New Values" msgstr "" @@ -4326,7 +4337,7 @@ msgstr "" msgid "Coeff" msgstr "" -#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:158 +#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:155 msgid "R" msgstr "" @@ -4435,31 +4446,31 @@ msgstr "" msgid "Confidence Interval: %2d %%" msgstr "" -#: src/ui/gui/variable-info-dialog.c:76 +#: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" msgstr "" -#: src/ui/gui/variable-info-dialog.c:83 +#: src/ui/gui/variable-info-dialog.c:84 #, c-format msgid "Type: %s\n" msgstr "" -#: src/ui/gui/variable-info-dialog.c:87 +#: src/ui/gui/variable-info-dialog.c:88 #, c-format msgid "Missing Values: %s\n" msgstr "" -#: src/ui/gui/variable-info-dialog.c:92 +#: src/ui/gui/variable-info-dialog.c:93 #, c-format msgid "Measurement Level: %s\n" msgstr "" -#: src/ui/gui/variable-info-dialog.c:105 +#: src/ui/gui/variable-info-dialog.c:106 msgid "Value Labels:\n" msgstr "" -#: src/ui/gui/variable-info-dialog.c:115 +#: src/ui/gui/variable-info-dialog.c:116 #, c-format msgid "%s %s\n" msgstr "" @@ -4474,27 +4485,27 @@ msgstr "" msgid "Weight cases by %s" msgstr "" -#: tests/dissect-sysfile.c:567 +#: tests/dissect-sysfile.c:571 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Unrecognised record type 7, subtype %d." -#: tests/dissect-sysfile.c:846 +#: tests/dissect-sysfile.c:850 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "" -#: tests/dissect-sysfile.c:852 +#: tests/dissect-sysfile.c:856 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "" -#: tests/dissect-sysfile.c:876 +#: tests/dissect-sysfile.c:880 #, c-format msgid "Bad size %zu for extended number of cases." msgstr "" -#: tests/dissect-sysfile.c:882 +#: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." msgstr "" @@ -4956,14 +4967,10 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:245 +#: src/language/stats/glm.q:248 msgid "Multivariate GLM not yet supported" msgstr "" -#: src/language/stats/glm.q:355 src/language/stats/regression.q:998 -msgid "No valid data found. This command was skipped." -msgstr "" - #: src/language/stats/means.q:100 msgid "Missing required subcommand TABLES." msgstr "" @@ -4972,24 +4979,24 @@ msgstr "" msgid "TABLES subcommand may not appear more than once." msgstr "" -#: src/language/stats/npar.q:110 +#: src/language/stats/npar.q:111 msgid "NPAR subcommand not currently implemented." msgstr "" -#: src/language/stats/npar.q:254 +#: src/language/stats/npar.q:256 #, c-format msgid "" "The specified value of HI (%d) is lower than the specified value of LO (%d)" msgstr "" -#: src/language/stats/npar.q:309 +#: src/language/stats/npar.q:311 #, c-format msgid "" "%d expected values were given, but the specified range (%d-%d) requires " "exactly %d values." msgstr "" -#: src/language/stats/npar.q:444 src/language/stats/t-test.q:380 +#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%zu) did " @@ -5010,21 +5017,21 @@ msgstr "" msgid "`%s' is not a variable name" msgstr "" -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:298 +#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 msgid "Sum of Squares" msgstr "" -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:300 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 msgid "Mean Square" msgstr "" -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 +#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 #: src/language/stats/t-test.q:749 msgid "F" msgstr "" #: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:204 src/language/stats/regression.q:302 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 msgid "Significance" msgstr "" @@ -5036,7 +5043,7 @@ msgstr "" msgid "Within Groups" msgstr "" -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:327 +#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 msgid "ANOVA" msgstr "" @@ -5072,7 +5079,7 @@ msgstr "" msgid "Value of Contrast" msgstr "" -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:203 +#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 #: src/language/stats/t-test.q:1009 msgid "t" @@ -5139,63 +5146,67 @@ msgstr "" msgid "Too many variables in INTO clause." msgstr "" -#: src/language/stats/regression.q:159 +#: src/language/stats/regression.q:156 msgid "R Square" msgstr "" -#: src/language/stats/regression.q:160 +#: src/language/stats/regression.q:157 msgid "Adjusted R Square" msgstr "" -#: src/language/stats/regression.q:161 +#: src/language/stats/regression.q:158 msgid "Std. Error of the Estimate" msgstr "" -#: src/language/stats/regression.q:166 +#: src/language/stats/regression.q:163 msgid "Model Summary" msgstr "" -#: src/language/stats/regression.q:200 +#: src/language/stats/regression.q:197 msgid "B" msgstr "" -#: src/language/stats/regression.q:202 +#: src/language/stats/regression.q:199 msgid "Beta" msgstr "" -#: src/language/stats/regression.q:205 +#: src/language/stats/regression.q:202 msgid "(Constant)" msgstr "" -#: src/language/stats/regression.q:269 +#: src/language/stats/regression.q:254 msgid "Coefficients" msgstr "" -#: src/language/stats/regression.q:304 src/ui/gui/regression.ui:7 +#: src/language/stats/regression.q:289 src/ui/gui/regression.ui:7 msgid "Regression" msgstr "" -#: src/language/stats/regression.q:385 +#: src/language/stats/regression.q:370 msgid "Model" msgstr "" -#: src/language/stats/regression.q:386 +#: src/language/stats/regression.q:371 msgid "Covariances" msgstr "" -#: src/language/stats/regression.q:401 +#: src/language/stats/regression.q:386 msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:808 +#: src/language/stats/regression.q:793 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 "" -#: src/language/stats/regression.q:900 -msgid "Dependent variable must be numeric." +#: src/language/stats/regression.q:891 +msgid "REGRESSION requires numeric variables." +msgstr "" + +#: src/language/stats/regression.q:962 +msgid "No valid data found. This command was skipped." msgstr "" #: src/language/stats/reliability.q:421 @@ -5447,6 +5458,26 @@ msgstr "" msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "" +#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 +msgid "_Test Variable List:" +msgstr "" + +#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 +msgid "_Get from data" +msgstr "" + +#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 +msgid "_Cut point:" +msgstr "" + +#: src/ui/gui/binomial.ui:178 +msgid "Define Dichotomy" +msgstr "" + +#: src/ui/gui/binomial.ui:197 +msgid "Test _Proportion:" +msgstr "" + #: src/ui/gui/correlation.ui:7 msgid "Bivariate Correlations" msgstr "" @@ -5549,6 +5580,38 @@ msgstr "" msgid "Statistics" msgstr "" +#: src/ui/gui/chi-square.ui:13 +msgid "Chi-Square Test" +msgstr "" + +#: src/ui/gui/chi-square.ui:140 +msgid "Use _specified range" +msgstr "" + +#: src/ui/gui/chi-square.ui:162 +msgid "_Lower:" +msgstr "" + +#: src/ui/gui/chi-square.ui:170 +msgid "_Upper:" +msgstr "" + +#: src/ui/gui/chi-square.ui:214 +msgid "Expected Range:" +msgstr "" + +#: src/ui/gui/chi-square.ui:240 +msgid "All categor_ies equal" +msgstr "" + +#: src/ui/gui/chi-square.ui:257 +msgid "_Values" +msgstr "" + +#: src/ui/gui/chi-square.ui:301 +msgid "Expected Values:" +msgstr "" + #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" msgstr "" @@ -5624,58 +5687,90 @@ msgid "Factor Analysis" msgstr "" #: src/ui/gui/factor.ui:47 -msgid "Descriptives..." +msgid "_Descriptives..." msgstr "" #: src/ui/gui/factor.ui:60 -msgid "Extraction..." +msgid "_Extraction..." +msgstr "" + +#: src/ui/gui/factor.ui:74 +msgid "_Rotations..." msgstr "" -#: src/ui/gui/factor.ui:180 +#: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:204 +#: src/ui/gui/factor.ui:216 msgid "Method: " msgstr "" -#: src/ui/gui/factor.ui:254 +#: src/ui/gui/factor.ui:266 msgid "Correlation matrix" msgstr "" -#: src/ui/gui/factor.ui:268 +#: src/ui/gui/factor.ui:280 msgid "Covariance matrix" msgstr "" -#: src/ui/gui/factor.ui:288 +#: src/ui/gui/factor.ui:300 #, fuzzy msgid "Analyse" msgstr "_Analyse" -#: src/ui/gui/factor.ui:312 +#: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:326 +#: src/ui/gui/factor.ui:338 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:345 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 msgid "Display" msgstr "" -#: src/ui/gui/factor.ui:418 +#: src/ui/gui/factor.ui:430 msgid "Number of factors:" msgstr "" -#: src/ui/gui/factor.ui:448 +#: src/ui/gui/factor.ui:460 msgid "Extract" msgstr "" -#: src/ui/gui/factor.ui:463 +#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" msgstr "" +#: src/ui/gui/factor.ui:538 +msgid "Factor Analysis: Rotation" +msgstr "" + +#: src/ui/gui/factor.ui:571 +msgid "_None" +msgstr "" + +#: src/ui/gui/factor.ui:582 +msgid "_Varimax" +msgstr "" + +#: src/ui/gui/factor.ui:598 +msgid "_Quartimax" +msgstr "" + +#: src/ui/gui/factor.ui:614 +msgid "_Equimax" +msgstr "" + +#: src/ui/gui/factor.ui:637 +msgid "Method" +msgstr "" + +#: src/ui/gui/factor.ui:648 +msgid "_Display rotated solution" +msgstr "" + #: src/ui/gui/find.ui:8 msgid "Find Case" msgstr "" @@ -6347,10 +6442,6 @@ msgstr "" msgid "Group_1 value:" msgstr "" -#: src/ui/gui/t-test.ui:333 -msgid "_Cut point:" -msgstr "" - #: src/ui/gui/t-test.ui:365 msgid "_Use specified values:" msgstr "" @@ -6584,19 +6675,19 @@ msgstr "" msgid "Sort Descending" msgstr "" -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.glade:21 -#: src/ui/gui/syntax-editor.glade:14 +#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.glade:32 -#: src/ui/gui/syntax-editor.glade:62 +#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "" #: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217 -#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.glade:41 -#: src/ui/gui/syntax-editor.glade:71 +#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "" @@ -6624,8 +6715,8 @@ msgstr "" msgid "Recently Used _Files" msgstr "" -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.glade:43 -#: src/ui/gui/syntax-editor.glade:118 +#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "" @@ -6841,13 +6932,13 @@ msgstr "" msgid "Data File _Comments" msgstr "" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.glade:66 -#: src/ui/gui/syntax-editor.glade:209 +#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 +#: src/ui/gui/syntax-editor.ui:131 msgid "_Windows" msgstr "" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.glade:76 -#: src/ui/gui/syntax-editor.glade:218 +#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:137 msgid "_Minimize All Windows" msgstr "_Minimise All Windows" @@ -6855,65 +6946,51 @@ msgstr "_Minimise All Windows" msgid "_Split" msgstr "" -#: src/ui/gui/data-editor.ui:462 src/ui/gui/output-viewer.glade:87 -#: src/ui/gui/syntax-editor.glade:229 -msgid "_Help" -msgstr "" - -#: src/ui/gui/data-editor.ui:468 src/ui/gui/output-viewer.glade:94 -#: src/ui/gui/syntax-editor.glade:237 -msgid "_Reference Manual" -msgstr "" - -#: src/ui/gui/data-editor.ui:652 +#: src/ui/gui/data-editor.ui:630 msgid "Information Area" msgstr "" -#: src/ui/gui/data-editor.ui:674 +#: src/ui/gui/data-editor.ui:652 msgid "Processor Area" msgstr "" -#: src/ui/gui/data-editor.ui:699 +#: src/ui/gui/data-editor.ui:677 msgid "Case Counter Area" msgstr "" -#: src/ui/gui/data-editor.ui:724 +#: src/ui/gui/data-editor.ui:702 msgid "Filter Use Status Area" msgstr "" -#: src/ui/gui/data-editor.ui:750 +#: src/ui/gui/data-editor.ui:728 msgid "Weight Status Area" msgstr "" -#: src/ui/gui/data-editor.ui:776 +#: src/ui/gui/data-editor.ui:754 msgid "Split File Status Area" msgstr "" -#: src/ui/gui/output-viewer.glade:31 +#: src/ui/gui/output-viewer.ui:22 msgid "_Export" msgstr "" -#: src/ui/gui/output-viewer.glade:101 src/ui/gui/syntax-editor.glade:244 -msgid "_About" -msgstr "" - -#: src/ui/gui/syntax-editor.glade:163 +#: src/ui/gui/syntax-editor.ui:100 msgid "_Run" msgstr "" -#: src/ui/gui/syntax-editor.glade:172 +#: src/ui/gui/syntax-editor.ui:106 msgid "All" msgstr "" -#: src/ui/gui/syntax-editor.glade:180 +#: src/ui/gui/syntax-editor.ui:112 msgid "Selection" msgstr "" -#: src/ui/gui/syntax-editor.glade:188 +#: src/ui/gui/syntax-editor.ui:118 msgid "Current Line" msgstr "" -#: src/ui/gui/syntax-editor.glade:197 +#: src/ui/gui/syntax-editor.ui:125 msgid "To End" msgstr "" diff --git a/po/es.po b/po/es.po index 49a9be7c..b00f742d 100644 --- a/po/es.po +++ b/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: pspp-0.7.2-pre1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-09 21:32+0200\n" +"POT-Creation-Date: 2010-05-21 12:02+0200\n" "PO-Revision-Date: 2010-02-03 20:19+0100\n" "Last-Translator: Francesc Josep Miguel Quesada \n" "Language-Team: Spanish \n" @@ -250,7 +250,7 @@ msgstr "sistema" msgid "scratch" msgstr "cero" -#: src/data/dictionary.c:981 +#: src/data/dictionary.c:980 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." @@ -258,7 +258,7 @@ msgstr "" "Al menos un caso del archivo de datos tenía un valor de ponderación perdido " "de usuario, de sistema, cero o negativo. Estos caso(s) fueron ignorado(s)." -#: src/data/dictionary.c:1284 +#: src/data/dictionary.c:1283 #, c-format msgid "Truncating document line to %d bytes." msgstr "Linea de documento truncada a %d bytes." @@ -355,20 +355,20 @@ msgstr[1] "" msgid "%s variables are not compatible with %s format %s." msgstr "Las variables %s no son compatibles con %s formato %s." -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "Cadena" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "Numérico" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -376,8 +376,8 @@ msgstr "Numérico" msgid "numeric" msgstr "numérico" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -587,7 +587,7 @@ msgstr "Ancho de variable inválida %d." msgid "Invalid variable name `%s' in position %d." msgstr "Nombre de la variable inválido `%s' en la posición %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:602 +#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 #, c-format msgid "Bad width %d for variable %s." msgstr "Ancho %d incorrecto para la variable %s." @@ -709,7 +709,7 @@ msgstr "" msgid "Variable suffix too large." msgstr "Sufijo de la variable demasiado grande." -#: src/data/sys-file-reader.c:222 +#: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "" @@ -718,42 +718,42 @@ msgstr "" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:286 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 msgid "system file" msgstr "archivo de sistema" -#: src/data/sys-file-reader.c:293 +#: src/data/sys-file-reader.c:297 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "Error en abrir \"%s\" para la lectura como archivo de sistema: %s." -#: src/data/sys-file-reader.c:332 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 msgid "Misplaced type 4 record." msgstr "Registro de tipo 4 fuera de lugar." -#: src/data/sys-file-reader.c:343 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 #, c-format msgid "Unrecognized record type %d." msgstr "Tipo de registro %d no reconocido." -#: src/data/sys-file-reader.c:384 +#: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" "Cabecera del archivo requiere %d posiciones de variable, per se han leído %d " "desde el archivo." -#: src/data/sys-file-reader.c:424 +#: src/data/sys-file-reader.c:428 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "Error en cerrar el archivo de sistema \"%s\": %s." -#: src/data/sys-file-reader.c:489 src/data/sys-file-reader.c:499 +#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 #: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 msgid "This is not an SPSS system file." msgstr "Esto no es un archivo de sistema de SPSS." -#: src/data/sys-file-reader.c:521 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." @@ -761,78 +761,73 @@ msgstr "" "El sesgo de compresión no es el valor habitual de 100, o el archivo de " "sistema utiliza un formato de punto flotante no reconocido." -#: src/data/sys-file-reader.c:598 +#: src/data/sys-file-reader.c:602 #, c-format msgid "Invalid variable name `%s'." msgstr "Nombre de variable '%s' no válido." -#: src/data/sys-file-reader.c:606 +#: src/data/sys-file-reader.c:610 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "Nombre de variable '%s' duplicado dentro del archivo de sistema." -#: src/data/sys-file-reader.c:614 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 msgid "Variable label indicator field is not 0 or 1." msgstr "Campo indicador de etiqueta de variable no es 0 o 1." -#: src/data/sys-file-reader.c:622 tests/dissect-sysfile.c:365 -#, c-format -msgid "Variable %s has label of invalid length %zu." -msgstr "Variable %s tiene una etiqueta de longitud no válida %zu." - -#: src/data/sys-file-reader.c:641 tests/dissect-sysfile.c:383 +#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" "Campo de indicador de valores perdidos numéricos no es -3, -2, 0, 1, 2 o 3." -#: src/data/sys-file-reader.c:659 tests/dissect-sysfile.c:398 +#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "Campo de indicador de valores perdidos de cadena no es 0, 1, 2 o 3." -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:699 msgid "Missing string continuation record." msgstr "Falta de registro de continuación de cadena." -#: src/data/sys-file-reader.c:725 +#: src/data/sys-file-reader.c:733 #, c-format msgid "Unknown variable format %." msgstr "Formato de variable % desconocido." -#: src/data/sys-file-reader.c:743 +#: src/data/sys-file-reader.c:751 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "%s variable %s con formato %s no válido %s." -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "print" msgstr "imprimir" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "write" msgstr "escribir" -#: src/data/sys-file-reader.c:750 +#: src/data/sys-file-reader.c:758 msgid "Suppressing further invalid format warnings." msgstr "Se desactivan las alertas posteriores de formato no válido." -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:776 msgid "Weighting variable must be numeric." msgstr "Variable de ponderación tiene que ser numérica." -#: src/data/sys-file-reader.c:782 +#: src/data/sys-file-reader.c:790 msgid "Multiple type 6 (document) records." msgstr "Múltiples registros de tipo 6 (document)." -#: src/data/sys-file-reader.c:786 +#: src/data/sys-file-reader.c:794 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "Número de líneas de documento (%d) tiene que ser mayor que 0." -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:802 msgid "Document line contains null byte." msgstr "Una línea del documento contiene un byte nulo." -#: src/data/sys-file-reader.c:885 +#: src/data/sys-file-reader.c:893 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " @@ -841,14 +836,14 @@ msgstr "" "Registro de tipo 7, subtipo %d , no reconocido. Por favor envíe una copia de " "este archivo, así como de la sintaxis que lo creó en %s" -#: src/data/sys-file-reader.c:912 tests/dissect-sysfile.c:590 +#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "" "Campo de longitud (%zu) o cantidad (%zu) inválidos en el registro tipo 7, " "subtipo 3." -#: src/data/sys-file-reader.c:932 +#: src/data/sys-file-reader.c:940 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " @@ -857,17 +852,17 @@ msgstr "" "Representación del punto flotante indicado por el archivo de sistema (%d) " "difiere de lo esperado (%d)." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 #, fuzzy msgid "Little Endian" msgstr "Little Endian." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 #, fuzzy msgid "Big Endian" msgstr "Big Endian." -#: src/data/sys-file-reader.c:946 +#: src/data/sys-file-reader.c:954 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." @@ -875,72 +870,72 @@ msgstr "" "Formato entero indicado por el archivo de sistema (%s) difiere de lo " "esperado (%s)." -#: src/data/sys-file-reader.c:1003 tests/dissect-sysfile.c:621 +#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "Longitud (%zu) o cantidad (%zu) de la extensión 4 no válida." -#: src/data/sys-file-reader.c:1007 src/data/sys-file-reader.c:1011 -#: src/data/sys-file-reader.c:1015 tests/dissect-sysfile.c:626 -#: tests/dissect-sysfile.c:631 tests/dissect-sysfile.c:636 +#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 +#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "El archivo especifica un valor inesperado %g como %s." -#: src/data/sys-file-reader.c:1048 +#: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1066 tests/dissect-sysfile.c:687 +#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1075 tests/dissect-sysfile.c:696 +#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format msgid "" "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " "record" msgstr "" -#: src/data/sys-file-reader.c:1081 +#: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1110 +#: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1121 +#: src/data/sys-file-reader.c:1129 #, fuzzy, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "Nombre de la variable %s duplicado en la posición %d." -#: src/data/sys-file-reader.c:1134 +#: src/data/sys-file-reader.c:1142 #, fuzzy, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "" "Ignorando el registro del valor de cadena larga para la variable numérica %s." -#: src/data/sys-file-reader.c:1149 +#: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." msgstr "" -#: src/data/sys-file-reader.c:1186 tests/dissect-sysfile.c:754 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." msgstr "Longitud no válida %zu en la extensión 11." -#: src/data/sys-file-reader.c:1198 tests/dissect-sysfile.c:766 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "Extensión 11 tiene un recuento inválido %zu (para %zu variables)." -#: src/data/sys-file-reader.c:1219 +#: src/data/sys-file-reader.c:1227 #, c-format msgid "" "Invalid variable display parameters for variable %zu (%s). Default " @@ -949,27 +944,27 @@ msgstr "" "Parámetros de visualización de variable no válidos para la variable %zu (%" "s). Sustitución de parámetros por defecto." -#: src/data/sys-file-reader.c:1263 +#: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "" "Identificación de variable larga desde %s hacia un nombre de variable " "inválido '%s'." -#: src/data/sys-file-reader.c:1273 +#: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "" "Nombre de la variable larga '%s' duplicada dentro del archivo de sistema." -#: src/data/sys-file-reader.c:1326 +#: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." msgstr "" "%s figura como cadena de longitud no válida %s en un registro de cadena muy " "largo." -#: src/data/sys-file-reader.c:1336 +#: src/data/sys-file-reader.c:1344 #, c-format msgid "" "%s listed in very long string record with width %s, which requires only one " @@ -978,12 +973,12 @@ msgstr "" "%s figura en el registro de cadena muy larga con longitud %s, que requiere " "solo un segmento." -#: src/data/sys-file-reader.c:1342 +#: src/data/sys-file-reader.c:1350 #, c-format msgid "Very long string %s overflows dictionary." msgstr "Cadena muy larga %s desborda el diccionario." -#: src/data/sys-file-reader.c:1356 +#: src/data/sys-file-reader.c:1364 #, c-format msgid "" "Very long string with width %ld has segment %d of width %d (expected %d)" @@ -991,12 +986,12 @@ msgstr "" "Cadena muy larga con una longitud de %ld tiene un segmento %d de longitud %d " "(se espera %d)" -#: src/data/sys-file-reader.c:1402 +#: src/data/sys-file-reader.c:1410 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Número de etiquetas inválido: %d. Ignorando etiquetas." -#: src/data/sys-file-reader.c:1433 tests/dissect-sysfile.c:464 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." @@ -1004,7 +999,7 @@ msgstr "" "Registro de índice de variable (tipo 4) no está seguido inmediatament, como " "debería, por el registro de etiquetas de valores (tipo 3) ." -#: src/data/sys-file-reader.c:1440 +#: src/data/sys-file-reader.c:1448 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " @@ -1013,7 +1008,7 @@ msgstr "" "Número de variables asociadas con una etiqueta de valores (%d) no está entre " "1 y el número de variables (%zu)." -#: src/data/sys-file-reader.c:1451 +#: src/data/sys-file-reader.c:1459 #, c-format msgid "" "Value labels may not be added to long string variables (e.g. %s) using " @@ -1022,7 +1017,7 @@ msgstr "" "No se pueden añadir etiquetas de valor a las variables de cadena larga (e.g. " "%s) utilizando los tipos de registro 3 y 4." -#: src/data/sys-file-reader.c:1460 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "" "Variables associated with value label are not all of identical type. " @@ -1031,27 +1026,27 @@ msgstr "" "Las variables asociadas con etiqueta de valores no son todas del mismo " "tipo. La variable %s es %s, pero la variable %s es %s." -#: src/data/sys-file-reader.c:1494 +#: src/data/sys-file-reader.c:1502 #, c-format msgid "Duplicate value label for %g on %s." msgstr "Etiqueta de valor duplicad para %g en %s." -#: src/data/sys-file-reader.c:1497 src/data/sys-file-reader.c:1678 +#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "Etiqueta de valor duplicada para \"%.*s\" en %s." -#: src/data/sys-file-reader.c:1535 +#: src/data/sys-file-reader.c:1543 #, c-format msgid "Error parsing attribute value %s[%d]" msgstr "Error al analizar el valor del atributo %s[%d]" -#: src/data/sys-file-reader.c:1549 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "Attribute value %s[%d] is not quoted: %s" msgstr "El valor del atributo %s[%d] no está entre comillas: %s" -#: src/data/sys-file-reader.c:1612 tests/dissect-sysfile.c:932 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format msgid "" "Variable name length in long string value label record (%d) exceeds %d-byte " @@ -1060,20 +1055,20 @@ msgstr "" "La longitud del nombre de la variable en el registro de la etiqueta del " "valor de cadena larga (%d) supera el límite %d-byte." -#: src/data/sys-file-reader.c:1622 +#: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." msgstr "" "Ignorando el registro del valor de cadena larga para la variable desconocida " "%s." -#: src/data/sys-file-reader.c:1629 +#: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." msgstr "" "Ignorando el registro del valor de cadena larga para la variable numérica %s." -#: src/data/sys-file-reader.c:1636 +#: src/data/sys-file-reader.c:1644 #, c-format msgid "" "Ignoring long string value record for variable %s because the record's width " @@ -1082,7 +1077,7 @@ msgstr "" "Ignorando el registro del valor de cadena larga %s ya que el ancho del " "registro (%d) no coincide con el ancho de la variable (%d)" -#: src/data/sys-file-reader.c:1658 +#: src/data/sys-file-reader.c:1666 #, c-format msgid "" "Ignoring long string value %zu for variable %s, with width %d, that has bad " @@ -1091,75 +1086,75 @@ msgstr "" "Ignorando el valor de cadena larga %zu para la variable %s, de ancho %d, que " "tiene un ancho de valor incorrecto %zu." -#: src/data/sys-file-reader.c:1773 +#: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." msgstr "El archivo acaba en un caso parcial." -#: src/data/sys-file-reader.c:1781 +#: src/data/sys-file-reader.c:1789 #, c-format msgid "Error reading case from file %s." msgstr "Error leyendo un caso del archivo %s." -#: src/data/sys-file-reader.c:1882 +#: src/data/sys-file-reader.c:1890 msgid "" "Possible compressed data corruption: compressed spaces appear in numeric " "field." msgstr "" -#: src/data/sys-file-reader.c:1935 +#: src/data/sys-file-reader.c:1943 #, c-format msgid "" "Possible compressed data corruption: string contains compressed integer " "(opcode %d)" msgstr "" -#: src/data/sys-file-reader.c:2027 +#: src/data/sys-file-reader.c:2035 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "Índice de la variable %d no en el intervalo válido de 1...%d." -#: src/data/sys-file-reader.c:2032 +#: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "" "Índice de la variable %d se refiere a una continuación de cadena larga." -#: src/data/sys-file-reader.c:2100 +#: src/data/sys-file-reader.c:2108 #, c-format msgid "Suppressed %d additional related warnings." msgstr "Suprimidas %d advertencias adicionales." -#: src/data/sys-file-reader.c:2141 +#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 #, fuzzy, c-format msgid "Dictionary record refers to unknown variable %s." msgstr "Mapa de la variable se refiere a una variable desconocida %s." -#: src/data/sys-file-reader.c:2202 +#: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2209 +#: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2216 +#: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." msgstr "" -#: src/data/sys-file-reader.c:2226 +#: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2318 tests/dissect-sysfile.c:1337 +#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format msgid "System error: %s." msgstr "Error de sistema: %s." -#: src/data/sys-file-reader.c:2320 tests/dissect-sysfile.c:1339 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 msgid "Unexpected end of file." msgstr "Final de archivo inesperado." @@ -1179,7 +1174,7 @@ msgstr "Error al abrir \"%s\" para grabar com archivo de sistema: %s." msgid "An I/O error occurred writing system file \"%s\"." msgstr "Error de E/S al guardar el archivo de sistema \"%s\"." -#: src/data/variable.c:215 +#: src/data/variable.c:206 #, c-format msgid "" "Character `%c' (in %s) may not appear as the first character in a variable " @@ -1188,21 +1183,21 @@ msgstr "" "Carácter '%c' (en %s) no puede aparecer como el primer carácter en un nombre " "de variable." -#: src/data/variable.c:227 +#: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "Carácter '%c' (en %s) no puede aparecer en un nombre de variable." -#: src/data/variable.c:253 +#: src/data/variable.c:244 msgid "Variable name cannot be empty string." msgstr "El nombre de la variable no puede ser una cadena vacía." -#: src/data/variable.c:259 +#: src/data/variable.c:250 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "El nombre de la variable %s supera el límite de %d caracteres." -#: src/data/variable.c:267 +#: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" @@ -2184,7 +2179,7 @@ msgid "IBM 390 Hex Long." msgstr "IBM 390 Hex Long." #: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:161 src/ui/gui/recode.ui:960 +#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "Variables:" @@ -2575,7 +2570,7 @@ msgstr "Variable de destino %s duplica una variable existente %s." msgid "Variable %s is not dichotomous" msgstr "La variable %s no es dicotómica" -#: src/language/stats/binomial.c:192 +#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "Prueba Binomial" @@ -2588,13 +2583,13 @@ msgid "Group2" msgstr "Grupo 2" #: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1188 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 #: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 #: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 #: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 #: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 #: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:306 src/language/stats/reliability.q:702 +#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 msgid "Total" msgstr "Total" @@ -2603,8 +2598,8 @@ msgstr "Total" msgid "Category" msgstr "Categoría" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:120 -#: src/language/stats/correlations.c:228 src/language/stats/npar-summary.c:122 +#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 #: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 #: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 #: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 @@ -2645,7 +2640,7 @@ msgid "Expected N" msgstr "N esperado" #: src/language/stats/chisquare.c:163 src/language/stats/chisquare.c:202 -#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:305 +#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:290 msgid "Residual" msgstr "Residual" @@ -2665,7 +2660,7 @@ msgstr "Chi-cuadrado" #: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 #: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 -#: src/language/stats/regression.q:299 src/language/stats/t-test.q:752 +#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "df" @@ -2674,13 +2669,13 @@ msgstr "df" msgid "Asymp. Sig." msgstr "Sign. Asint." -#: src/language/stats/correlations.c:97 src/language/stats/factor.c:1431 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 #: src/language/stats/npar-summary.c:108 msgid "Descriptive Statistics" msgstr "Estadísticos Descriptivos" -#: src/language/stats/correlations.c:118 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1452 src/language/stats/npar-summary.c:125 +#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 +#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 #: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 #: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 #: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 @@ -2689,7 +2684,7 @@ msgstr "Estadísticos Descriptivos" msgid "Mean" msgstr "Media" -#: src/language/stats/correlations.c:119 src/language/stats/factor.c:1453 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 #: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 #: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 @@ -2697,37 +2692,37 @@ msgstr "Media" msgid "Std. Deviation" msgstr "Desviación Estándar" -#: src/language/stats/correlations.c:191 src/language/stats/factor.c:1331 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 #, fuzzy msgid "Correlations" msgstr "Correlación" -#: src/language/stats/correlations.c:217 +#: src/language/stats/correlations.c:216 #, fuzzy msgid "Pearson Correlation" msgstr "Correlación de Spearman" -#: src/language/stats/correlations.c:219 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "Sign. (2-colas)" -#: src/language/stats/correlations.c:219 +#: src/language/stats/correlations.c:218 #, fuzzy msgid "Sig. (1-tailed)" msgstr "Sign. (2-colas)" -#: src/language/stats/correlations.c:223 +#: src/language/stats/correlations.c:222 msgid "Cross-products" msgstr "" -#: src/language/stats/correlations.c:224 +#: src/language/stats/correlations.c:223 #, fuzzy msgid "Covariance" msgstr "Covarianza" -#: src/language/stats/correlations.c:446 src/language/stats/descriptives.c:361 +#: src/language/stats/correlations.c:454 src/language/stats/descriptives.c:361 #: src/language/data-io/list.q:91 msgid "No variables specified." msgstr "Variables no especificadas." @@ -2858,53 +2853,44 @@ msgstr "`)' esperado." msgid "Variable %s specified twice in sort criteria." msgstr "La variable %s se especifica dos veces en los criterios de ordenación." -#: src/language/stats/factor.c:558 +#: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." msgstr "" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Component Number" msgstr "Columna Número: 0" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Factor Number" msgstr "Número de Caso" -#: src/language/stats/factor.c:970 +#: src/language/stats/factor.c:1237 #, fuzzy msgid "Communalities" msgstr "Comentarios:" -#: src/language/stats/factor.c:976 +#: src/language/stats/factor.c:1243 msgid "Initial" msgstr "" -#: src/language/stats/factor.c:979 +#: src/language/stats/factor.c:1246 msgid "Extraction" msgstr "" -#: src/language/stats/factor.c:1029 -msgid "Component Matrix" -msgstr "" - -#: src/language/stats/factor.c:1031 -#, fuzzy -msgid "Factor Matrix" -msgstr "Lista de Factores:" - -#: src/language/stats/factor.c:1039 src/language/stats/factor.c:1163 +#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 #, fuzzy msgid "Component" msgstr "Comentarios:" -#: src/language/stats/factor.c:1044 src/language/stats/factor.c:1165 +#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 #, fuzzy msgid "Factor" msgstr "_Factor:" -#: src/language/stats/factor.c:1076 src/language/stats/factor.c:1219 +#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: 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 @@ -2912,62 +2898,80 @@ msgstr "_Factor:" msgid "%d" msgstr "%d" -#: src/language/stats/factor.c:1138 +#: src/language/stats/factor.c:1412 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1170 +#: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1176 +#: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1182 +#: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1190 +#: src/language/stats/factor.c:1464 #, fuzzy, no-c-format msgid "% of Variance" msgstr "Varianza" -#: src/language/stats/factor.c:1191 +#: src/language/stats/factor.c:1465 msgid "Cumulative %" msgstr "" -#: src/language/stats/factor.c:1289 +#: src/language/stats/factor.c:1578 #, fuzzy msgid "Correlation Matrix" msgstr "Correlación" -#: src/language/stats/factor.c:1343 +#: src/language/stats/factor.c:1632 #, fuzzy msgid "Sig. 1-tailed" msgstr "Sign. (2-colas)" -#: src/language/stats/factor.c:1377 +#: src/language/stats/factor.c:1666 #, fuzzy msgid "Determinant" msgstr "Dependiente" -#: src/language/stats/factor.c:1454 +#: src/language/stats/factor.c:1743 msgid "Analysis N" msgstr "" -#: src/language/stats/factor.c:1487 +#: src/language/stats/factor.c:1776 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1493 +#: src/language/stats/factor.c:1782 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" +#: src/language/stats/factor.c:1865 +msgid "Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1865 +#, fuzzy +msgid "Factor Matrix" +msgstr "Lista de Factores:" + +#: src/language/stats/factor.c:1871 +msgid "Rotated Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1871 +#, fuzzy +msgid "Rotated Factor Matrix" +msgstr "Lista de Factores:" + #: src/language/stats/flip.c:98 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." @@ -3058,7 +3062,7 @@ msgstr "Área" #: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 #: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:201 +#: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "Error Estándar" @@ -3973,7 +3977,7 @@ msgstr "" msgid "ascii: opening output file \"%s\"" msgstr "ascii: abriendo el archivo de resultados \"%s\"" -#: src/output/ascii.c:913 src/output/cairo.c:826 +#: src/output/ascii.c:913 src/output/cairo.c:784 #, c-format msgid "%s - Page %d" msgstr "%s - Página %d" @@ -4091,12 +4095,12 @@ msgid "" msgstr "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" -#: src/output/cairo.c:283 +#: src/output/cairo.c:295 #, fuzzy, c-format msgid "error opening output file \"%s\": %s" msgstr "ascii: abriendo el archivo de resultados \"%s\"" -#: src/output/cairo.c:301 +#: src/output/cairo.c:312 #, fuzzy, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " @@ -4107,7 +4111,7 @@ msgstr "" "fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de " "cada fuente en la medida por defecto de %d.%03d puntos." -#: src/output/cairo.c:311 +#: src/output/cairo.c:322 #, fuzzy, c-format msgid "" "The defined page is not long enough to hold margins and headers, plus least %" @@ -4118,17 +4122,17 @@ msgstr "" "fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de " "cada fuente en la medida por defecto de %d.%03d puntos." -#: src/output/cairo.c:364 +#: src/output/cairo.c:376 #, fuzzy, c-format msgid "error drawing output for %s driver: %s" msgstr "error de sintaxis analitzando opciones para el controlador \"%s\"" -#: src/output/cairo.c:906 +#: src/output/cairo.c:864 #, c-format msgid "\"%s\": bad font specification" msgstr "\"%s\": especificación de carácter no válida" -#: src/output/cairo.c:1116 +#: src/output/cairo.c:1084 #, fuzzy, c-format msgid "error writing output file \"%s\": %s" msgstr "Error en cerrar el archivo portátil \"%s\": %s." @@ -4227,16 +4231,6 @@ msgstr "" msgid "%s: output option specified more than once" msgstr "" -#: src/ui/gui/about.c:66 -msgid "A program for the analysis of sampled data" -msgstr "Un programa para el análisis de datos de muestreo" - -#. TRANSLATORS: Use this string to list the people who have helped with -#. translation to your language. -#: src/ui/gui/about.c:76 -msgid "translator-credits" -msgstr "F.J. Miguel, J. Gómez, P. Payà" - #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 #: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 @@ -4303,7 +4297,7 @@ msgstr "Corr" #: src/ui/gui/crosstabs-dialog.c:54 src/ui/gui/crosstabs-dialog.c:65 #: src/ui/gui/crosstabs-dialog.c:100 src/ui/gui/crosstabs-dialog.c:108 #: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16 -#: src/ui/gui/variable-info-dialog.c:40 +#: src/ui/gui/variable-info-dialog.c:41 msgid "None" msgstr "Ninguno" @@ -4339,12 +4333,12 @@ msgstr "Desviación Estándar" msgid "Standard error" msgstr "Error Estándar" -#: src/ui/gui/find-dialog.c:651 +#: src/ui/gui/find-dialog.c:649 #, c-format msgid "Bad regular expression: %s" msgstr "Expresión regular incorrecta: %s" -#: src/ui/gui/factor-dialog.c:230 +#: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" msgstr "" @@ -4370,17 +4364,35 @@ msgstr "Error estándar en la curtosis" msgid "Median" msgstr "Mediana" -#: src/ui/gui/helper.c:196 +#: src/ui/gui/helper.c:197 msgid "Sorry. The help system hasn't yet been implemented." msgstr "Disculpen. El sistema de ayuda todavía no ha sido implementado." -#: src/ui/gui/helper.c:241 +#: src/ui/gui/help-menu.c:67 +msgid "A program for the analysis of sampled data" +msgstr "Un programa para el análisis de datos de muestreo" + +#. TRANSLATORS: Use this string to list the people who have helped with +#. translation to your language. +#: src/ui/gui/help-menu.c:77 +msgid "translator-credits" +msgstr "F.J. Miguel, J. Gómez, P. Payà" + +#: src/ui/gui/help-menu.c:98 #, c-format msgid "" "Cannot open reference manual: %s. The PSPP user manual is also available at " "http://www.gnu.org/software/pspp/documentation.html" msgstr "" +#: src/ui/gui/help-menu.c:117 +msgid "_Help" +msgstr "Ayuda" + +#: src/ui/gui/help-menu.c:124 +msgid "_Reference Manual" +msgstr "Manual de _Referencia" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "Valor incorrecto para el tipo de variable" @@ -4389,7 +4401,7 @@ msgstr "Valor incorrecto para el tipo de variable" msgid "Incorrect range specification" msgstr "Especificación de intervalo incorrecta" -#: src/ui/gui/oneway-anova-dialog.c:314 +#: src/ui/gui/oneway-anova-dialog.c:313 #, c-format msgid "Contrast %d of %d" msgstr "Contraste %d de %d" @@ -4414,58 +4426,58 @@ msgstr "Vista de Variables" msgid "var" msgstr "var" -#: src/ui/gui/psppire-data-window.c:210 +#: src/ui/gui/psppire-data-window.c:212 msgid "Transformations Pending" msgstr "Transformaciones pendientes" -#: src/ui/gui/psppire-data-window.c:226 +#: src/ui/gui/psppire-data-window.c:228 msgid "Filter off" msgstr "SIN Filtro" -#: src/ui/gui/psppire-data-window.c:240 +#: src/ui/gui/psppire-data-window.c:242 #, c-format msgid "Filter by %s" msgstr "Filtrado por %s" -#: src/ui/gui/psppire-data-window.c:261 +#: src/ui/gui/psppire-data-window.c:263 msgid "No Split" msgstr "NO Dividido" -#: src/ui/gui/psppire-data-window.c:270 +#: src/ui/gui/psppire-data-window.c:272 msgid "Split by " msgstr "Dividido por " -#: src/ui/gui/psppire-data-window.c:298 +#: src/ui/gui/psppire-data-window.c:300 msgid "Weights off" msgstr "SIN Ponderar" -#: src/ui/gui/psppire-data-window.c:312 +#: src/ui/gui/psppire-data-window.c:314 #, c-format msgid "Weight by %s" msgstr "Ponderado por %s" -#: src/ui/gui/psppire-data-window.c:380 +#: src/ui/gui/psppire-data-window.c:382 msgid "Open" msgstr "Abrir" -#: src/ui/gui/psppire-data-window.c:390 +#: src/ui/gui/psppire-data-window.c:392 #, fuzzy msgid "Data and Syntax Files" msgstr "No se puede abrir el archivo de sintaxis \"%s\"" -#: src/ui/gui/psppire-data-window.c:400 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 msgid "System Files (*.sav)" msgstr "Archivos de Sistema (*.sav)" -#: src/ui/gui/psppire-data-window.c:406 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 msgid "Portable Files (*.por) " msgstr "Archivos Portátiles (*.por)" -#: src/ui/gui/psppire-data-window.c:412 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 msgid "Syntax Files (*.sps) " msgstr "Archivos de Sintàxis (*.sps) " -#: src/ui/gui/psppire-data-window.c:418 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Todos los archivos" @@ -4478,46 +4490,46 @@ msgstr "Guardar" msgid "Portable File" msgstr "Archivo Portátil" -#: src/ui/gui/psppire-data-window.c:786 +#: src/ui/gui/psppire-data-window.c:773 msgid "Font Selection" msgstr "Selección de fuente" -#: src/ui/gui/psppire-data-window.c:1581 +#: src/ui/gui/psppire-data-window.c:1261 msgid "Data Editor" msgstr "Editor de Datos" -#: src/ui/gui/psppire-output-window.c:441 +#: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" msgstr "" -#: src/ui/gui/psppire-output-window.c:449 +#: src/ui/gui/psppire-output-window.c:466 #, fuzzy msgid "PDF Files (*.pdf)" msgstr "Archivos Portátiles (*.por)" -#: src/ui/gui/psppire-output-window.c:450 +#: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" msgstr "" -#: src/ui/gui/psppire-output-window.c:451 +#: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:452 +#: src/ui/gui/psppire-output-window.c:469 #, fuzzy msgid "Text Files (*.txt)" msgstr "Archivos de Sistema (*.sav)" -#: src/ui/gui/psppire-output-window.c:453 +#: src/ui/gui/psppire-output-window.c:470 #, fuzzy msgid "PostScript Files (*.ps)" msgstr "Archivos Portátiles (*.por)" -#: src/ui/gui/psppire-output-window.c:454 +#: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" msgstr "" -#: src/ui/gui/psppire-output-window.c:593 +#: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" msgstr "Visor de resultados" @@ -4530,11 +4542,11 @@ msgstr "Guardado archivo \"%s\"" msgid "Save Syntax" msgstr "Guardar sintaxis" -#: src/ui/gui/psppire-syntax-window.c:512 +#: src/ui/gui/psppire-syntax-window.c:496 msgid "Syntax Editor" msgstr "Editor de sintaxis" -#: src/ui/gui/psppire-syntax-window.c:526 +#: src/ui/gui/psppire-syntax-window.c:510 #, c-format msgid "Cannot load syntax file '%s'" msgstr "No se puede abrir el archivo de sintaxis \"%s\"" @@ -4618,27 +4630,27 @@ msgstr "" msgid "Close _without saving" msgstr "Cerrar sin guardar" -#: src/ui/gui/recode-dialog.c:915 +#: src/ui/gui/recode-dialog.c:911 msgid "Recode into Different Variables" msgstr "Recodificar en variables Diferentes" -#: src/ui/gui/recode-dialog.c:918 src/ui/gui/recode.ui:692 +#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692 msgid "Recode into Same Variables" msgstr "Recodificar en las Mismas variables" -#: src/ui/gui/recode-dialog.c:933 src/ui/gui/recode-dialog.c:1029 +#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025 msgid "New" msgstr "Nuevo" -#: src/ui/gui/recode-dialog.c:948 src/ui/gui/recode-dialog.c:1021 +#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017 msgid "Old" msgstr "Anterior" -#: src/ui/gui/recode-dialog.c:1278 +#: src/ui/gui/recode-dialog.c:1274 msgid "Recode into Different Variables: Old and New Values " msgstr "Recodifica en variables Diferentes: Anteriores y Nuevos valores " -#: src/ui/gui/recode-dialog.c:1279 +#: src/ui/gui/recode-dialog.c:1275 msgid "Recode into Same Variables: Old and New Values" msgstr "Recodifica en las mismas variables: Anteriores y Nuevos valores" @@ -4646,7 +4658,7 @@ msgstr "Recodifica en las mismas variables: Anteriores y Nuevos valores" msgid "Coeff" msgstr "Coef" -#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:158 +#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:155 msgid "R" msgstr "R" @@ -4769,31 +4781,31 @@ msgstr "El contenido del campo \"%.*s\" no puede ser analizado en formato %s." msgid "Confidence Interval: %2d %%" msgstr "Intervalo de Confianza: %2d %%" -#: src/ui/gui/variable-info-dialog.c:76 +#: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" msgstr "Etiqueta: %s\n" -#: src/ui/gui/variable-info-dialog.c:83 +#: src/ui/gui/variable-info-dialog.c:84 #, c-format msgid "Type: %s\n" msgstr "Tipo: %s\n" -#: src/ui/gui/variable-info-dialog.c:87 +#: src/ui/gui/variable-info-dialog.c:88 #, c-format msgid "Missing Values: %s\n" msgstr "Valores perdidos: %s\n" -#: src/ui/gui/variable-info-dialog.c:92 +#: src/ui/gui/variable-info-dialog.c:93 #, c-format msgid "Measurement Level: %s\n" msgstr "Nivel de Medida: %s\n" -#: src/ui/gui/variable-info-dialog.c:105 +#: src/ui/gui/variable-info-dialog.c:106 msgid "Value Labels:\n" msgstr "Etiquetas de valor:\n" -#: src/ui/gui/variable-info-dialog.c:115 +#: src/ui/gui/variable-info-dialog.c:116 #, c-format msgid "%s %s\n" msgstr "%s %s\n" @@ -4808,27 +4820,27 @@ msgstr "No ponderar los casos" msgid "Weight cases by %s" msgstr "Ponderar los casos por %s" -#: tests/dissect-sysfile.c:567 +#: tests/dissect-sysfile.c:571 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Tipo de registro 7 no reconocido, subtipo %d." -#: tests/dissect-sysfile.c:846 +#: tests/dissect-sysfile.c:850 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "%s: Error al analizar el valor del atributo %s[%d]" -#: tests/dissect-sysfile.c:852 +#: tests/dissect-sysfile.c:856 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: El valor del atributo %s[%d] no está entre comillas: %s" -#: tests/dissect-sysfile.c:876 +#: tests/dissect-sysfile.c:880 #, fuzzy, c-format msgid "Bad size %zu for extended number of cases." msgstr "Longitud no válida %zu en la extensión 11." -#: tests/dissect-sysfile.c:882 +#: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." msgstr "" @@ -5304,14 +5316,10 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:245 +#: src/language/stats/glm.q:248 msgid "Multivariate GLM not yet supported" msgstr "GLM multivariable todavía no disponible" -#: src/language/stats/glm.q:355 src/language/stats/regression.q:998 -msgid "No valid data found. This command was skipped." -msgstr "No se han encontrado datos válidos. Se ignora esta orden." - #: src/language/stats/means.q:100 msgid "Missing required subcommand TABLES." msgstr "Falta el subcomando requerido TABLES." @@ -5320,18 +5328,18 @@ msgstr "Falta el subcomando requerido TABLES." msgid "TABLES subcommand may not appear more than once." msgstr "El subcomando TABLES no puede aparecer más de una vez." -#: src/language/stats/npar.q:110 +#: src/language/stats/npar.q:111 msgid "NPAR subcommand not currently implemented." msgstr "Actualmente no está implementado el subcomando NPAR." -#: src/language/stats/npar.q:254 +#: src/language/stats/npar.q:256 #, c-format msgid "" "The specified value of HI (%d) is lower than the specified value of LO (%d)" msgstr "" "El valor especificado para HI (%d) es menor que el especificado para LO (%d)" -#: src/language/stats/npar.q:309 +#: src/language/stats/npar.q:311 #, c-format msgid "" "%d expected values were given, but the specified range (%d-%d) requires " @@ -5340,7 +5348,7 @@ msgstr "" "Se han proporcionado %d valores esperados, pero el intervalo especificado (%" "d-%d) requiere exactamente %d valores." -#: src/language/stats/npar.q:444 src/language/stats/t-test.q:380 +#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%zu) did " @@ -5364,21 +5372,21 @@ msgstr "Los coeficientes para contrastar %zu no suman cero" msgid "`%s' is not a variable name" msgstr "`%s' no es un nombre de variable" -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:298 +#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 msgid "Sum of Squares" msgstr "Suma de Cuadrados" -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:300 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 msgid "Mean Square" msgstr "Cuadrado medio" -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 +#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 #: src/language/stats/t-test.q:749 msgid "F" msgstr "F" #: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:204 src/language/stats/regression.q:302 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 msgid "Significance" msgstr "Significatividad" @@ -5390,7 +5398,7 @@ msgstr "Entre Grupos" msgid "Within Groups" msgstr "Intra Grupos" -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:327 +#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 msgid "ANOVA" msgstr "ANOVA" @@ -5426,7 +5434,7 @@ msgstr "Pruebas de contrate" msgid "Value of Contrast" msgstr "Valor de constraste" -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:203 +#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 #: src/language/stats/t-test.q:1009 msgid "t" @@ -5497,55 +5505,55 @@ msgstr "La variable %s ya existe." msgid "Too many variables in INTO clause." msgstr "Demasiadas variables a la cláusula INTO." -#: src/language/stats/regression.q:159 +#: src/language/stats/regression.q:156 msgid "R Square" msgstr "R Cuadrada" -#: src/language/stats/regression.q:160 +#: src/language/stats/regression.q:157 msgid "Adjusted R Square" msgstr "R Cuadrada Ajustada" -#: src/language/stats/regression.q:161 +#: src/language/stats/regression.q:158 msgid "Std. Error of the Estimate" msgstr "Error estándard del Estimador" -#: src/language/stats/regression.q:166 +#: src/language/stats/regression.q:163 msgid "Model Summary" msgstr "Resumen del modelo" -#: src/language/stats/regression.q:200 +#: src/language/stats/regression.q:197 msgid "B" msgstr "B" -#: src/language/stats/regression.q:202 +#: src/language/stats/regression.q:199 msgid "Beta" msgstr "Beta" -#: src/language/stats/regression.q:205 +#: src/language/stats/regression.q:202 msgid "(Constant)" msgstr "(Constant)" -#: src/language/stats/regression.q:269 +#: src/language/stats/regression.q:254 msgid "Coefficients" msgstr "Coeficientes" -#: src/language/stats/regression.q:304 src/ui/gui/regression.ui:7 +#: src/language/stats/regression.q:289 src/ui/gui/regression.ui:7 msgid "Regression" msgstr "Regresión" -#: src/language/stats/regression.q:385 +#: src/language/stats/regression.q:370 msgid "Model" msgstr "Modelo" -#: src/language/stats/regression.q:386 +#: src/language/stats/regression.q:371 msgid "Covariances" msgstr "Covarianza" -#: src/language/stats/regression.q:401 +#: src/language/stats/regression.q:386 msgid "Coefficient Correlations" msgstr "Correlaciones de Coeficientes" -#: src/language/stats/regression.q:808 +#: src/language/stats/regression.q:793 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 " @@ -5555,9 +5563,13 @@ msgstr "" "minimos cuadrados es por tanto Y=X. Los errores estándard y los estadísticos " "relacionados podrian ser irrelevantes." -#: src/language/stats/regression.q:900 -msgid "Dependent variable must be numeric." -msgstr "La variable dependiente debe ser numérica." +#: src/language/stats/regression.q:891 +msgid "REGRESSION requires numeric variables." +msgstr "" + +#: src/language/stats/regression.q:962 +msgid "No valid data found. This command was skipped." +msgstr "No se han encontrado datos válidos. Se ignora esta orden." #: src/language/stats/reliability.q:421 msgid "Reliability Statistics" @@ -5820,6 +5832,28 @@ msgstr "El último caso (%ld) a listar es menor que 1. El valor se ajusta a 1." msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "El valor de paso %ld es menor que 1. El valor se ajusta a 1." +#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 +#, fuzzy +msgid "_Test Variable List:" +msgstr "Variable(s) de contraste:" + +#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 +msgid "_Get from data" +msgstr "" + +#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 +msgid "_Cut point:" +msgstr "Punto de corte:" + +#: src/ui/gui/binomial.ui:178 +msgid "Define Dichotomy" +msgstr "" + +#: src/ui/gui/binomial.ui:197 +#, fuzzy +msgid "Test _Proportion:" +msgstr "Prop. Test" + #: src/ui/gui/correlation.ui:7 #, fuzzy msgid "Bivariate Correlations" @@ -5933,6 +5967,45 @@ msgstr "Pruebas Estadísticas" msgid "Statistics" msgstr "Estadísticas" +#: src/ui/gui/chi-square.ui:13 +#, fuzzy +msgid "Chi-Square Test" +msgstr "Pruebas Chi-cuadrado." + +#: src/ui/gui/chi-square.ui:140 +#, fuzzy +msgid "Use _specified range" +msgstr "Utiliza valores especificados:" + +#: src/ui/gui/chi-square.ui:162 +#, fuzzy +msgid "_Lower:" +msgstr "Inferior" + +#: src/ui/gui/chi-square.ui:170 +#, fuzzy +msgid "_Upper:" +msgstr "Superior" + +#: src/ui/gui/chi-square.ui:214 +#, fuzzy +msgid "Expected Range:" +msgstr "N esperado" + +#: src/ui/gui/chi-square.ui:240 +msgid "All categor_ies equal" +msgstr "" + +#: src/ui/gui/chi-square.ui:257 +#, fuzzy +msgid "_Values" +msgstr "Valores" + +#: src/ui/gui/chi-square.ui:301 +#, fuzzy +msgid "Expected Values:" +msgstr "Valores extremos" + #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" msgstr "Estadísticas:" @@ -6013,64 +6086,102 @@ msgstr "Lista de Factores:" #: src/ui/gui/factor.ui:47 #, fuzzy -msgid "Descriptives..." +msgid "_Descriptives..." msgstr "Descriptivos" #: src/ui/gui/factor.ui:60 #, fuzzy -msgid "Extraction..." +msgid "_Extraction..." msgstr "Opciones..." -#: src/ui/gui/factor.ui:180 +#: src/ui/gui/factor.ui:74 +#, fuzzy +msgid "_Rotations..." +msgstr "Opciones..." + +#: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:204 +#: src/ui/gui/factor.ui:216 #, fuzzy msgid "Method: " msgstr "Modo:" -#: src/ui/gui/factor.ui:254 +#: src/ui/gui/factor.ui:266 #, fuzzy msgid "Correlation matrix" msgstr "Correlación" -#: src/ui/gui/factor.ui:268 +#: src/ui/gui/factor.ui:280 #, fuzzy msgid "Covariance matrix" msgstr "Covarianza" -#: src/ui/gui/factor.ui:288 +#: src/ui/gui/factor.ui:300 #, fuzzy msgid "Analyse" msgstr "_Analizar" -#: src/ui/gui/factor.ui:312 +#: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:326 +#: src/ui/gui/factor.ui:338 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:345 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 #, fuzzy msgid "Display" msgstr "Contenido de celda" -#: src/ui/gui/factor.ui:418 +#: src/ui/gui/factor.ui:430 msgid "Number of factors:" msgstr "" -#: src/ui/gui/factor.ui:448 +#: src/ui/gui/factor.ui:460 #, fuzzy msgid "Extract" msgstr "Eta" -#: src/ui/gui/factor.ui:463 +#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" msgstr "" +#: src/ui/gui/factor.ui:538 +#, fuzzy +msgid "Factor Analysis: Rotation" +msgstr "Lista de Factores:" + +#: src/ui/gui/factor.ui:571 +#, fuzzy +msgid "_None" +msgstr "Ninguno" + +#: src/ui/gui/factor.ui:582 +#, fuzzy +msgid "_Varimax" +msgstr "_Variables" + +#: src/ui/gui/factor.ui:598 +msgid "_Quartimax" +msgstr "" + +#: src/ui/gui/factor.ui:614 +msgid "_Equimax" +msgstr "" + +#: src/ui/gui/factor.ui:637 +#, fuzzy +msgid "Method" +msgstr "Modo:" + +#: src/ui/gui/factor.ui:648 +#, fuzzy +msgid "_Display rotated solution" +msgstr "Muestra _información del archivo de datos" + #: src/ui/gui/find.ui:8 #, fuzzy msgid "Find Case" @@ -6784,10 +6895,6 @@ msgstr "Valor del grupo 2:" msgid "Group_1 value:" msgstr "Valor del Grupo 1:" -#: src/ui/gui/t-test.ui:333 -msgid "_Cut point:" -msgstr "Punto de corte:" - #: src/ui/gui/t-test.ui:365 msgid "_Use specified values:" msgstr "Utiliza valores especificados:" @@ -7035,19 +7142,19 @@ msgstr "Ordenación Ascendente" msgid "Sort Descending" msgstr "Ordenación Descendente" -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.glade:21 -#: src/ui/gui/syntax-editor.glade:14 +#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "_Archivo" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.glade:32 -#: src/ui/gui/syntax-editor.glade:62 +#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "_Sintaxis" #: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217 -#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.glade:41 -#: src/ui/gui/syntax-editor.glade:71 +#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "_Datos" @@ -7075,8 +7182,8 @@ msgstr "Datos utilizados recientemente" msgid "Recently Used _Files" msgstr "Archivos utilizados recientemente" -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.glade:43 -#: src/ui/gui/syntax-editor.glade:118 +#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "_Editar" @@ -7296,13 +7403,13 @@ msgstr "Ir a la variable" msgid "Data File _Comments" msgstr "_Comentarios al archivo de datos" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.glade:66 -#: src/ui/gui/syntax-editor.glade:209 +#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 +#: src/ui/gui/syntax-editor.ui:131 msgid "_Windows" msgstr "_Ventanas" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.glade:76 -#: src/ui/gui/syntax-editor.glade:218 +#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:137 msgid "_Minimize All Windows" msgstr "_Minimizar todas las ventanas" @@ -7310,69 +7417,64 @@ msgstr "_Minimizar todas las ventanas" msgid "_Split" msgstr "Dividir" -#: src/ui/gui/data-editor.ui:462 src/ui/gui/output-viewer.glade:87 -#: src/ui/gui/syntax-editor.glade:229 -msgid "_Help" -msgstr "Ayuda" - -#: src/ui/gui/data-editor.ui:468 src/ui/gui/output-viewer.glade:94 -#: src/ui/gui/syntax-editor.glade:237 -msgid "_Reference Manual" -msgstr "Manual de _Referencia" - -#: src/ui/gui/data-editor.ui:652 +#: src/ui/gui/data-editor.ui:630 msgid "Information Area" msgstr "Área de Información" -#: src/ui/gui/data-editor.ui:674 +#: src/ui/gui/data-editor.ui:652 msgid "Processor Area" msgstr "Área del procesador" -#: src/ui/gui/data-editor.ui:699 +#: src/ui/gui/data-editor.ui:677 msgid "Case Counter Area" msgstr "Área de Recuento" -#: src/ui/gui/data-editor.ui:724 +#: src/ui/gui/data-editor.ui:702 msgid "Filter Use Status Area" msgstr "Área de uso de Filtro" -#: src/ui/gui/data-editor.ui:750 +#: src/ui/gui/data-editor.ui:728 msgid "Weight Status Area" msgstr "Área de Ponderación" -#: src/ui/gui/data-editor.ui:776 +#: src/ui/gui/data-editor.ui:754 msgid "Split File Status Area" msgstr "Área de División de Archivo" -#: src/ui/gui/output-viewer.glade:31 +#: src/ui/gui/output-viewer.ui:22 #, fuzzy msgid "_Export" msgstr "_Explorar" -#: src/ui/gui/output-viewer.glade:101 src/ui/gui/syntax-editor.glade:244 -msgid "_About" -msgstr "Sobre..." - -#: src/ui/gui/syntax-editor.glade:163 +#: src/ui/gui/syntax-editor.ui:100 msgid "_Run" msgstr "Ejecuta_r" -#: src/ui/gui/syntax-editor.glade:172 +#: src/ui/gui/syntax-editor.ui:106 msgid "All" msgstr "Todos" -#: src/ui/gui/syntax-editor.glade:180 +#: src/ui/gui/syntax-editor.ui:112 msgid "Selection" msgstr "Selección" -#: src/ui/gui/syntax-editor.glade:188 +#: src/ui/gui/syntax-editor.ui:118 msgid "Current Line" msgstr "Línea actual" -#: src/ui/gui/syntax-editor.glade:197 +#: src/ui/gui/syntax-editor.ui:125 msgid "To End" msgstr "Hasta el final" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "La variable dependiente debe ser numérica." + +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variable %s tiene una etiqueta de longitud no válida %zu." + +#~ msgid "_About" +#~ msgstr "Sobre..." + #~ msgid "Buttons" #~ msgstr "Botones" diff --git a/po/nl.po b/po/nl.po index b83e1120..e8bcc632 100644 --- a/po/nl.po +++ b/po/nl.po @@ -30,7 +30,7 @@ msgid "" msgstr "" "Project-Id-Version: pspp-0.7.4-pre1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-15 11:14+0200\n" +"POT-Creation-Date: 2010-05-21 12:02+0200\n" "PO-Revision-Date: 2010-05-11 11:54+0200\n" "Last-Translator: Harry Thijssen \n" "Language-Team: Dutch \n" @@ -270,7 +270,7 @@ msgstr "systeem" msgid "scratch" msgstr "scratch" -#: src/data/dictionary.c:981 +#: src/data/dictionary.c:980 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." @@ -278,7 +278,7 @@ msgstr "" "Op zijn minst een case in het gegevensbestand heeft een gewichtwaarde user-" "missing, system-missing, nul, of negatief. Deze case(s) zijn genegeerd." -#: src/data/dictionary.c:1284 +#: src/data/dictionary.c:1283 #, c-format msgid "Truncating document line to %d bytes." msgstr "Documentregel afgekapt tot %d bytes." @@ -373,20 +373,20 @@ msgstr[1] "" msgid "%s variables are not compatible with %s format %s." msgstr "%s variabelen zijn niet overeenkomstig met %s opmaak %s." -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "Tekenreeks" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "Numeriek" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -394,8 +394,8 @@ msgstr "Numeriek" msgid "numeric" msgstr "numeriek" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -603,7 +603,7 @@ msgstr "Ongeldige variabelenbreedte %d." msgid "Invalid variable name `%s' in position %d." msgstr "Ongeldige variabelennaam '%s' op positie %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:602 +#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 #, c-format msgid "Bad width %d for variable %s." msgstr "Onjuiste breedte %d voor variabele %s." @@ -726,7 +726,7 @@ msgstr "" msgid "Variable suffix too large." msgstr "Variabelen-achtervoegsel te lang." -#: src/data/sys-file-reader.c:222 +#: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "" @@ -735,120 +735,115 @@ msgstr "" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:286 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 msgid "system file" msgstr "systeembestand" -#: src/data/sys-file-reader.c:293 +#: src/data/sys-file-reader.c:297 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "" "Fout bij het openen van \"%s\" voor het lezen als een systeembestand: %s." -#: src/data/sys-file-reader.c:332 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 msgid "Misplaced type 4 record." msgstr "Verkeerd geplaatst type 4 record." -#: src/data/sys-file-reader.c:343 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 #, c-format msgid "Unrecognized record type %d." msgstr "Niet-herkend recordtype %d." -#: src/data/sys-file-reader.c:384 +#: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" "Bestandskop claimt %d variabelenposities maar er zijn er %d gelezen van het " "bestand." -#: src/data/sys-file-reader.c:424 +#: src/data/sys-file-reader.c:428 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "Fout bij het sluiten van systeembestand \"%s\": %s." -#: src/data/sys-file-reader.c:489 src/data/sys-file-reader.c:499 +#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 #: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 msgid "This is not an SPSS system file." msgstr "Dit is geen SPSS-systeembestand." -#: src/data/sys-file-reader.c:521 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." msgstr "" -#: src/data/sys-file-reader.c:598 +#: src/data/sys-file-reader.c:602 #, c-format msgid "Invalid variable name `%s'." msgstr "Ongeldige variabelennaam '%s'." -#: src/data/sys-file-reader.c:606 +#: src/data/sys-file-reader.c:610 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "Dubbele variabelennaam '%s' binnen systeembestand." -#: src/data/sys-file-reader.c:614 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 msgid "Variable label indicator field is not 0 or 1." msgstr "Variabelen-labelindicatorveld is niet 0 of 1." -#: src/data/sys-file-reader.c:622 tests/dissect-sysfile.c:365 -#, c-format -msgid "Variable %s has label of invalid length %zu." -msgstr "Variabele %s heeft label van ongeldige lengte %zu." - -#: src/data/sys-file-reader.c:641 tests/dissect-sysfile.c:383 +#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" "Numeriek ontbrekende-waarde indicatorveld is niet -3, -2, 0, 1, 2, of 3." -#: src/data/sys-file-reader.c:659 tests/dissect-sysfile.c:398 +#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "Tekenreeks ontbrekende-waarde indicatorveld is niet 0, 1, 2, of 3." -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:699 msgid "Missing string continuation record." msgstr "Mis tekenreeks continuering record." -#: src/data/sys-file-reader.c:725 +#: src/data/sys-file-reader.c:733 #, c-format msgid "Unknown variable format %." msgstr "Onbekend variabelenopmaak %." -#: src/data/sys-file-reader.c:743 +#: src/data/sys-file-reader.c:751 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "%s variabele %s heeft ongeldig %s opmaak %s." -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "print" msgstr "afdrukken" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "write" msgstr "schrijf" -#: src/data/sys-file-reader.c:750 +#: src/data/sys-file-reader.c:758 msgid "Suppressing further invalid format warnings." msgstr "Onderdrukt verdere ongeldig indelingswaarschuwingen." -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:776 msgid "Weighting variable must be numeric." msgstr "Wegingvariabele moet numeriek zijn." -#: src/data/sys-file-reader.c:782 +#: src/data/sys-file-reader.c:790 msgid "Multiple type 6 (document) records." msgstr "Meerdere type 6 (document) records." -#: src/data/sys-file-reader.c:786 +#: src/data/sys-file-reader.c:794 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "Aantal documentregels (%d) moet groter dan 0 zijn." -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:802 msgid "Document line contains null byte." msgstr "Documentregel bevat null byte." -#: src/data/sys-file-reader.c:885 +#: src/data/sys-file-reader.c:893 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " @@ -857,12 +852,12 @@ msgstr "" "Niet-herkend type 7, subtype %d. Stuur s.v.p. een kopie van dit bestand en " "de syntax waarmee het is aangemaakt naar %s " -#: src/data/sys-file-reader.c:912 tests/dissect-sysfile.c:590 +#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "Onjuiste lengte (%zu) of aantal (%zu) veld in recordtype 7, subtype 3." -#: src/data/sys-file-reader.c:932 +#: src/data/sys-file-reader.c:940 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " @@ -871,15 +866,15 @@ msgstr "" "Drijvende komma representatie aangegeven door systeembestand %d verschilt " "van verwachting (%d)." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 msgid "Little Endian" msgstr "Little Endian" -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 msgid "Big Endian" msgstr "Big Endian" -#: src/data/sys-file-reader.c:946 +#: src/data/sys-file-reader.c:954 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." @@ -887,71 +882,71 @@ msgstr "" "Integer indeling aangegeven door systeembestand (%s) verschilt van verwacht " "(%s)." -#: src/data/sys-file-reader.c:1003 tests/dissect-sysfile.c:621 +#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "Onjuiste lengte (%zu) of aantal (%zu) bij extensie 4." -#: src/data/sys-file-reader.c:1007 src/data/sys-file-reader.c:1011 -#: src/data/sys-file-reader.c:1015 tests/dissect-sysfile.c:626 -#: tests/dissect-sysfile.c:631 tests/dissect-sysfile.c:636 +#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 +#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "Bestand specificeert onverwachte waarde %g als %s." -#: src/data/sys-file-reader.c:1048 +#: src/data/sys-file-reader.c:1056 #, fuzzy, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1066 tests/dissect-sysfile.c:687 +#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, fuzzy, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1075 tests/dissect-sysfile.c:696 +#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, fuzzy, c-format msgid "" "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " "record" msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1081 +#: src/data/sys-file-reader.c:1089 #, fuzzy, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1110 +#: src/data/sys-file-reader.c:1118 #, fuzzy, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1121 +#: src/data/sys-file-reader.c:1129 #, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1134 +#: src/data/sys-file-reader.c:1142 #, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "MRSET %s bevat zowel tekenreeks als numerieke variabelen." -#: src/data/sys-file-reader.c:1149 +#: src/data/sys-file-reader.c:1157 #, fuzzy, c-format msgid "MRSET %s has only %zu variables." msgstr "MRSET %s bevat zowel tekenreeks als numerieke variabelen." -#: src/data/sys-file-reader.c:1186 tests/dissect-sysfile.c:754 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." msgstr "Onjuiste lengte %zu voor extensie 11." -#: src/data/sys-file-reader.c:1198 tests/dissect-sysfile.c:766 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "Extensie 11 heeft een foutief aantal %zu (voor %zu variabelen)." -#: src/data/sys-file-reader.c:1219 +#: src/data/sys-file-reader.c:1227 #, c-format msgid "" "Invalid variable display parameters for variable %zu (%s). Default " @@ -960,22 +955,22 @@ msgstr "" "Ongeldige variabelen-toon-parameters voor variabele %zu (%s). Verstek " "parameters ingevuld." -#: src/data/sys-file-reader.c:1263 +#: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "Lange variabele afbeelding van %s tot ongeldige naam '%s'." -#: src/data/sys-file-reader.c:1273 +#: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "Dubbele lange variabelennaam '%s' binnen systeembestand." -#: src/data/sys-file-reader.c:1326 +#: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." msgstr "" -#: src/data/sys-file-reader.c:1336 +#: src/data/sys-file-reader.c:1344 #, c-format msgid "" "%s listed in very long string record with width %s, which requires only one " @@ -984,12 +979,12 @@ msgstr "" "%s vermeld in erg lang tekenreeks-record met breedte %s, dat slechts een " "segment vereist." -#: src/data/sys-file-reader.c:1342 +#: src/data/sys-file-reader.c:1350 #, c-format msgid "Very long string %s overflows dictionary." msgstr "Erg lange-tekenreeks %s is te groot voor woordenboek." -#: src/data/sys-file-reader.c:1356 +#: src/data/sys-file-reader.c:1364 #, c-format msgid "" "Very long string with width %ld has segment %d of width %d (expected %d)" @@ -997,12 +992,12 @@ msgstr "" "Erg lange-tekenreeks met breedte %ld heeft segment %d van breedte %d " "(verwacht %d)" -#: src/data/sys-file-reader.c:1402 +#: src/data/sys-file-reader.c:1410 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Ongeldig aantal labels: %d. Labels worden genegeerd." -#: src/data/sys-file-reader.c:1433 tests/dissect-sysfile.c:464 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." @@ -1010,7 +1005,7 @@ msgstr "" "Variabele index record (type 4) volgt niet onmiddellijk waardelabel record " "(type 3) zoals het moet." -#: src/data/sys-file-reader.c:1440 +#: src/data/sys-file-reader.c:1448 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " @@ -1019,7 +1014,7 @@ msgstr "" "Aantal variabelen geassocieerd aan waardelabel (%d) is niet tussen 1 en het " "aantal variabelen (%zu)." -#: src/data/sys-file-reader.c:1451 +#: src/data/sys-file-reader.c:1459 #, c-format msgid "" "Value labels may not be added to long string variables (e.g. %s) using " @@ -1028,7 +1023,7 @@ msgstr "" "Waardelabels mogen niet toegevoegd aan lange tekenreeks-variabelen (bv %s) " "bij het gebruik van records types 3 en 4." -#: src/data/sys-file-reader.c:1460 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "" "Variables associated with value label are not all of identical type. " @@ -1037,125 +1032,125 @@ msgstr "" "Variabelen geassocieerd met waardelabel zijn niet allemaal van het identieke " "type. Variabele %s is %s, maar variabele %s is %s." -#: src/data/sys-file-reader.c:1494 +#: src/data/sys-file-reader.c:1502 #, c-format msgid "Duplicate value label for %g on %s." msgstr "Dubbel waardelabel voor %g in %s." -#: src/data/sys-file-reader.c:1497 src/data/sys-file-reader.c:1678 +#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "Dubbel waardelabel voor \"%.*s\" in %s." -#: src/data/sys-file-reader.c:1535 +#: src/data/sys-file-reader.c:1543 #, c-format msgid "Error parsing attribute value %s[%d]" msgstr "Fout tijdens ontleden attribuut waarde %s[%d]" -#: src/data/sys-file-reader.c:1549 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "Attribute value %s[%d] is not quoted: %s" msgstr "Attribuut waarde %s[%d] is niet geciteerd: %s" -#: src/data/sys-file-reader.c:1612 tests/dissect-sysfile.c:932 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format msgid "" "Variable name length in long string value label record (%d) exceeds %d-byte " "limit." msgstr "" -#: src/data/sys-file-reader.c:1622 +#: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." msgstr "Negeren lange tekenreeks waarde record voor onbekende variabele %s." -#: src/data/sys-file-reader.c:1629 +#: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." msgstr "Negeren lange tekenreeks waarde record voor numerieke variabele %s." -#: src/data/sys-file-reader.c:1636 +#: src/data/sys-file-reader.c:1644 #, c-format msgid "" "Ignoring long string value record for variable %s because the record's width " "(%d) does not match the variable's width (%d)" msgstr "" -#: src/data/sys-file-reader.c:1658 +#: src/data/sys-file-reader.c:1666 #, c-format msgid "" "Ignoring long string value %zu for variable %s, with width %d, that has bad " "value width %zu." msgstr "" -#: src/data/sys-file-reader.c:1773 +#: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." msgstr "Bestand eindigt in gedeeltelijke case." -#: src/data/sys-file-reader.c:1781 +#: src/data/sys-file-reader.c:1789 #, c-format msgid "Error reading case from file %s." msgstr "Fout tijdens lezen case van bestand %s." -#: src/data/sys-file-reader.c:1882 +#: src/data/sys-file-reader.c:1890 msgid "" "Possible compressed data corruption: compressed spaces appear in numeric " "field." msgstr "" -#: src/data/sys-file-reader.c:1935 +#: src/data/sys-file-reader.c:1943 #, c-format msgid "" "Possible compressed data corruption: string contains compressed integer " "(opcode %d)" msgstr "" -#: src/data/sys-file-reader.c:2027 +#: src/data/sys-file-reader.c:2035 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "Variabele index %d niet in geldig bereik 1...%d." -#: src/data/sys-file-reader.c:2032 +#: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "Variabele index %d verwijst naar lange-tekenreeks voortzetting." -#: src/data/sys-file-reader.c:2100 +#: src/data/sys-file-reader.c:2108 #, c-format msgid "Suppressed %d additional related warnings." msgstr "Onderdrukt %d extra gerelateerde waarschuwingen." -#: src/data/sys-file-reader.c:2141 +#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 #, fuzzy, c-format msgid "Dictionary record refers to unknown variable %s." msgstr "Variabele afbeelding refereert aan onbekende variabele %s." -#: src/data/sys-file-reader.c:2202 +#: src/data/sys-file-reader.c:2231 #, fuzzy, c-format msgid "Expecting digit at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:2209 +#: src/data/sys-file-reader.c:2238 #, fuzzy, c-format msgid "Expecting space at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:2216 +#: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." msgstr "" -#: src/data/sys-file-reader.c:2226 +#: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2318 tests/dissect-sysfile.c:1337 +#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format msgid "System error: %s." msgstr "Systeemfout: %s." -#: src/data/sys-file-reader.c:2320 tests/dissect-sysfile.c:1339 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 msgid "Unexpected end of file." msgstr "Onverwacht einde-bestand." @@ -1176,7 +1171,7 @@ msgid "An I/O error occurred writing system file \"%s\"." msgstr "" "Een I/O fout is opgetreden tijdens het schrijven van systeembestand \"%s\"." -#: src/data/variable.c:215 +#: src/data/variable.c:206 #, c-format msgid "" "Character `%c' (in %s) may not appear as the first character in a variable " @@ -1184,21 +1179,21 @@ msgid "" msgstr "" "Teken '%c' (in %s) mag niet als eerste teken in een variabelennaam voorkomen." -#: src/data/variable.c:227 +#: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "Teken '%c' (in %s) mag niet in een variabelennaam voorkomen." -#: src/data/variable.c:253 +#: src/data/variable.c:244 msgid "Variable name cannot be empty string." msgstr "Variabelennaam kan geen lege tekenreeks zijn." -#: src/data/variable.c:259 +#: src/data/variable.c:250 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "Variabelennaam %s overschrijdt de limiet van %d tekens." -#: src/data/variable.c:267 +#: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" @@ -2168,7 +2163,7 @@ msgid "IBM 390 Hex Long." msgstr "IBM 390 Hex Long." #: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:161 src/ui/gui/recode.ui:960 +#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "Variabelen:" @@ -2181,7 +2176,7 @@ msgid "Type:" msgstr "Type:" #: src/language/dictionary/sys-file-info.c:128 -#: src/ui/gui/psppire-data-window.c:629 +#: src/ui/gui/psppire-data-window.c:631 msgid "System File" msgstr "Systeembestand" @@ -2555,7 +2550,7 @@ msgstr "Doelvariabele %s dupliceert bestaande variabele %s." msgid "Variable %s is not dichotomous" msgstr "Variabele %s is niet dichotomisch " -#: src/language/stats/binomial.c:192 +#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "Binomiaal Test" @@ -2568,13 +2563,13 @@ msgid "Group2" msgstr "Groep2" #: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1188 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 #: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 #: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 #: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 #: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 #: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:306 src/language/stats/reliability.q:702 +#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 msgid "Total" msgstr "Totaal" @@ -2583,8 +2578,8 @@ msgstr "Totaal" msgid "Category" msgstr "Categorie" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:120 -#: src/language/stats/correlations.c:228 src/language/stats/npar-summary.c:122 +#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 #: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 #: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 #: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 @@ -2625,7 +2620,7 @@ msgid "Expected N" msgstr "Verwacht N" #: src/language/stats/chisquare.c:163 src/language/stats/chisquare.c:202 -#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:305 +#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:290 msgid "Residual" msgstr "Overblijvend" @@ -2645,7 +2640,7 @@ msgstr "Chi-Square" #: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 #: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 -#: src/language/stats/regression.q:299 src/language/stats/t-test.q:752 +#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "df" @@ -2654,13 +2649,13 @@ msgstr "df" msgid "Asymp. Sig." msgstr "" -#: src/language/stats/correlations.c:97 src/language/stats/factor.c:1431 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 #: src/language/stats/npar-summary.c:108 msgid "Descriptive Statistics" msgstr "Descriptieve Statistieken" -#: src/language/stats/correlations.c:118 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1452 src/language/stats/npar-summary.c:125 +#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 +#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 #: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 #: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 #: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 @@ -2669,7 +2664,7 @@ msgstr "Descriptieve Statistieken" msgid "Mean" msgstr "Gemiddelde " -#: src/language/stats/correlations.c:119 src/language/stats/factor.c:1453 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 #: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 #: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 @@ -2677,33 +2672,33 @@ msgstr "Gemiddelde " msgid "Std. Deviation" msgstr "Std. Deviatie" -#: src/language/stats/correlations.c:191 src/language/stats/factor.c:1331 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 msgid "Correlations" msgstr "Correlatie" -#: src/language/stats/correlations.c:217 +#: src/language/stats/correlations.c:216 msgid "Pearson Correlation" msgstr "Pearson Correlatie" -#: src/language/stats/correlations.c:219 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "" -#: src/language/stats/correlations.c:219 +#: src/language/stats/correlations.c:218 msgid "Sig. (1-tailed)" msgstr "" -#: src/language/stats/correlations.c:223 +#: src/language/stats/correlations.c:222 msgid "Cross-products" msgstr "" -#: src/language/stats/correlations.c:224 +#: src/language/stats/correlations.c:223 msgid "Covariance" msgstr "Covariantie" -#: src/language/stats/correlations.c:446 src/language/stats/descriptives.c:361 +#: src/language/stats/correlations.c:454 src/language/stats/descriptives.c:361 #: src/language/data-io/list.q:91 msgid "No variables specified." msgstr "Geen variabelen gespecificeerd." @@ -2833,47 +2828,39 @@ msgstr "')' verwacht." msgid "Variable %s specified twice in sort criteria." msgstr "Variabele %s 2 keer opgegeven in sorteer criteria." -#: src/language/stats/factor.c:558 +#: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." msgstr "Factor analyse op een enkele variabele is niet zinvol." -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 msgid "Component Number" msgstr "Component-nummer " -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 msgid "Factor Number" msgstr "Factor Nummer" -#: src/language/stats/factor.c:970 +#: src/language/stats/factor.c:1237 msgid "Communalities" msgstr "" -#: src/language/stats/factor.c:976 +#: src/language/stats/factor.c:1243 msgid "Initial" msgstr "Initieel " -#: src/language/stats/factor.c:979 +#: src/language/stats/factor.c:1246 msgid "Extraction" msgstr "" -#: src/language/stats/factor.c:1029 -msgid "Component Matrix" -msgstr "Component-Matrix" - -#: src/language/stats/factor.c:1031 -msgid "Factor Matrix" -msgstr "Factor-Matrix:" - -#: src/language/stats/factor.c:1039 src/language/stats/factor.c:1163 +#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 msgid "Component" msgstr "Component" -#: src/language/stats/factor.c:1044 src/language/stats/factor.c:1165 +#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 msgid "Factor" msgstr "Factor" -#: src/language/stats/factor.c:1076 src/language/stats/factor.c:1219 +#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: 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 @@ -2881,59 +2868,77 @@ msgstr "Factor" msgid "%d" msgstr "%d" -#: src/language/stats/factor.c:1138 +#: src/language/stats/factor.c:1412 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1170 +#: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1176 +#: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1182 +#: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1190 +#: src/language/stats/factor.c:1464 #, no-c-format msgid "% of Variance" msgstr "% van Variatie" -#: src/language/stats/factor.c:1191 +#: src/language/stats/factor.c:1465 msgid "Cumulative %" msgstr "Cumulatieve %" -#: src/language/stats/factor.c:1289 +#: src/language/stats/factor.c:1578 msgid "Correlation Matrix" msgstr "Correlatie-Matrix" -#: src/language/stats/factor.c:1343 +#: src/language/stats/factor.c:1632 msgid "Sig. 1-tailed" msgstr "" -#: src/language/stats/factor.c:1377 +#: src/language/stats/factor.c:1666 msgid "Determinant" msgstr "Determinant" -#: src/language/stats/factor.c:1454 +#: src/language/stats/factor.c:1743 msgid "Analysis N" msgstr "Analyses N" -#: src/language/stats/factor.c:1487 +#: src/language/stats/factor.c:1776 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1493 +#: src/language/stats/factor.c:1782 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" +#: src/language/stats/factor.c:1865 +msgid "Component Matrix" +msgstr "Component-Matrix" + +#: src/language/stats/factor.c:1865 +msgid "Factor Matrix" +msgstr "Factor-Matrix:" + +#: src/language/stats/factor.c:1871 +#, fuzzy +msgid "Rotated Component Matrix" +msgstr "Component-Matrix" + +#: src/language/stats/factor.c:1871 +#, fuzzy +msgid "Rotated Factor Matrix" +msgstr "Factor-Matrix:" + #: src/language/stats/flip.c:98 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." @@ -3024,7 +3029,7 @@ msgstr "" #: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 #: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:201 +#: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "Std. Fout" @@ -3917,7 +3922,7 @@ msgstr "" msgid "ascii: opening output file \"%s\"" msgstr "ascii: openen uitvoerbestand \"%s\"" -#: src/output/ascii.c:913 src/output/cairo.c:826 +#: src/output/ascii.c:913 src/output/cairo.c:784 #, c-format msgid "%s - Page %d" msgstr "%s - Pagina %d" @@ -4036,12 +4041,12 @@ msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/output/cairo.c:283 +#: src/output/cairo.c:295 #, c-format msgid "error opening output file \"%s\": %s" msgstr "fout tijdens openen uitvoerbestand \"%s\": %s" -#: src/output/cairo.c:301 +#: src/output/cairo.c:312 #, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " @@ -4050,7 +4055,7 @@ msgstr "" "De gedefinieerde pagina is niet breed om ten minste %d tekens in het verstek " "font te bevatten. In feite is er slechts plaats voor %d tekens." -#: src/output/cairo.c:311 +#: src/output/cairo.c:322 #, c-format msgid "" "The defined page is not long enough to hold margins and headers, plus least %" @@ -4060,17 +4065,17 @@ msgstr "" "tenminste %d regels van het verstek font te bevatten. In feite is er " "slechts plaats voor %d regels." -#: src/output/cairo.c:364 +#: src/output/cairo.c:376 #, c-format msgid "error drawing output for %s driver: %s" msgstr "fout tijdens tekenen uitvoer voor %s driver: %s " -#: src/output/cairo.c:906 +#: src/output/cairo.c:864 #, c-format msgid "\"%s\": bad font specification" msgstr "\"%s\": slechte fontspecificatie" -#: src/output/cairo.c:1116 +#: src/output/cairo.c:1084 #, c-format msgid "error writing output file \"%s\": %s" msgstr "fout tijdens schrijven uitvoerbestand \"%s\": %s" @@ -4275,7 +4280,7 @@ msgstr "Standaardfout" msgid "Bad regular expression: %s" msgstr "Onjuiste regulaire expressie: %s" -#: src/ui/gui/factor-dialog.c:230 +#: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" msgstr "" @@ -4301,7 +4306,7 @@ msgstr "" msgid "Median" msgstr "Mediaan" -#: src/ui/gui/helper.c:196 +#: src/ui/gui/helper.c:197 msgid "Sorry. The help system hasn't yet been implemented." msgstr "Sorry. Het help systeem is nog niet geïmplementeerd." @@ -4365,106 +4370,106 @@ msgstr "Variabelenweergave" msgid "var" msgstr "var" -#: src/ui/gui/psppire-data-window.c:210 +#: src/ui/gui/psppire-data-window.c:212 msgid "Transformations Pending" msgstr "Transformaties uitstaand" -#: src/ui/gui/psppire-data-window.c:226 +#: src/ui/gui/psppire-data-window.c:228 msgid "Filter off" msgstr "Filter uit" -#: src/ui/gui/psppire-data-window.c:240 +#: src/ui/gui/psppire-data-window.c:242 #, c-format msgid "Filter by %s" msgstr "Filter op %s" -#: src/ui/gui/psppire-data-window.c:261 +#: src/ui/gui/psppire-data-window.c:263 msgid "No Split" msgstr "Geen splits" -#: src/ui/gui/psppire-data-window.c:270 +#: src/ui/gui/psppire-data-window.c:272 msgid "Split by " msgstr "Splits op " -#: src/ui/gui/psppire-data-window.c:298 +#: src/ui/gui/psppire-data-window.c:300 msgid "Weights off" msgstr "Weging uit" -#: src/ui/gui/psppire-data-window.c:312 +#: src/ui/gui/psppire-data-window.c:314 #, c-format msgid "Weight by %s" msgstr "Weeg op %s" -#: src/ui/gui/psppire-data-window.c:380 +#: src/ui/gui/psppire-data-window.c:382 msgid "Open" msgstr "Open" -#: src/ui/gui/psppire-data-window.c:390 +#: src/ui/gui/psppire-data-window.c:392 msgid "Data and Syntax Files" msgstr "Gegevens- en Syntax-bestanden" -#: src/ui/gui/psppire-data-window.c:400 src/ui/gui/psppire-data-window.c:609 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 msgid "System Files (*.sav)" msgstr "Systeembestanden (*.sav)" -#: src/ui/gui/psppire-data-window.c:406 src/ui/gui/psppire-data-window.c:615 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 msgid "Portable Files (*.por) " msgstr "Overdraagbaar (Portable) bestanden (*.por)" -#: src/ui/gui/psppire-data-window.c:412 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 msgid "Syntax Files (*.sps) " msgstr "Syntaxbestanden (*.sps)" -#: src/ui/gui/psppire-data-window.c:418 src/ui/gui/psppire-data-window.c:621 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Alle bestanden" -#: src/ui/gui/psppire-data-window.c:601 +#: src/ui/gui/psppire-data-window.c:603 msgid "Save" msgstr "Opslaan" -#: src/ui/gui/psppire-data-window.c:634 +#: src/ui/gui/psppire-data-window.c:636 msgid "Portable File" msgstr "Overdraagbaar bestand" -#: src/ui/gui/psppire-data-window.c:771 +#: src/ui/gui/psppire-data-window.c:773 msgid "Font Selection" msgstr "Font selectie" -#: src/ui/gui/psppire-data-window.c:1255 +#: src/ui/gui/psppire-data-window.c:1261 msgid "Data Editor" msgstr "Gegevensbewerker" -#: src/ui/gui/psppire-output-window.c:441 +#: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" msgstr "Exporteer Uitvoer" -#: src/ui/gui/psppire-output-window.c:449 +#: src/ui/gui/psppire-output-window.c:466 msgid "PDF Files (*.pdf)" msgstr "PDF-bestanden (*.pdf)" -#: src/ui/gui/psppire-output-window.c:450 +#: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" msgstr "HTML-bestanden (*.html)" -#: src/ui/gui/psppire-output-window.c:451 +#: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" msgstr "OpenDocument-bestanden (*.odt)" -#: src/ui/gui/psppire-output-window.c:452 +#: src/ui/gui/psppire-output-window.c:469 msgid "Text Files (*.txt)" msgstr "Textbestanden (*.txt)" -#: src/ui/gui/psppire-output-window.c:453 +#: src/ui/gui/psppire-output-window.c:470 msgid "PostScript Files (*.ps)" msgstr "PostScript-bestanden (*.ps)" -#: src/ui/gui/psppire-output-window.c:454 +#: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" msgstr "Komma-Gescheiden-Waarde-bestanden (*.csv)" -#: src/ui/gui/psppire-output-window.c:584 +#: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" msgstr "Uitvoer Viewer" @@ -4593,7 +4598,7 @@ msgstr "Hercodeer in Zelfde Variabelen: Oude en Nieuwe Waardes " msgid "Coeff" msgstr "Coeff" -#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:158 +#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:155 msgid "R" msgstr "R" @@ -4753,27 +4758,27 @@ msgstr "Weeg cases niet" msgid "Weight cases by %s" msgstr "Weeg cases per %s" -#: tests/dissect-sysfile.c:567 +#: tests/dissect-sysfile.c:571 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Niet-herkend recordtype 7, subtype %d." -#: tests/dissect-sysfile.c:846 +#: tests/dissect-sysfile.c:850 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "%s: Fout bij het ontleden van attribuut waarde %s[%d]" -#: tests/dissect-sysfile.c:852 +#: tests/dissect-sysfile.c:856 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: Attribuut waarde %s[%d] is niet geciteerd: %s" -#: tests/dissect-sysfile.c:876 +#: tests/dissect-sysfile.c:880 #, fuzzy, c-format msgid "Bad size %zu for extended number of cases." msgstr "Onjuiste lengte %zu voor extensie 11." -#: tests/dissect-sysfile.c:882 +#: tests/dissect-sysfile.c:886 #, fuzzy, c-format msgid "Bad count %zu for extended number of cases." msgstr "Onjuiste lengte %zu voor extensie 11." @@ -5244,14 +5249,10 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:245 +#: src/language/stats/glm.q:248 msgid "Multivariate GLM not yet supported" msgstr "Mutivariante GLM wordt nog niet ondersteund" -#: src/language/stats/glm.q:355 src/language/stats/regression.q:998 -msgid "No valid data found. This command was skipped." -msgstr "Geen geldige gegevens gevonden. Deze opdracht is overgeslagen." - #: src/language/stats/means.q:100 msgid "Missing required subcommand TABLES." msgstr "Mis vereiste subopdracht TABLES." @@ -5260,18 +5261,18 @@ msgstr "Mis vereiste subopdracht TABLES." msgid "TABLES subcommand may not appear more than once." msgstr "TABLES-subopdracht mag niet meer dan 1 keer voorkomen." -#: src/language/stats/npar.q:110 +#: src/language/stats/npar.q:111 msgid "NPAR subcommand not currently implemented." msgstr "" -#: src/language/stats/npar.q:254 +#: src/language/stats/npar.q:256 #, c-format msgid "" "The specified value of HI (%d) is lower than the specified value of LO (%d)" msgstr "" "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)" -#: src/language/stats/npar.q:309 +#: src/language/stats/npar.q:311 #, c-format msgid "" "%d expected values were given, but the specified range (%d-%d) requires " @@ -5280,7 +5281,7 @@ msgstr "" "%d verwachte waardes waren opgegeven, maar het opgegeven bereik (%d-%d) " "vereist precies %d waardes." -#: src/language/stats/npar.q:444 src/language/stats/t-test.q:380 +#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%zu) did " @@ -5303,21 +5304,21 @@ msgstr "" msgid "`%s' is not a variable name" msgstr "'%s' is geen variabelennaam" -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:298 +#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 msgid "Sum of Squares" msgstr "" -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:300 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 msgid "Mean Square" msgstr "" -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 +#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 #: src/language/stats/t-test.q:749 msgid "F" msgstr "F" #: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:204 src/language/stats/regression.q:302 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 msgid "Significance" msgstr "Significantie " @@ -5329,7 +5330,7 @@ msgstr "Tussen groepen" msgid "Within Groups" msgstr "Binnen groepen" -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:327 +#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 msgid "ANOVA" msgstr "ANOVA" @@ -5365,7 +5366,7 @@ msgstr "Contrasttesten" msgid "Value of Contrast" msgstr "" -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:203 +#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 #: src/language/stats/t-test.q:1009 msgid "t" @@ -5434,64 +5435,68 @@ msgstr "Variabele %s bestaat al." msgid "Too many variables in INTO clause." msgstr "Te veel variabelen in INTO clausule." -#: src/language/stats/regression.q:159 +#: src/language/stats/regression.q:156 msgid "R Square" msgstr "R Square" -#: src/language/stats/regression.q:160 +#: src/language/stats/regression.q:157 msgid "Adjusted R Square" msgstr "" -#: src/language/stats/regression.q:161 +#: src/language/stats/regression.q:158 msgid "Std. Error of the Estimate" msgstr "" -#: src/language/stats/regression.q:166 +#: src/language/stats/regression.q:163 msgid "Model Summary" msgstr "" -#: src/language/stats/regression.q:200 +#: src/language/stats/regression.q:197 msgid "B" msgstr "B" -#: src/language/stats/regression.q:202 +#: src/language/stats/regression.q:199 msgid "Beta" msgstr "Beta" -#: src/language/stats/regression.q:205 +#: src/language/stats/regression.q:202 msgid "(Constant)" msgstr "(Constante)" -#: src/language/stats/regression.q:269 +#: src/language/stats/regression.q:254 msgid "Coefficients" msgstr "Coëfficiënten" -#: src/language/stats/regression.q:304 src/ui/gui/regression.ui:7 +#: src/language/stats/regression.q:289 src/ui/gui/regression.ui:7 msgid "Regression" msgstr "Regressie" -#: src/language/stats/regression.q:385 +#: src/language/stats/regression.q:370 msgid "Model" msgstr "Model" -#: src/language/stats/regression.q:386 +#: src/language/stats/regression.q:371 msgid "Covariances" msgstr "Covarianties" -#: src/language/stats/regression.q:401 +#: src/language/stats/regression.q:386 msgid "Coefficient Correlations" msgstr "Coëfficiëntcorrelaties" -#: src/language/stats/regression.q:808 +#: src/language/stats/regression.q:793 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 "" -#: src/language/stats/regression.q:900 -msgid "Dependent variable must be numeric." -msgstr "Afhankelijke variabele moet numeriek zijn." +#: src/language/stats/regression.q:891 +msgid "REGRESSION requires numeric variables." +msgstr "" + +#: src/language/stats/regression.q:962 +msgid "No valid data found. This command was skipped." +msgstr "Geen geldige gegevens gevonden. Deze opdracht is overgeslagen." #: src/language/stats/reliability.q:421 msgid "Reliability Statistics" @@ -5758,6 +5763,27 @@ msgstr "" msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "De stap waarde %ld is kleiner dan 1. De waarde is op 1 gezet." +#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 +#, fuzzy +msgid "_Test Variable List:" +msgstr "Testvariabele:" + +#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 +msgid "_Get from data" +msgstr "" + +#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 +msgid "_Cut point:" +msgstr "_Knippunt:" + +#: src/ui/gui/binomial.ui:178 +msgid "Define Dichotomy" +msgstr "" + +#: src/ui/gui/binomial.ui:197 +msgid "Test _Proportion:" +msgstr "" + #: src/ui/gui/correlation.ui:7 msgid "Bivariate Correlations" msgstr "Bivariate Correlaties" @@ -5860,6 +5886,45 @@ msgstr "Kruistabel: Satistieken" msgid "Statistics" msgstr "Statistieken" +#: src/ui/gui/chi-square.ui:13 +#, fuzzy +msgid "Chi-Square Test" +msgstr "Chi-square tests." + +#: src/ui/gui/chi-square.ui:140 +#, fuzzy +msgid "Use _specified range" +msgstr "_Gebruik gespecificeerde waardes:" + +#: src/ui/gui/chi-square.ui:162 +#, fuzzy +msgid "_Lower:" +msgstr "Lager" + +#: src/ui/gui/chi-square.ui:170 +#, fuzzy +msgid "_Upper:" +msgstr "Hoger" + +#: src/ui/gui/chi-square.ui:214 +#, fuzzy +msgid "Expected Range:" +msgstr "Verwacht N" + +#: src/ui/gui/chi-square.ui:240 +msgid "All categor_ies equal" +msgstr "" + +#: src/ui/gui/chi-square.ui:257 +#, fuzzy +msgid "_Values" +msgstr "Waardes" + +#: src/ui/gui/chi-square.ui:301 +#, fuzzy +msgid "Expected Values:" +msgstr "Extreme Waardes" + #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" msgstr "Statistieken:" @@ -5935,57 +6000,97 @@ msgid "Factor Analysis" msgstr "Factoranalyse" #: src/ui/gui/factor.ui:47 -msgid "Descriptives..." +#, fuzzy +msgid "_Descriptives..." msgstr "Descriptieven..." #: src/ui/gui/factor.ui:60 -msgid "Extraction..." +#, fuzzy +msgid "_Extraction..." msgstr "Extractie..." -#: src/ui/gui/factor.ui:180 +#: src/ui/gui/factor.ui:74 +#, fuzzy +msgid "_Rotations..." +msgstr "Opties..." + +#: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:204 +#: src/ui/gui/factor.ui:216 msgid "Method: " msgstr "Methode:" -#: src/ui/gui/factor.ui:254 +#: src/ui/gui/factor.ui:266 msgid "Correlation matrix" msgstr "Correlatie-matrix" -#: src/ui/gui/factor.ui:268 +#: src/ui/gui/factor.ui:280 msgid "Covariance matrix" msgstr "Covariantie-matrix" -#: src/ui/gui/factor.ui:288 +#: src/ui/gui/factor.ui:300 msgid "Analyse" msgstr "Analyseer" -#: src/ui/gui/factor.ui:312 +#: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:326 +#: src/ui/gui/factor.ui:338 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:345 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 msgid "Display" msgstr "Scherm" -#: src/ui/gui/factor.ui:418 +#: src/ui/gui/factor.ui:430 msgid "Number of factors:" msgstr "Aantal van factoren:" -#: src/ui/gui/factor.ui:448 +#: src/ui/gui/factor.ui:460 msgid "Extract" msgstr "" -#: src/ui/gui/factor.ui:463 +#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" msgstr "" +#: src/ui/gui/factor.ui:538 +#, fuzzy +msgid "Factor Analysis: Rotation" +msgstr "Factoranalyse" + +#: src/ui/gui/factor.ui:571 +#, fuzzy +msgid "_None" +msgstr "Geen" + +#: src/ui/gui/factor.ui:582 +#, fuzzy +msgid "_Varimax" +msgstr "_Variabelen" + +#: src/ui/gui/factor.ui:598 +msgid "_Quartimax" +msgstr "" + +#: src/ui/gui/factor.ui:614 +msgid "_Equimax" +msgstr "" + +#: src/ui/gui/factor.ui:637 +#, fuzzy +msgid "Method" +msgstr "Methode:" + +#: src/ui/gui/factor.ui:648 +#, fuzzy +msgid "_Display rotated solution" +msgstr "Gegevensbestand_informatie tonen" + #: src/ui/gui/find.ui:8 msgid "Find Case" msgstr "Vind case" @@ -6665,10 +6770,6 @@ msgstr "Groep_2 waarde:" msgid "Group_1 value:" msgstr "Groep_1 waarde:" -#: src/ui/gui/t-test.ui:333 -msgid "_Cut point:" -msgstr "_Knippunt:" - #: src/ui/gui/t-test.ui:365 msgid "_Use specified values:" msgstr "_Gebruik gespecificeerde waardes:" @@ -6953,7 +7054,7 @@ msgid "Recently Used _Files" msgstr "Recent gebruikte _bestanden" # Standaard snelleter voor Bewerken is de w. -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:21 +#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 #: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "Be_werken" @@ -7171,12 +7272,12 @@ msgstr "Spring naar variabele" msgid "Data File _Comments" msgstr "Gegevensbestand _commentaren" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:33 +#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 #: src/ui/gui/syntax-editor.ui:131 msgid "_Windows" msgstr "_Vensters" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:39 +#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 #: src/ui/gui/syntax-editor.ui:137 msgid "_Minimize All Windows" msgstr "_Minimaliseer alle vensters" @@ -7209,7 +7310,7 @@ msgstr "Weging statusgebied" msgid "Split File Status Area" msgstr "Splitsbestand statusgebied" -#: src/ui/gui/output-viewer.ui:15 +#: src/ui/gui/output-viewer.ui:22 msgid "_Export" msgstr "_Exporteer" @@ -7233,6 +7334,12 @@ msgstr "Huidige regel" msgid "To End" msgstr "Naar einde" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "Afhankelijke variabele moet numeriek zijn." + +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variabele %s heeft label van ongeldige lengte %zu." + #, fuzzy #~ msgid "Duplicate variable name %s among target variables." #~ msgstr "Dubbele variabelennaam '%s' binnen systeembestand." diff --git a/po/pt_BR.po b/po/pt_BR.po index 7dbfec5e..513c2e3b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: pspp-0.6.2-pre4\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-09 21:32+0200\n" +"POT-Creation-Date: 2010-05-21 12:02+0200\n" "PO-Revision-Date: 2009-09-10 01:15-0300\n" "Last-Translator: Michel Almada de Castro Boaventura \n" "Language-Team: Brazilian Portuguese \n" @@ -247,7 +247,7 @@ msgstr "system" msgid "scratch" msgstr "rascunho" -#: src/data/dictionary.c:981 +#: src/data/dictionary.c:980 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." @@ -256,7 +256,7 @@ msgstr "" "user-missing, system-missing, zero ou negativo. Este(s) caso(s) foi(foram) " "ignorado(s)." -#: src/data/dictionary.c:1284 +#: src/data/dictionary.c:1283 #, c-format msgid "Truncating document line to %d bytes." msgstr "Linha do documento truncada para %d bytes." @@ -343,20 +343,20 @@ msgstr[1] "" msgid "%s variables are not compatible with %s format %s." msgstr "%s variáveis não são compatíveis com %s formato %s." -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "String" -#: src/data/format.c:327 src/data/sys-file-reader.c:744 +#: src/data/format.c:327 src/data/sys-file-reader.c:752 #: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "Numérico" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -364,8 +364,8 @@ msgstr "Numérico" msgid "numeric" msgstr "numérico" -#: src/data/format.c:328 src/data/sys-file-reader.c:1464 -#: src/data/sys-file-reader.c:1466 src/language/xforms/recode.c:493 +#: src/data/format.c:328 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 #: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 #: src/language/xforms/recode.c:507 #: src/language/dictionary/apply-dictionary.c:78 @@ -570,7 +570,7 @@ msgstr "Comprimento %d de variável inválido." msgid "Invalid variable name `%s' in position %d." msgstr "Nome de variável '%s' inválido na posição %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:602 +#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 #, c-format msgid "Bad width %d for variable %s." msgstr "Comprimento %d incorreto para variável %s." @@ -690,125 +690,120 @@ msgstr "" msgid "Variable suffix too large." msgstr "Sufixo de variável muito grande." -#: src/data/sys-file-reader.c:222 +#: src/data/sys-file-reader.c:226 #, fuzzy, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "Nome de variável '%s' duplicado dentro do arquivo de sistema." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:286 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 msgid "system file" msgstr "arquivo de sistema" -#: src/data/sys-file-reader.c:293 +#: src/data/sys-file-reader.c:297 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "Erro ao abrir \"%s\" para leitura como arquivo de sistema: %s." -#: src/data/sys-file-reader.c:332 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 msgid "Misplaced type 4 record." msgstr "Registro de tipo 4 fora do lugar." -#: src/data/sys-file-reader.c:343 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 #, c-format msgid "Unrecognized record type %d." msgstr "Registro de tipo %d não reconhecido." -#: src/data/sys-file-reader.c:384 +#: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" "Cabeçalho do arquivo requer %d posições de variáveis, mas %d foram lidas do " "arquivo." -#: src/data/sys-file-reader.c:424 +#: src/data/sys-file-reader.c:428 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "Erro ao fechar arquivo de sistema \"%s\": %s." -#: src/data/sys-file-reader.c:489 src/data/sys-file-reader.c:499 +#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 #: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 msgid "This is not an SPSS system file." msgstr "Este não é um arquivo de sistema do SPSS." -#: src/data/sys-file-reader.c:521 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." msgstr "" -#: src/data/sys-file-reader.c:598 +#: src/data/sys-file-reader.c:602 #, c-format msgid "Invalid variable name `%s'." msgstr "Nome de variável '%s' inválido." -#: src/data/sys-file-reader.c:606 +#: src/data/sys-file-reader.c:610 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "Nome de variável '%s' duplicado dentro do arquivo de sistema." -#: src/data/sys-file-reader.c:614 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 msgid "Variable label indicator field is not 0 or 1." msgstr "Campo indicador de rótulo de variável não é 0 ou 1." -#: src/data/sys-file-reader.c:622 tests/dissect-sysfile.c:365 -#, c-format -msgid "Variable %s has label of invalid length %zu." -msgstr "Variável %s tem um rótulo de tamanho inválido %zu." - -#: src/data/sys-file-reader.c:641 tests/dissect-sysfile.c:383 +#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "Campo de indicador de missing numérico não é -3, -3, 0, 1, 2 ou 3." -#: src/data/sys-file-reader.c:659 tests/dissect-sysfile.c:398 +#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "Campo de indicação de valores ausentes de string não é 0, 1, 2 ou 3." -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:699 msgid "Missing string continuation record." msgstr "Faltando registro de continuação de string." -#: src/data/sys-file-reader.c:725 +#: src/data/sys-file-reader.c:733 #, c-format msgid "Unknown variable format %." msgstr "Variável de formato % desconhecida." -#: src/data/sys-file-reader.c:743 +#: src/data/sys-file-reader.c:751 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "%s variável %s tem um inválido %s formato %s." -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "print" msgstr "imprimir" -#: src/data/sys-file-reader.c:746 +#: src/data/sys-file-reader.c:754 msgid "write" msgstr "escrever" -#: src/data/sys-file-reader.c:750 +#: src/data/sys-file-reader.c:758 msgid "Suppressing further invalid format warnings." msgstr "Ocultando avisos de formato inválido subsequentes." -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:776 msgid "Weighting variable must be numeric." msgstr "Variável de ponderação deve ser numérica." -#: src/data/sys-file-reader.c:782 +#: src/data/sys-file-reader.c:790 msgid "Multiple type 6 (document) records." msgstr "Múltiplos registros de tipo 6 (documento)." -#: src/data/sys-file-reader.c:786 +#: src/data/sys-file-reader.c:794 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "Número de linhas do documento (%d) precisa ser maior que 0." -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:802 msgid "Document line contains null byte." msgstr "Linha do documento contém byte nulo." -#: src/data/sys-file-reader.c:885 +#: src/data/sys-file-reader.c:893 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " @@ -817,13 +812,13 @@ msgstr "" "Registro de tipo 7 e subtipo %d não reconhecido. Por favor, envie uma cópia " "deste arquivo bem como da sintaxe que o criou para %s" -#: src/data/sys-file-reader.c:912 tests/dissect-sysfile.c:590 +#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "" "Tamanho (%zu) ou quantidade (%zu) inválidos de registro tipo 7, subtipo 3." -#: src/data/sys-file-reader.c:932 +#: src/data/sys-file-reader.c:940 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " @@ -832,17 +827,17 @@ msgstr "" "Representação de ponto flutuante indicado pelo arquivo de sistema (%d) " "difere do esperado (%d)." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 #, fuzzy msgid "Little Endian" msgstr "Little Endian." -#: src/data/sys-file-reader.c:945 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 #, fuzzy msgid "Big Endian" msgstr "Big Endian." -#: src/data/sys-file-reader.c:946 +#: src/data/sys-file-reader.c:954 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." @@ -850,71 +845,71 @@ msgstr "" "Formato inteiro indicado pelo arquivo de sistema (%s) difere do esperado (%" "s)." -#: src/data/sys-file-reader.c:1003 tests/dissect-sysfile.c:621 +#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "Tamanho (%zu) ou quantidade (%zu) da extensão 4 inválido." -#: src/data/sys-file-reader.c:1007 src/data/sys-file-reader.c:1011 -#: src/data/sys-file-reader.c:1015 tests/dissect-sysfile.c:626 -#: tests/dissect-sysfile.c:631 tests/dissect-sysfile.c:636 +#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 +#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 #, fuzzy, c-format msgid "File specifies unexpected value %g as %s." msgstr "Arquivo especifica valor inesperado %g como SYSMIS." -#: src/data/sys-file-reader.c:1048 +#: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1066 tests/dissect-sysfile.c:687 +#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1075 tests/dissect-sysfile.c:696 +#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format msgid "" "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " "record" msgstr "" -#: src/data/sys-file-reader.c:1081 +#: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1110 +#: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1121 +#: src/data/sys-file-reader.c:1129 #, fuzzy, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "Nome de variável %s duplicado na posição %d." -#: src/data/sys-file-reader.c:1134 +#: src/data/sys-file-reader.c:1142 #, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "" -#: src/data/sys-file-reader.c:1149 +#: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." msgstr "" -#: src/data/sys-file-reader.c:1186 tests/dissect-sysfile.c:754 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." msgstr "Tamanho %zu inválido da extensão 11." -#: src/data/sys-file-reader.c:1198 tests/dissect-sysfile.c:766 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "Extensão 11 tem uma quantidade inválida %zu (para %zu variáveis)." -#: src/data/sys-file-reader.c:1219 +#: src/data/sys-file-reader.c:1227 #, c-format msgid "" "Invalid variable display parameters for variable %zu (%s). Default " @@ -923,24 +918,24 @@ msgstr "" "Parâmetro de exibição de variáveis inválido para a variável %zu (%s). " "Parâmetros substituídos pelo padrão." -#: src/data/sys-file-reader.c:1263 +#: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "Variável longa mapeando de %s para um nome de variável inválido '%s'." -#: src/data/sys-file-reader.c:1273 +#: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "Nome longo de variável '%s' duplicado dentro do arquivo de sistema." -#: src/data/sys-file-reader.c:1326 +#: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." msgstr "" "%s listada como string de tamanho inválido %s em um registro de string muito " "longo." -#: src/data/sys-file-reader.c:1336 +#: src/data/sys-file-reader.c:1344 #, c-format msgid "" "%s listed in very long string record with width %s, which requires only one " @@ -949,24 +944,24 @@ msgstr "" "%s listado em registro de string muito longa com comprimento %s, o que " "requer apenas um segmento." -#: src/data/sys-file-reader.c:1342 +#: src/data/sys-file-reader.c:1350 #, c-format msgid "Very long string %s overflows dictionary." msgstr "String muito longa %s estoura dicionário." -#: src/data/sys-file-reader.c:1356 +#: src/data/sys-file-reader.c:1364 #, c-format msgid "" "Very long string with width %ld has segment %d of width %d (expected %d)" msgstr "" "String muito longa de tamanho %ld tem segmento %d de tamanho %d (esperado %d)" -#: src/data/sys-file-reader.c:1402 +#: src/data/sys-file-reader.c:1410 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Número de rótulos inválido: %d. Ignorando rótulos." -#: src/data/sys-file-reader.c:1433 tests/dissect-sysfile.c:464 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." @@ -974,7 +969,7 @@ msgstr "" "Índice do registro da variável (tipo 4) não foi seguido imediatamente por um " "registro de rótulo de valores (tipo 3) como deveria." -#: src/data/sys-file-reader.c:1440 +#: src/data/sys-file-reader.c:1448 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " @@ -983,14 +978,14 @@ msgstr "" "Número de variáveis associadas com um rótulo de valores (%d) não está entre " "1 e o número de variáveis (%zu)." -#: src/data/sys-file-reader.c:1451 +#: src/data/sys-file-reader.c:1459 #, fuzzy, c-format msgid "" "Value labels may not be added to long string variables (e.g. %s) using " "records types 3 and 4." msgstr "Rótulos de valores não são permitidos em variáveis string longas (%s)." -#: src/data/sys-file-reader.c:1460 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "" "Variables associated with value label are not all of identical type. " @@ -999,125 +994,125 @@ msgstr "" "Variáveis associadas com rótulo de valores não são todas do mesmo tipo. " "Variável %s é %s, mas variável %s é %s." -#: src/data/sys-file-reader.c:1494 +#: src/data/sys-file-reader.c:1502 #, c-format msgid "Duplicate value label for %g on %s." msgstr "Rótulo de valores duplicados para %g em %s." -#: src/data/sys-file-reader.c:1497 src/data/sys-file-reader.c:1678 +#: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "Rótulo de valores duplicados para \"%.*s\" em %s." -#: src/data/sys-file-reader.c:1535 +#: src/data/sys-file-reader.c:1543 #, c-format msgid "Error parsing attribute value %s[%d]" msgstr "" -#: src/data/sys-file-reader.c:1549 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "Attribute value %s[%d] is not quoted: %s" msgstr "" -#: src/data/sys-file-reader.c:1612 tests/dissect-sysfile.c:932 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format msgid "" "Variable name length in long string value label record (%d) exceeds %d-byte " "limit." msgstr "" -#: src/data/sys-file-reader.c:1622 +#: src/data/sys-file-reader.c:1630 #, fuzzy, c-format msgid "Ignoring long string value record for unknown variable %s." msgstr "Mapeamento de variável se refere a uma variável desconhecida %s." -#: src/data/sys-file-reader.c:1629 +#: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." msgstr "" -#: src/data/sys-file-reader.c:1636 +#: src/data/sys-file-reader.c:1644 #, c-format msgid "" "Ignoring long string value record for variable %s because the record's width " "(%d) does not match the variable's width (%d)" msgstr "" -#: src/data/sys-file-reader.c:1658 +#: src/data/sys-file-reader.c:1666 #, c-format msgid "" "Ignoring long string value %zu for variable %s, with width %d, that has bad " "value width %zu." msgstr "" -#: src/data/sys-file-reader.c:1773 +#: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." msgstr "Arquivo termina em um caso parcial." -#: src/data/sys-file-reader.c:1781 +#: src/data/sys-file-reader.c:1789 #, c-format msgid "Error reading case from file %s." msgstr "Erro lendo caso do arquivo %s." -#: src/data/sys-file-reader.c:1882 +#: src/data/sys-file-reader.c:1890 msgid "" "Possible compressed data corruption: compressed spaces appear in numeric " "field." msgstr "" -#: src/data/sys-file-reader.c:1935 +#: src/data/sys-file-reader.c:1943 #, c-format msgid "" "Possible compressed data corruption: string contains compressed integer " "(opcode %d)" msgstr "" -#: src/data/sys-file-reader.c:2027 +#: src/data/sys-file-reader.c:2035 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "Índice de variável %d não está no intervalo válido de 1...%d." -#: src/data/sys-file-reader.c:2032 +#: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "Variável de índice %d se refere a uma continuação de uma string longa." -#: src/data/sys-file-reader.c:2100 +#: src/data/sys-file-reader.c:2108 #, fuzzy, c-format msgid "Suppressed %d additional related warnings." msgstr "Ocultados %d avisos adicionais de mapeamento de variável." -#: src/data/sys-file-reader.c:2141 +#: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 #, fuzzy, c-format msgid "Dictionary record refers to unknown variable %s." msgstr "Mapeamento de variável se refere a uma variável desconhecida %s." -#: src/data/sys-file-reader.c:2202 +#: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2209 +#: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:2216 +#: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." msgstr "" -#: src/data/sys-file-reader.c:2226 +#: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2318 tests/dissect-sysfile.c:1337 +#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format msgid "System error: %s." msgstr "Erro de sistema: %s." -#: src/data/sys-file-reader.c:2320 tests/dissect-sysfile.c:1339 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 msgid "Unexpected end of file." msgstr "Fim de arquivo inesperado." @@ -1137,7 +1132,7 @@ msgstr "Erro ao abrir \"%s\" para gravação como arquivo de sistema: %s." msgid "An I/O error occurred writing system file \"%s\"." msgstr "Um erro de E/S ocorreu ao gravar arquivo de sistema \"%s\"." -#: src/data/variable.c:215 +#: src/data/variable.c:206 #, c-format msgid "" "Character `%c' (in %s) may not appear as the first character in a variable " @@ -1146,21 +1141,21 @@ msgstr "" "Caractere '%c' (em %s) não pode aparecer como o primeiro caractere no nome " "de uma variável." -#: src/data/variable.c:227 +#: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." msgstr "Caractere '%c' (em %s) não pode aparecer em um nome de variável." -#: src/data/variable.c:253 +#: src/data/variable.c:244 msgid "Variable name cannot be empty string." msgstr "Nome de variável não pode ser uma string vazia." -#: src/data/variable.c:259 +#: src/data/variable.c:250 #, c-format msgid "Variable name %s exceeds %d-character limit." msgstr "Nome de variável %s excede o limite de %d caracteres." -#: src/data/variable.c:267 +#: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" @@ -2098,7 +2093,7 @@ msgid "IBM 390 Hex Long." msgstr "IBM 390 Hex Long." #: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:161 src/ui/gui/recode.ui:960 +#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "Variáveis:" @@ -2479,7 +2474,7 @@ msgstr "Variável de destino %s duplica variável existente %s." msgid "Variable %s is not dichotomous" msgstr "Variável %s não é dicotômica" -#: src/language/stats/binomial.c:192 +#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "Teste Binomial" @@ -2492,13 +2487,13 @@ msgid "Group2" msgstr "Grupo 2" #: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1188 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 #: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 #: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 #: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 #: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 #: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:306 src/language/stats/reliability.q:702 +#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 msgid "Total" msgstr "Total" @@ -2507,8 +2502,8 @@ msgstr "Total" msgid "Category" msgstr "Categoria" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:120 -#: src/language/stats/correlations.c:228 src/language/stats/npar-summary.c:122 +#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 #: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 #: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 #: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 @@ -2547,7 +2542,7 @@ msgid "Expected N" msgstr "N esperado" #: src/language/stats/chisquare.c:163 src/language/stats/chisquare.c:202 -#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:305 +#: src/ui/gui/crosstabs-dialog.c:62 src/language/stats/regression.q:290 msgid "Residual" msgstr "Resíduo" @@ -2567,7 +2562,7 @@ msgstr "Chi-quadrado" #: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 #: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 -#: src/language/stats/regression.q:299 src/language/stats/t-test.q:752 +#: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "df" @@ -2576,13 +2571,13 @@ msgstr "df" msgid "Asymp. Sig." msgstr "Asymp. Sig." -#: src/language/stats/correlations.c:97 src/language/stats/factor.c:1431 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 #: src/language/stats/npar-summary.c:108 msgid "Descriptive Statistics" msgstr "" -#: src/language/stats/correlations.c:118 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1452 src/language/stats/npar-summary.c:125 +#: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 +#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 #: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 #: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 #: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 @@ -2591,7 +2586,7 @@ msgstr "" msgid "Mean" msgstr "Média" -#: src/language/stats/correlations.c:119 src/language/stats/factor.c:1453 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 #: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 #: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 @@ -2599,37 +2594,37 @@ msgstr "Média" msgid "Std. Deviation" msgstr "Desvio padrão" -#: src/language/stats/correlations.c:191 src/language/stats/factor.c:1331 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 #, fuzzy msgid "Correlations" msgstr "_Correlação Bivariada" -#: src/language/stats/correlations.c:217 +#: src/language/stats/correlations.c:216 #, fuzzy msgid "Pearson Correlation" msgstr "_Correlação Bivariada" -#: src/language/stats/correlations.c:219 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "" -#: src/language/stats/correlations.c:219 +#: src/language/stats/correlations.c:218 #, fuzzy msgid "Sig. (1-tailed)" msgstr "Sig. exata (uni-caudal)" -#: src/language/stats/correlations.c:223 +#: src/language/stats/correlations.c:222 msgid "Cross-products" msgstr "" -#: src/language/stats/correlations.c:224 +#: src/language/stats/correlations.c:223 #, fuzzy msgid "Covariance" msgstr "Co-variança" -#: src/language/stats/correlations.c:446 src/language/stats/descriptives.c:361 +#: src/language/stats/correlations.c:454 src/language/stats/descriptives.c:361 #: src/language/data-io/list.q:91 msgid "No variables specified." msgstr "" @@ -2757,53 +2752,44 @@ msgstr "" msgid "Variable %s specified twice in sort criteria." msgstr "" -#: src/language/stats/factor.c:558 +#: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." msgstr "" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Component Number" msgstr "Número da Coluna: 0" -#: src/language/stats/factor.c:939 +#: src/language/stats/factor.c:1206 #, fuzzy msgid "Factor Number" msgstr "Número do caso" -#: src/language/stats/factor.c:970 +#: src/language/stats/factor.c:1237 #, fuzzy msgid "Communalities" msgstr "Comentários:" -#: src/language/stats/factor.c:976 +#: src/language/stats/factor.c:1243 msgid "Initial" msgstr "" -#: src/language/stats/factor.c:979 +#: src/language/stats/factor.c:1246 msgid "Extraction" msgstr "" -#: src/language/stats/factor.c:1029 -msgid "Component Matrix" -msgstr "" - -#: src/language/stats/factor.c:1031 -#, fuzzy -msgid "Factor Matrix" -msgstr "Lista de Fator:" - -#: src/language/stats/factor.c:1039 src/language/stats/factor.c:1163 +#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 #, fuzzy msgid "Component" msgstr "Comentários:" -#: src/language/stats/factor.c:1044 src/language/stats/factor.c:1165 +#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 #, fuzzy msgid "Factor" msgstr "_Fator:" -#: src/language/stats/factor.c:1076 src/language/stats/factor.c:1219 +#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: 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 @@ -2811,60 +2797,78 @@ msgstr "_Fator:" msgid "%d" msgstr "%d" -#: src/language/stats/factor.c:1138 +#: src/language/stats/factor.c:1412 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1170 +#: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1176 +#: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1182 +#: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1190 +#: src/language/stats/factor.c:1464 #, fuzzy, no-c-format msgid "% of Variance" msgstr "Variança" -#: src/language/stats/factor.c:1191 +#: src/language/stats/factor.c:1465 msgid "Cumulative %" msgstr "" -#: src/language/stats/factor.c:1289 +#: src/language/stats/factor.c:1578 msgid "Correlation Matrix" msgstr "" -#: src/language/stats/factor.c:1343 +#: src/language/stats/factor.c:1632 msgid "Sig. 1-tailed" msgstr "" -#: src/language/stats/factor.c:1377 +#: src/language/stats/factor.c:1666 #, fuzzy msgid "Determinant" msgstr "Dependente" -#: src/language/stats/factor.c:1454 +#: src/language/stats/factor.c:1743 msgid "Analysis N" msgstr "" -#: src/language/stats/factor.c:1487 +#: src/language/stats/factor.c:1776 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1493 +#: src/language/stats/factor.c:1782 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" +#: src/language/stats/factor.c:1865 +msgid "Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1865 +#, fuzzy +msgid "Factor Matrix" +msgstr "Lista de Fator:" + +#: src/language/stats/factor.c:1871 +msgid "Rotated Component Matrix" +msgstr "" + +#: src/language/stats/factor.c:1871 +#, fuzzy +msgid "Rotated Factor Matrix" +msgstr "Lista de Fator:" + #: src/language/stats/flip.c:98 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." @@ -2955,7 +2959,7 @@ msgstr "" #: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 #: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:201 +#: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "Erro padrão" @@ -3841,7 +3845,7 @@ msgstr "" msgid "ascii: opening output file \"%s\"" msgstr "" -#: src/output/ascii.c:913 src/output/cairo.c:826 +#: src/output/ascii.c:913 src/output/cairo.c:784 #, c-format msgid "%s - Page %d" msgstr "" @@ -3964,36 +3968,36 @@ msgstr "" "problema na caixa: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) no tamanho da " "tabela (%d,%d)\n" -#: src/output/cairo.c:283 +#: src/output/cairo.c:295 #, fuzzy, c-format msgid "error opening output file \"%s\": %s" msgstr "Erro ao fechar arquivo portável \"%s\": %s." -#: src/output/cairo.c:301 +#: src/output/cairo.c:312 #, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " "default font. In fact, there's only room for %d characters." msgstr "" -#: src/output/cairo.c:311 +#: src/output/cairo.c:322 #, c-format msgid "" "The defined page is not long enough to hold margins and headers, plus least %" "d lines of the default fonts. In fact, there's only room for %d lines." msgstr "" -#: src/output/cairo.c:364 +#: src/output/cairo.c:376 #, c-format msgid "error drawing output for %s driver: %s" msgstr "" -#: src/output/cairo.c:906 +#: src/output/cairo.c:864 #, c-format msgid "\"%s\": bad font specification" msgstr "\"%s\": especificação de fonte inválida" -#: src/output/cairo.c:1116 +#: src/output/cairo.c:1084 #, fuzzy, c-format msgid "error writing output file \"%s\": %s" msgstr "Erro escrevendo em arquivo FLIP: %s." @@ -4092,16 +4096,6 @@ msgstr "" msgid "%s: output option specified more than once" msgstr "" -#: src/ui/gui/about.c:66 -msgid "A program for the analysis of sampled data" -msgstr "" - -#. TRANSLATORS: Use this string to list the people who have helped with -#. translation to your language. -#: src/ui/gui/about.c:76 -msgid "translator-credits" -msgstr "" - #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 #: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 @@ -4168,7 +4162,7 @@ msgstr "Corr" #: src/ui/gui/crosstabs-dialog.c:54 src/ui/gui/crosstabs-dialog.c:65 #: src/ui/gui/crosstabs-dialog.c:100 src/ui/gui/crosstabs-dialog.c:108 #: src/ui/gui/psppire-var-store.c:612 src/ui/gui/var-display.c:16 -#: src/ui/gui/variable-info-dialog.c:40 +#: src/ui/gui/variable-info-dialog.c:41 msgid "None" msgstr "Nenhum" @@ -4204,12 +4198,12 @@ msgstr "Desvio padrão" msgid "Standard error" msgstr "Erro padrão" -#: src/ui/gui/find-dialog.c:651 +#: src/ui/gui/find-dialog.c:649 #, c-format msgid "Bad regular expression: %s" msgstr "Expressão regular mal formada: %s" -#: src/ui/gui/factor-dialog.c:230 +#: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" msgstr "" @@ -4235,17 +4229,35 @@ msgstr "Erro padrão do kurtosis" msgid "Median" msgstr "" -#: src/ui/gui/helper.c:196 +#: src/ui/gui/helper.c:197 msgid "Sorry. The help system hasn't yet been implemented." msgstr "Desculpe. O sistema de ajuda ainda não foi implementado." -#: src/ui/gui/helper.c:241 +#: src/ui/gui/help-menu.c:67 +msgid "A program for the analysis of sampled data" +msgstr "" + +#. TRANSLATORS: Use this string to list the people who have helped with +#. translation to your language. +#: src/ui/gui/help-menu.c:77 +msgid "translator-credits" +msgstr "" + +#: src/ui/gui/help-menu.c:98 #, c-format msgid "" "Cannot open reference manual: %s. The PSPP user manual is also available at " "http://www.gnu.org/software/pspp/documentation.html" msgstr "" +#: src/ui/gui/help-menu.c:117 +msgid "_Help" +msgstr "A_juda" + +#: src/ui/gui/help-menu.c:124 +msgid "_Reference Manual" +msgstr "_Manual de Referência" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "Valor incorreto para tipo de variável" @@ -4254,7 +4266,7 @@ msgstr "Valor incorreto para tipo de variável" msgid "Incorrect range specification" msgstr "Especificação incorreta de intervalo" -#: src/ui/gui/oneway-anova-dialog.c:314 +#: src/ui/gui/oneway-anova-dialog.c:313 #, c-format msgid "Contrast %d of %d" msgstr "Contraste %d de %d" @@ -4279,57 +4291,57 @@ msgstr "Visualização de variáveis" msgid "var" msgstr "var" -#: src/ui/gui/psppire-data-window.c:210 +#: src/ui/gui/psppire-data-window.c:212 msgid "Transformations Pending" msgstr "Transformação Pendente" -#: src/ui/gui/psppire-data-window.c:226 +#: src/ui/gui/psppire-data-window.c:228 msgid "Filter off" msgstr "Sem Filtro" -#: src/ui/gui/psppire-data-window.c:240 +#: src/ui/gui/psppire-data-window.c:242 #, c-format msgid "Filter by %s" msgstr "Filtrar por %s" -#: src/ui/gui/psppire-data-window.c:261 +#: src/ui/gui/psppire-data-window.c:263 msgid "No Split" msgstr "Sem divisão" -#: src/ui/gui/psppire-data-window.c:270 +#: src/ui/gui/psppire-data-window.c:272 msgid "Split by " msgstr "Dividido por " -#: src/ui/gui/psppire-data-window.c:298 +#: src/ui/gui/psppire-data-window.c:300 msgid "Weights off" msgstr "Sem ponderação" -#: src/ui/gui/psppire-data-window.c:312 +#: src/ui/gui/psppire-data-window.c:314 #, c-format msgid "Weight by %s" msgstr "Ponderar por %s" -#: src/ui/gui/psppire-data-window.c:380 +#: src/ui/gui/psppire-data-window.c:382 msgid "Open" msgstr "Abrir" -#: src/ui/gui/psppire-data-window.c:390 +#: src/ui/gui/psppire-data-window.c:392 msgid "Data and Syntax Files" msgstr "" -#: src/ui/gui/psppire-data-window.c:400 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 msgid "System Files (*.sav)" msgstr "Arquivo de Sistema (*.sav)" -#: src/ui/gui/psppire-data-window.c:406 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 msgid "Portable Files (*.por) " msgstr "Arquivo Portável (*.por) " -#: src/ui/gui/psppire-data-window.c:412 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 msgid "Syntax Files (*.sps) " msgstr "Arquivo de Sintaxe (*.sps) " -#: src/ui/gui/psppire-data-window.c:418 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Todos os Arquivos" @@ -4342,47 +4354,47 @@ msgstr "Salvar" msgid "Portable File" msgstr "Arquivo portátil" -#: src/ui/gui/psppire-data-window.c:786 +#: src/ui/gui/psppire-data-window.c:773 msgid "Font Selection" msgstr "Seleção de fonte" -#: src/ui/gui/psppire-data-window.c:1581 +#: src/ui/gui/psppire-data-window.c:1261 #, fuzzy msgid "Data Editor" msgstr "%s --- Editor de Dados do PSPP" -#: src/ui/gui/psppire-output-window.c:441 +#: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" msgstr "" -#: src/ui/gui/psppire-output-window.c:449 +#: src/ui/gui/psppire-output-window.c:466 #, fuzzy msgid "PDF Files (*.pdf)" msgstr "Arquivo Portável (*.por) " -#: src/ui/gui/psppire-output-window.c:450 +#: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" msgstr "" -#: src/ui/gui/psppire-output-window.c:451 +#: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:452 +#: src/ui/gui/psppire-output-window.c:469 #, fuzzy msgid "Text Files (*.txt)" msgstr "Arquivo de Sistema (*.sav)" -#: src/ui/gui/psppire-output-window.c:453 +#: src/ui/gui/psppire-output-window.c:470 #, fuzzy msgid "PostScript Files (*.ps)" msgstr "Arquivo Portável (*.por) " -#: src/ui/gui/psppire-output-window.c:454 +#: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" msgstr "" -#: src/ui/gui/psppire-output-window.c:593 +#: src/ui/gui/psppire-output-window.c:605 #, fuzzy msgid "Output Viewer" msgstr "Variável de Saída" @@ -4396,12 +4408,12 @@ msgstr "lendo arquivo de fonte \"%s\"" msgid "Save Syntax" msgstr "Salvar Sintaxe" -#: src/ui/gui/psppire-syntax-window.c:512 +#: src/ui/gui/psppire-syntax-window.c:496 #, fuzzy msgid "Syntax Editor" msgstr "Editor de Sintaxe do PSPP" -#: src/ui/gui/psppire-syntax-window.c:526 +#: src/ui/gui/psppire-syntax-window.c:510 #, fuzzy, c-format msgid "Cannot load syntax file '%s'" msgstr "impossível abrir arquivo de fonte \"%s\"" @@ -4484,27 +4496,27 @@ msgstr "" msgid "Close _without saving" msgstr "%s sem %s." -#: src/ui/gui/recode-dialog.c:915 +#: src/ui/gui/recode-dialog.c:911 msgid "Recode into Different Variables" msgstr "Transformar para Variáveis Diferentes" -#: src/ui/gui/recode-dialog.c:918 src/ui/gui/recode.ui:692 +#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692 msgid "Recode into Same Variables" msgstr "Transformar para a Mesma Variável" -#: src/ui/gui/recode-dialog.c:933 src/ui/gui/recode-dialog.c:1029 +#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025 msgid "New" msgstr "Novo" -#: src/ui/gui/recode-dialog.c:948 src/ui/gui/recode-dialog.c:1021 +#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017 msgid "Old" msgstr "Antigo" -#: src/ui/gui/recode-dialog.c:1278 +#: src/ui/gui/recode-dialog.c:1274 msgid "Recode into Different Variables: Old and New Values " msgstr "Transformar Para Diferentes Variáveis: Antigos e Novos Valores " -#: src/ui/gui/recode-dialog.c:1279 +#: src/ui/gui/recode-dialog.c:1275 msgid "Recode into Same Variables: Old and New Values" msgstr "Transformar Para a Mesma Variável: Antigos e Novos Valores" @@ -4512,7 +4524,7 @@ msgstr "Transformar Para a Mesma Variável: Antigos e Novos Valores" msgid "Coeff" msgstr "Coeff" -#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:158 +#: src/ui/gui/regression-dialog.c:43 src/language/stats/regression.q:155 msgid "R" msgstr "" @@ -4627,31 +4639,31 @@ msgstr "Campo contendo \"%.*s\" não pode ser analisado no formato %s." msgid "Confidence Interval: %2d %%" msgstr "Intervalo de confiança: %2d %%" -#: src/ui/gui/variable-info-dialog.c:76 +#: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" msgstr "Rótulo: %s\n" -#: src/ui/gui/variable-info-dialog.c:83 +#: src/ui/gui/variable-info-dialog.c:84 #, c-format msgid "Type: %s\n" msgstr "Tipo: %s\n" -#: src/ui/gui/variable-info-dialog.c:87 +#: src/ui/gui/variable-info-dialog.c:88 #, c-format msgid "Missing Values: %s\n" msgstr "Valores missing: %s\n" -#: src/ui/gui/variable-info-dialog.c:92 +#: src/ui/gui/variable-info-dialog.c:93 #, c-format msgid "Measurement Level: %s\n" msgstr "Nível de medida: %s\n" -#: src/ui/gui/variable-info-dialog.c:105 +#: src/ui/gui/variable-info-dialog.c:106 msgid "Value Labels:\n" msgstr "Rótulos de valores:\n" -#: src/ui/gui/variable-info-dialog.c:115 +#: src/ui/gui/variable-info-dialog.c:116 #, c-format msgid "%s %s\n" msgstr "" @@ -4666,27 +4678,27 @@ msgstr "Não ponderar casos" msgid "Weight cases by %s" msgstr "Pesar casos por %s" -#: tests/dissect-sysfile.c:567 +#: tests/dissect-sysfile.c:571 #, fuzzy, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Registro de tipo %d não reconhecido." -#: tests/dissect-sysfile.c:846 +#: tests/dissect-sysfile.c:850 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "" -#: tests/dissect-sysfile.c:852 +#: tests/dissect-sysfile.c:856 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "" -#: tests/dissect-sysfile.c:876 +#: tests/dissect-sysfile.c:880 #, fuzzy, c-format msgid "Bad size %zu for extended number of cases." msgstr "Tamanho %zu inválido da extensão 11." -#: tests/dissect-sysfile.c:882 +#: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." msgstr "" @@ -5153,14 +5165,10 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:245 +#: src/language/stats/glm.q:248 msgid "Multivariate GLM not yet supported" msgstr "" -#: src/language/stats/glm.q:355 src/language/stats/regression.q:998 -msgid "No valid data found. This command was skipped." -msgstr "" - #: src/language/stats/means.q:100 msgid "Missing required subcommand TABLES." msgstr "Faltando subcomando necessário TABLES." @@ -5169,24 +5177,24 @@ msgstr "Faltando subcomando necessário TABLES." msgid "TABLES subcommand may not appear more than once." msgstr "" -#: src/language/stats/npar.q:110 +#: src/language/stats/npar.q:111 msgid "NPAR subcommand not currently implemented." msgstr "" -#: src/language/stats/npar.q:254 +#: src/language/stats/npar.q:256 #, c-format msgid "" "The specified value of HI (%d) is lower than the specified value of LO (%d)" msgstr "" -#: src/language/stats/npar.q:309 +#: src/language/stats/npar.q:311 #, c-format msgid "" "%d expected values were given, but the specified range (%d-%d) requires " "exactly %d values." msgstr "" -#: src/language/stats/npar.q:444 src/language/stats/t-test.q:380 +#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%zu) did " @@ -5207,21 +5215,21 @@ msgstr "" msgid "`%s' is not a variable name" msgstr "" -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:298 +#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 msgid "Sum of Squares" msgstr "Soma dos quadrados" -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:300 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 msgid "Mean Square" msgstr "" -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:301 +#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 #: src/language/stats/t-test.q:749 msgid "F" msgstr "" #: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:204 src/language/stats/regression.q:302 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 msgid "Significance" msgstr "" @@ -5233,7 +5241,7 @@ msgstr "" msgid "Within Groups" msgstr "" -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:327 +#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 msgid "ANOVA" msgstr "ANOVA" @@ -5269,7 +5277,7 @@ msgstr "" msgid "Value of Contrast" msgstr "" -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:203 +#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 #: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 #: src/language/stats/t-test.q:1009 msgid "t" @@ -5336,64 +5344,68 @@ msgstr "" msgid "Too many variables in INTO clause." msgstr "" -#: src/language/stats/regression.q:159 +#: src/language/stats/regression.q:156 msgid "R Square" msgstr "" -#: src/language/stats/regression.q:160 +#: src/language/stats/regression.q:157 msgid "Adjusted R Square" msgstr "" -#: src/language/stats/regression.q:161 +#: src/language/stats/regression.q:158 msgid "Std. Error of the Estimate" msgstr "" -#: src/language/stats/regression.q:166 +#: src/language/stats/regression.q:163 msgid "Model Summary" msgstr "" -#: src/language/stats/regression.q:200 +#: src/language/stats/regression.q:197 msgid "B" msgstr "" -#: src/language/stats/regression.q:202 +#: src/language/stats/regression.q:199 msgid "Beta" msgstr "" -#: src/language/stats/regression.q:205 +#: src/language/stats/regression.q:202 msgid "(Constant)" msgstr "" -#: src/language/stats/regression.q:269 +#: src/language/stats/regression.q:254 msgid "Coefficients" msgstr "Coeficientes" -#: src/language/stats/regression.q:304 src/ui/gui/regression.ui:7 +#: src/language/stats/regression.q:289 src/ui/gui/regression.ui:7 msgid "Regression" msgstr "Regressão" -#: src/language/stats/regression.q:385 +#: src/language/stats/regression.q:370 msgid "Model" msgstr "Modelo" -#: src/language/stats/regression.q:386 +#: src/language/stats/regression.q:371 msgid "Covariances" msgstr "Co-variança" -#: src/language/stats/regression.q:401 +#: src/language/stats/regression.q:386 msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:808 +#: src/language/stats/regression.q:793 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 "" -#: src/language/stats/regression.q:900 -msgid "Dependent variable must be numeric." -msgstr "Variável dependente precisa ser numérica" +#: src/language/stats/regression.q:891 +msgid "REGRESSION requires numeric variables." +msgstr "" + +#: src/language/stats/regression.q:962 +msgid "No valid data found. This command was skipped." +msgstr "" #: src/language/stats/reliability.q:421 #, fuzzy @@ -5658,6 +5670,27 @@ msgstr "" msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "" +#: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 +#, fuzzy +msgid "_Test Variable List:" +msgstr "Variável(is) de teste:" + +#: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 +msgid "_Get from data" +msgstr "" + +#: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 +msgid "_Cut point:" +msgstr "Ponto de _corte:" + +#: src/ui/gui/binomial.ui:178 +msgid "Define Dichotomy" +msgstr "" + +#: src/ui/gui/binomial.ui:197 +msgid "Test _Proportion:" +msgstr "" + #: src/ui/gui/correlation.ui:7 #, fuzzy msgid "Bivariate Correlations" @@ -5768,6 +5801,44 @@ msgstr "Testes estatísticos" msgid "Statistics" msgstr "Estatísticas" +#: src/ui/gui/chi-square.ui:13 +#, fuzzy +msgid "Chi-Square Test" +msgstr "Teste Chi-quadrado" + +#: src/ui/gui/chi-square.ui:140 +msgid "Use _specified range" +msgstr "" + +#: src/ui/gui/chi-square.ui:162 +#, fuzzy +msgid "_Lower:" +msgstr "Mínimo" + +#: src/ui/gui/chi-square.ui:170 +#, fuzzy +msgid "_Upper:" +msgstr "Máximo" + +#: src/ui/gui/chi-square.ui:214 +#, fuzzy +msgid "Expected Range:" +msgstr "N esperado" + +#: src/ui/gui/chi-square.ui:240 +msgid "All categor_ies equal" +msgstr "" + +#: src/ui/gui/chi-square.ui:257 +#, fuzzy +msgid "_Values" +msgstr "Valores" + +#: src/ui/gui/chi-square.ui:301 +#, fuzzy +msgid "Expected Values:" +msgstr "N esperado" + #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" msgstr "Estatísticas:" @@ -5848,62 +5919,100 @@ msgstr "Lista de Fator:" #: src/ui/gui/factor.ui:47 #, fuzzy -msgid "Descriptives..." +msgid "_Descriptives..." msgstr "Descritivas" #: src/ui/gui/factor.ui:60 #, fuzzy -msgid "Extraction..." +msgid "_Extraction..." +msgstr "Opções..." + +#: src/ui/gui/factor.ui:74 +#, fuzzy +msgid "_Rotations..." msgstr "Opções..." -#: src/ui/gui/factor.ui:180 +#: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:204 +#: src/ui/gui/factor.ui:216 #, fuzzy msgid "Method: " msgstr "Modo:" -#: src/ui/gui/factor.ui:254 +#: src/ui/gui/factor.ui:266 msgid "Correlation matrix" msgstr "" -#: src/ui/gui/factor.ui:268 +#: src/ui/gui/factor.ui:280 #, fuzzy msgid "Covariance matrix" msgstr "Co-variança" -#: src/ui/gui/factor.ui:288 +#: src/ui/gui/factor.ui:300 #, fuzzy msgid "Analyse" msgstr "_Analisar" -#: src/ui/gui/factor.ui:312 +#: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:326 +#: src/ui/gui/factor.ui:338 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:345 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 #, fuzzy msgid "Display" msgstr "Visualizar Célula" -#: src/ui/gui/factor.ui:418 +#: src/ui/gui/factor.ui:430 msgid "Number of factors:" msgstr "" -#: src/ui/gui/factor.ui:448 +#: src/ui/gui/factor.ui:460 msgid "Extract" msgstr "" -#: src/ui/gui/factor.ui:463 +#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" msgstr "" +#: src/ui/gui/factor.ui:538 +#, fuzzy +msgid "Factor Analysis: Rotation" +msgstr "Lista de Fator:" + +#: src/ui/gui/factor.ui:571 +#, fuzzy +msgid "_None" +msgstr "Nenhum" + +#: src/ui/gui/factor.ui:582 +#, fuzzy +msgid "_Varimax" +msgstr "_Variáveis" + +#: src/ui/gui/factor.ui:598 +msgid "_Quartimax" +msgstr "" + +#: src/ui/gui/factor.ui:614 +msgid "_Equimax" +msgstr "" + +#: src/ui/gui/factor.ui:637 +#, fuzzy +msgid "Method" +msgstr "Modo:" + +#: src/ui/gui/factor.ui:648 +#, fuzzy +msgid "_Display rotated solution" +msgstr "informação do arquivo de dados" + #: src/ui/gui/find.ui:8 msgid "Find Case" msgstr "Localizar Casos" @@ -6615,10 +6724,6 @@ msgstr "Valor do grupo_2:" msgid "Group_1 value:" msgstr "Valor do grupo_1:" -#: src/ui/gui/t-test.ui:333 -msgid "_Cut point:" -msgstr "Ponto de _corte:" - #: src/ui/gui/t-test.ui:365 msgid "_Use specified values:" msgstr "" @@ -6864,19 +6969,19 @@ msgstr "Ordenar Ascendentemente " msgid "Sort Descending" msgstr "Ordenar Descendentemente" -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.glade:21 -#: src/ui/gui/syntax-editor.glade:14 +#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "_Arquivo" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.glade:32 -#: src/ui/gui/syntax-editor.glade:62 +#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "_Sintaxe" #: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217 -#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.glade:41 -#: src/ui/gui/syntax-editor.glade:71 +#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "_Dados" @@ -6906,8 +7011,8 @@ msgstr "Dados Recen_temente usados" msgid "Recently Used _Files" msgstr "Arquivos _Recentemente Usados" -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.glade:43 -#: src/ui/gui/syntax-editor.glade:118 +#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "_Editar" @@ -7127,13 +7232,13 @@ msgstr "Pular para variável" msgid "Data File _Comments" msgstr "_Comentários do Arquivo de Dados" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.glade:66 -#: src/ui/gui/syntax-editor.glade:209 +#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 +#: src/ui/gui/syntax-editor.ui:131 msgid "_Windows" msgstr "_Janelas" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.glade:76 -#: src/ui/gui/syntax-editor.glade:218 +#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:137 msgid "_Minimize All Windows" msgstr "_Minimizar Todas as Janelas" @@ -7142,69 +7247,64 @@ msgstr "_Minimizar Todas as Janelas" msgid "_Split" msgstr "_Dividir" -#: src/ui/gui/data-editor.ui:462 src/ui/gui/output-viewer.glade:87 -#: src/ui/gui/syntax-editor.glade:229 -msgid "_Help" -msgstr "A_juda" - -#: src/ui/gui/data-editor.ui:468 src/ui/gui/output-viewer.glade:94 -#: src/ui/gui/syntax-editor.glade:237 -msgid "_Reference Manual" -msgstr "_Manual de Referência" - -#: src/ui/gui/data-editor.ui:652 +#: src/ui/gui/data-editor.ui:630 msgid "Information Area" msgstr "Área de Informação" -#: src/ui/gui/data-editor.ui:674 +#: src/ui/gui/data-editor.ui:652 msgid "Processor Area" msgstr "Área do Processamento" -#: src/ui/gui/data-editor.ui:699 +#: src/ui/gui/data-editor.ui:677 msgid "Case Counter Area" msgstr "Área de Contagem dos Casos" -#: src/ui/gui/data-editor.ui:724 +#: src/ui/gui/data-editor.ui:702 msgid "Filter Use Status Area" msgstr "Área de Status do Uso de Filtros" -#: src/ui/gui/data-editor.ui:750 +#: src/ui/gui/data-editor.ui:728 msgid "Weight Status Area" msgstr "Área de status da ponderação" -#: src/ui/gui/data-editor.ui:776 +#: src/ui/gui/data-editor.ui:754 msgid "Split File Status Area" msgstr "Área de Status da Divisão de Arquivos" -#: src/ui/gui/output-viewer.glade:31 +#: src/ui/gui/output-viewer.ui:22 #, fuzzy msgid "_Export" msgstr "_Explorar" -#: src/ui/gui/output-viewer.glade:101 src/ui/gui/syntax-editor.glade:244 -msgid "_About" -msgstr "_Sobre" - -#: src/ui/gui/syntax-editor.glade:163 +#: src/ui/gui/syntax-editor.ui:100 msgid "_Run" msgstr "_Executar" -#: src/ui/gui/syntax-editor.glade:172 +#: src/ui/gui/syntax-editor.ui:106 msgid "All" msgstr "Todos" -#: src/ui/gui/syntax-editor.glade:180 +#: src/ui/gui/syntax-editor.ui:112 msgid "Selection" msgstr "Seleção" -#: src/ui/gui/syntax-editor.glade:188 +#: src/ui/gui/syntax-editor.ui:118 msgid "Current Line" msgstr "Linha atual" -#: src/ui/gui/syntax-editor.glade:197 +#: src/ui/gui/syntax-editor.ui:125 msgid "To End" msgstr "Para o Final" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "Variável dependente precisa ser numérica" + +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variável %s tem um rótulo de tamanho inválido %zu." + +#~ msgid "_About" +#~ msgstr "_Sobre" + #~ msgid "searching for \"%s\" in path \"%s\"" #~ msgstr "Procurando \"%s\" no caminho \"%s\"" diff --git a/src/data/automake.mk b/src/data/automake.mk index e508ff7e..19403cf7 100644 --- a/src/data/automake.mk +++ b/src/data/automake.mk @@ -42,8 +42,6 @@ src_data_libdata_la_SOURCES = \ src/data/case.h \ src/data/case-tmpfile.c \ src/data/case-tmpfile.h \ - src/data/category.c \ - src/data/category.h \ src/data/data-in.c \ src/data/data-in.h \ src/data/data-out.c \ diff --git a/src/data/category.c b/src/data/category.c deleted file mode 100644 index 968dd4c5..00000000 --- a/src/data/category.c +++ /dev/null @@ -1,199 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2005, 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 . */ - -/* - Functions and data structures to store values of a categorical - variable, and to recode those values into binary vectors. - - For some statistical models, it is necessary to change each value - of a categorical variable to a vector with binary entries. These - vectors are then stored as sub-rows within a matrix during - model-fitting. For example, we need functions and data strucutres to map a - value, say 'a', of a variable named 'cat_var', to a vector, say (0 - 1 0 0 0), and vice versa. We also need to be able to map the - vector back to the value 'a', and if the vector is a sub-row of a - matrix, we need to know which sub-row corresponds to the variable - 'cat_var'. -*/ -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#define CAT_VALUE_NOT_FOUND -1 - -#define N_INITIAL_CATEGORIES 1 - -/* - This structure contains the observed values of a - categorical variable. - */ -struct cat_vals -{ - union value *vals; - size_t n_categories; - size_t n_allocated_categories; /* This is used only during - initialization to keep - track of the number of - values stored. - */ - size_t *value_counts; /* Element i stores the number of cases for which - the categorical variable has that corresponding - value. This is necessary for computing covariance - matrices. - */ -}; - -void -cat_stored_values_create (const struct variable *v) -{ - if (!var_has_obs_vals (v)) - { - struct cat_vals *obs_vals = xmalloc (sizeof *obs_vals); - - obs_vals->n_categories = 0; - obs_vals->n_allocated_categories = N_INITIAL_CATEGORIES; - obs_vals->vals = xnmalloc (N_INITIAL_CATEGORIES, sizeof *obs_vals->vals); - obs_vals->value_counts = xnmalloc (N_INITIAL_CATEGORIES, sizeof *obs_vals->value_counts); - var_set_obs_vals (v, obs_vals); - } -} - -void -cat_stored_values_destroy (struct cat_vals *obs_vals) -{ - if (obs_vals != NULL) - { - if (obs_vals->n_allocated_categories > 0) - { - free (obs_vals->vals); - free (obs_vals->value_counts); - } - free (obs_vals); - } -} - -/* - Which subscript corresponds to val? - */ -size_t -cat_value_find (const struct variable *v, const union value *val) -{ - struct cat_vals *obs_vals = var_get_obs_vals (v); - size_t i; - const union value *candidate; - - for (i = 0; i < obs_vals->n_categories; i++) - { - candidate = obs_vals->vals + i; - assert (candidate != NULL); - if (value_equal (candidate, val, var_get_width (v))) - { - return i; - } - } - return CAT_VALUE_NOT_FOUND; -} - -/* - Add the new value unless it is already present. Increment the count. - */ -void -cat_value_update (const struct variable *v, const union value *val) -{ - if (var_is_alpha (v)) - { - size_t i; - struct cat_vals *cv = var_get_obs_vals (v); - i = cat_value_find (v, val); - if (i == CAT_VALUE_NOT_FOUND) - { - if (cv->n_categories >= cv->n_allocated_categories) - { - cv->n_allocated_categories *= 2; - cv->vals = xnrealloc (cv->vals, - cv->n_allocated_categories, - sizeof *cv->vals); - cv->value_counts = xnrealloc (cv->value_counts, cv->n_allocated_categories, - sizeof *cv->value_counts); - } - cv->vals[cv->n_categories] = *val; - cv->value_counts[cv->n_categories] = 1; - cv->n_categories++; - } - else - { - cv->value_counts[i]++; - } - } -} -/* - Return the count for the sth category. - */ -size_t -cat_get_category_count (const size_t s, const struct variable *v) -{ - struct cat_vals *tmp; - size_t n_categories; - - tmp = var_get_obs_vals (v); - n_categories = cat_get_n_categories (v); - if (s < n_categories) - { - return tmp->value_counts[s]; - } - return CAT_VALUE_NOT_FOUND; -} - -const union value * -cat_subscript_to_value (const size_t s, const struct variable *v) -{ - struct cat_vals *obs_vals = var_get_obs_vals (v); - return s < obs_vals->n_categories ? obs_vals->vals + s : NULL; -} - -/* - Return the number of categories of a categorical variable. - */ -size_t -cat_get_n_categories (const struct variable *v) -{ - return var_get_obs_vals (v)->n_categories; -} - -/* - If VAR is categorical with d categories, its first category should - correspond to the origin in d-dimensional Euclidean space. - */ -bool -cat_is_origin (const struct variable *var, const union value *val) -{ - if (var_is_numeric (var)) - { - return false; - } - if (cat_value_find (var, val) == 0) - { - return true; - } - return false; -} diff --git a/src/data/category.h b/src/data/category.h deleted file mode 100644 index f90ae7cd..00000000 --- a/src/data/category.h +++ /dev/null @@ -1,69 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2005 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 . */ - -/* - Functions and data structures to recode categorical variables into - vectors and sub-rows of matrices. - - To fit many types of statistical models, it is necessary - to change each value of a categorical variable to a vector with binary - entries. These vectors are then stored as sub-rows within a matrix - during model-fitting. We need functions and data strucutres to, - e.g., map a value, say 'a', of a variable named 'cat_var', to a - vector, say (0 1 0 0 0), and vice versa. We also need to be able - to map the vector back to the value 'a', and if the vector is a - sub-row of a matrix, we need to know which sub-row corresponds to - the variable 'cat_var'. - - */ - -#ifndef CATEGORY_H -#define CATEGORY_H -#include -#include - -struct cat_vals; -struct variable ; -union value; - -void cat_stored_values_create (const struct variable *); -void cat_stored_values_destroy (struct cat_vals *); - -size_t cat_value_find (const struct variable *, const union value *); - -const union value *cat_subscript_to_value (const size_t, - const struct variable *); - - -void cat_value_update (const struct variable *, const union value *); - -/* - Return the count for the sth category. -*/ -size_t -cat_get_category_count (const size_t, const struct variable *); - -/* - Return the number of categories of a categorical variable. - */ -size_t cat_get_n_categories (const struct variable *v); - -/* - If VAR is categorical with d categories, its first category should - correspond to the origin in d-dimensional Euclidean space. - */ -bool cat_is_origin (const struct variable *, const union value *); -#endif diff --git a/src/data/dictionary.c b/src/data/dictionary.c index 1976ec03..aa0fcd56 100644 --- a/src/data/dictionary.c +++ b/src/data/dictionary.c @@ -24,7 +24,6 @@ #include "data/attributes.h" #include "data/case.h" -#include "data/category.h" #include "data/identifier.h" #include "data/mrset.h" #include "data/settings.h" diff --git a/src/data/variable.c b/src/data/variable.c index ba216f48..9968d9f9 100644 --- a/src/data/variable.c +++ b/src/data/variable.c @@ -20,7 +20,6 @@ #include #include -#include #include #include #include @@ -74,11 +73,6 @@ struct variable void *aux; void (*aux_dtor) (struct variable *); - /* Values of a categorical variable. Procedures need - vectors with binary entries, so any variable of type ALPHA will - have its values stored here. */ - struct cat_vals *obs_vals; - /* Custom attributes. */ struct attrset attributes; }; @@ -112,7 +106,6 @@ var_create (const char *name, int width) v->short_name_cnt = 0; v->aux = NULL; v->aux_dtor = NULL; - v->obs_vals = NULL; attrset_init (&v->attributes); return v; @@ -127,8 +120,7 @@ var_create (const char *name, int width) - The new variable is not added to OLD_VAR's dictionary by default. Use dict_clone_var, instead, to do that. - - - Auxiliary data and obs_vals are not copied. */ +*/ struct variable * var_clone (const struct variable *old_var) { @@ -159,7 +151,6 @@ var_destroy (struct variable *v) { assert (!var_has_vardict (v)); mv_destroy (&v->miss); - cat_stored_values_destroy (v->obs_vals); var_clear_short_names (v); var_clear_aux (v); val_labs_destroy (v->val_labs); @@ -967,35 +958,6 @@ var_dtor_free (struct variable *v) free (v->aux); } -/* Observed categorical values. */ - -/* Returns V's observed categorical values, - which V must have. */ -struct cat_vals * -var_get_obs_vals (const struct variable *v) -{ - assert (v->obs_vals != NULL); - return v->obs_vals; -} - -/* Sets V's observed categorical values to CAT_VALS. - V becomes the owner of CAT_VALS. */ -void -var_set_obs_vals (const struct variable *v_, struct cat_vals *cat_vals) -{ - struct variable *v = CONST_CAST (struct variable *, v_ ); - cat_stored_values_destroy (v->obs_vals); - v->obs_vals = cat_vals; -} - -/* Returns true if V has observed categorical values, - false otherwise. */ -bool -var_has_obs_vals (const struct variable *v) -{ - return v->obs_vals != NULL; -} - /* Returns variable V's attribute set. The caller may examine or modify the attribute set, but must not destroy it. Destroying V, or calling var_set_attributes() on V, will also destroy its diff --git a/src/data/variable.h b/src/data/variable.h index f1a4c872..524a6be2 100644 --- a/src/data/variable.h +++ b/src/data/variable.h @@ -166,11 +166,6 @@ void var_clear_aux (struct variable *); void *var_detach_aux (struct variable *); void var_dtor_free (struct variable *); -/* Observed categorical values. */ -struct cat_vals *var_get_obs_vals (const struct variable *); -void var_set_obs_vals (const struct variable *, struct cat_vals *); -bool var_has_obs_vals (const struct variable *); - /* Custom attributes. */ struct attrset *var_get_attributes (const struct variable *); void var_set_attributes (struct variable *, const struct attrset *); diff --git a/src/language/stats/correlations.c b/src/language/stats/correlations.c index 7fcca77c..995675e2 100644 --- a/src/language/stats/correlations.c +++ b/src/language/stats/correlations.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -281,16 +280,25 @@ run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr const gsl_matrix *var_matrix, *samples_matrix, *mean_matrix; const gsl_matrix *cov_matrix; gsl_matrix *corr_matrix; - struct covariance *cov = covariance_create (corr->n_vars_total, corr->vars, - opts->wv, opts->exclude); + struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars, + 0, NULL, + opts->wv, opts->exclude); + struct casereader *rc = casereader_clone (r); for ( ; (c = casereader_read (r) ); case_unref (c)) { - covariance_accumulate (cov, c); + covariance_accumulate_pass1 (cov, c); + } + + for ( ; (c = casereader_read (rc) ); case_unref (c)) + { + covariance_accumulate_pass2 (cov, c); } cov_matrix = covariance_calculate (cov); + casereader_destroy (rc); + samples_matrix = covariance_moments (cov, MOMENT_NONE); var_matrix = covariance_moments (cov, MOMENT_VARIANCE); mean_matrix = covariance_moments (cov, MOMENT_MEAN); diff --git a/src/language/stats/factor.c b/src/language/stats/factor.c index 83dc13de..1043173b 100644 --- a/src/language/stats/factor.c +++ b/src/language/stats/factor.c @@ -1682,7 +1682,7 @@ do_factor (const struct cmd_factor *factor, struct casereader *r) const gsl_matrix *analysis_matrix; struct idata *idata = idata_alloc (factor->n_vars); - struct covariance *cov = covariance_create (factor->n_vars, factor->vars, + struct covariance *cov = covariance_1pass_create (factor->n_vars, factor->vars, factor->wv, factor->exclude); for ( ; (c = casereader_read (r) ); case_unref (c)) diff --git a/src/language/stats/glm.q b/src/language/stats/glm.q index 0804945f..1a941152 100644 --- a/src/language/stats/glm.q +++ b/src/language/stats/glm.q @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -39,7 +38,7 @@ #include #include #include -#include +#include #include #include #include @@ -228,18 +227,22 @@ glm_custom_dependent (struct lexer *lexer, struct dataset *ds, struct cmd_glm *cmd UNUSED, void *aux UNUSED) { const struct dictionary *dict = dataset_dict (ds); + size_t i; if ((lex_token (lexer) != T_ID || dict_lookup_var (dict, lex_tokid (lexer)) == NULL) && lex_token (lexer) != T_ALL) return 2; - if (!parse_variables_const - (lexer, dict, &v_dependent, &n_dependent, PV_NONE)) + if (!parse_variables_const (lexer, dict, &v_dependent, &n_dependent, PV_NONE)) { free (v_dependent); return 0; } + for (i = 0; i < n_dependent; i++) + { + assert (var_is_numeric (v_dependent[i])); + } assert (n_dependent); if (n_dependent > 1) msg (SE, _("Multivariate GLM not yet supported")); @@ -248,29 +251,13 @@ glm_custom_dependent (struct lexer *lexer, struct dataset *ds, return 1; } -/* - COV is the covariance matrix for variables included in the - model. That means the dependent variable is in there, too. - */ -static void -coeff_init (pspp_linreg_cache * c, const struct design_matrix *cov) -{ - c->coeff = xnmalloc (cov->m->size2, sizeof (*c->coeff)); - c->n_coeffs = cov->m->size2 - 1; - pspp_coeff_init (c->coeff, cov); -} - - -static pspp_linreg_cache * -fit_model (const struct covariance_matrix *cov, +static linreg * +fit_model (const struct covariance *cov, const struct variable *dep_var, const struct variable ** indep_vars, size_t n_data, size_t n_indep) { - pspp_linreg_cache *result = NULL; - result = pspp_linreg_cache_alloc (dep_var, indep_vars, n_data, n_indep); - coeff_init (result, covariance_to_design (cov)); - pspp_linreg_with_cov (cov, result); + linreg *result = NULL; return result; } @@ -281,17 +268,18 @@ run_glm (struct casereader *input, const struct dataset *ds) { casenumber row; - const struct variable **indep_vars; - const struct variable **all_vars; + const struct variable **numerics = NULL; + const struct variable **categoricals = NULL; int n_indep = 0; - pspp_linreg_cache *model = NULL; + linreg *model = NULL; pspp_linreg_opts lopts; struct ccase *c; size_t i; - size_t n_all_vars; size_t n_data; /* Number of valid cases. */ + size_t n_categoricals = 0; + size_t n_numerics; struct casereader *reader; - struct covariance_matrix *cov; + struct covariance *cov; c = casereader_peek (input, 0); if (c == NULL) @@ -311,50 +299,93 @@ run_glm (struct casereader *input, lopts.get_depvar_mean_std = 1; lopts.get_indep_mean_std = xnmalloc (n_dependent, sizeof (int)); - indep_vars = xnmalloc (cmd->n_by, sizeof *indep_vars); - n_all_vars = cmd->n_by + n_dependent; - all_vars = xnmalloc (n_all_vars, sizeof *all_vars); - for (i = 0; i < n_dependent; i++) + + n_numerics = n_dependent; + for (i = 0; i < cmd->n_with; i++) + { + if (var_is_alpha (cmd->v_with[i])) + { + n_categoricals++; + } + else + { + n_numerics++; + } + } + for (i = 0; i < cmd->n_by; i++) { - all_vars[i] = v_dependent[i]; + if (var_is_alpha (cmd->v_by[i])) + { + n_categoricals++; + } + else + { + n_numerics++; + } } + numerics = xnmalloc (n_numerics, sizeof *numerics); + categoricals = xnmalloc (n_categoricals, sizeof (*categoricals)); + size_t j = 0; + size_t k = 0; for (i = 0; i < cmd->n_by; i++) { - indep_vars[i] = cmd->v_by[i]; - all_vars[i + n_dependent] = cmd->v_by[i]; + if (var_is_alpha (cmd->v_by[i])) + { + categoricals[j] = cmd->v_by[i]; + j++; + } + else + { + numerics[k] = cmd->v_by[i]; + k++; + } + } + for (i = 0; i < cmd->n_with; i++) + { + if (var_is_alpha (cmd->v_with[i])) + { + categoricals[j] = cmd->v_with[i]; + j++; + } + else + { + numerics[k] = cmd->v_with[i]; + k++; + } + } + for (i = 0; i < n_dependent; i++) + { + numerics[k] = v_dependent[i]; + k++; } - n_indep = cmd->n_by; + + cov = covariance_2pass_create (n_numerics, numerics, n_categoricals, categoricals, NULL, MV_NEVER); reader = casereader_clone (input); - reader = casereader_create_filter_missing (reader, indep_vars, n_indep, + reader = casereader_create_filter_missing (reader, numerics, n_numerics, MV_ANY, NULL, NULL); - reader = casereader_create_filter_missing (reader, v_dependent, 1, + reader = casereader_create_filter_missing (reader, categoricals, n_categoricals, MV_ANY, NULL, NULL); + struct casereader *r = casereader_clone (reader); - if (n_indep > 0) + reader = casereader_create_counter (reader, &row, -1); + + for (; (c = casereader_read (reader)) != NULL; case_unref (c)) { - for (i = 0; i < n_all_vars; i++) - if (var_is_alpha (all_vars[i])) - cat_stored_values_create (all_vars[i]); - - reader = casereader_create_counter (reader, &row, -1); - - for (i = 0; i < n_inter; i++) - for (; (c = casereader_read (reader)) != NULL; case_unref (c)) - { - /* - Accumulate the covariance matrix. - */ - n_data++; - } - casereader_destroy (reader); + covariance_accumulate_pass1 (cov, c); } - else + for (; (c = casereader_read (r)) != NULL; case_unref (c)) { - msg (SE, gettext ("No valid data found. This command was skipped.")); + covariance_accumulate_pass2 (cov, c); } - free (indep_vars); + + covariance_destroy (cov); + casereader_destroy (reader); + casereader_destroy (r); + + free (numerics); + free (categoricals); free (lopts.get_indep_mean_std); casereader_destroy (input); diff --git a/src/language/stats/regression.q b/src/language/stats/regression.q index 2487b902..c7e8179a 100644 --- a/src/language/stats/regression.q +++ b/src/language/stats/regression.q @@ -21,11 +21,9 @@ #include #include #include - #include #include #include -#include #include #include #include @@ -39,8 +37,7 @@ #include #include #include -#include -#include +#include #include #include #include @@ -99,7 +96,7 @@ struct reg_trns { int n_trns; /* Number of transformations. */ int trns_id; /* Which trns is this one? */ - pspp_linreg_cache *c; /* Linear model for this trns. */ + linreg *c; /* Linear model for this trns. */ }; /* Variables used (both explanatory and response). @@ -112,31 +109,31 @@ static const struct variable **v_variables; static size_t n_variables; static bool run_regression (struct casereader *, struct cmd_regression *, - struct dataset *, pspp_linreg_cache **); + struct dataset *, linreg **); /* STATISTICS subcommand output functions. */ -static void reg_stats_r (pspp_linreg_cache *); -static void reg_stats_coeff (pspp_linreg_cache *); -static void reg_stats_anova (pspp_linreg_cache *); -static void reg_stats_outs (pspp_linreg_cache *); -static void reg_stats_zpp (pspp_linreg_cache *); -static void reg_stats_label (pspp_linreg_cache *); -static void reg_stats_sha (pspp_linreg_cache *); -static void reg_stats_ci (pspp_linreg_cache *); -static void reg_stats_f (pspp_linreg_cache *); -static void reg_stats_bcov (pspp_linreg_cache *); -static void reg_stats_ses (pspp_linreg_cache *); -static void reg_stats_xtx (pspp_linreg_cache *); -static void reg_stats_collin (pspp_linreg_cache *); -static void reg_stats_tol (pspp_linreg_cache *); -static void reg_stats_selection (pspp_linreg_cache *); -static void statistics_keyword_output (void (*)(pspp_linreg_cache *), - int, pspp_linreg_cache *); +static void reg_stats_r (linreg *, void *); +static void reg_stats_coeff (linreg *, void *); +static void reg_stats_anova (linreg *, void *); +static void reg_stats_outs (linreg *, void *); +static void reg_stats_zpp (linreg *, void *); +static void reg_stats_label (linreg *, void *); +static void reg_stats_sha (linreg *, void *); +static void reg_stats_ci (linreg *, void *); +static void reg_stats_f (linreg *, void *); +static void reg_stats_bcov (linreg *, void *); +static void reg_stats_ses (linreg *, void *); +static void reg_stats_xtx (linreg *, void *); +static void reg_stats_collin (linreg *, void *); +static void reg_stats_tol (linreg *, void *); +static void reg_stats_selection (linreg *, void *); +static void statistics_keyword_output (void (*)(linreg *, void *), + int, linreg *, void *); static void -reg_stats_r (pspp_linreg_cache * c) +reg_stats_r (linreg *c, void *aux UNUSED) { struct tab_table *t; int n_rows = 2; @@ -146,9 +143,9 @@ reg_stats_r (pspp_linreg_cache * c) double std_error; assert (c != NULL); - rsq = c->ssm / c->sst; - adjrsq = 1.0 - (1.0 - rsq) * (c->n_obs - 1.0) / (c->n_obs - c->n_indeps); - std_error = sqrt (pspp_linreg_mse (c)); + rsq = linreg_ssreg (c) / linreg_sst (c); + adjrsq = 1.0 - (1.0 - rsq) * (linreg_n_obs (c) - 1.0) / (linreg_n_obs (c) - linreg_n_coeffs (c)); + std_error = sqrt (linreg_mse (c)); t = tab_create (n_cols, n_rows); tab_box (t, TAL_2, TAL_2, -1, TAL_1, 0, 0, n_cols - 1, n_rows - 1); tab_hline (t, TAL_2, 0, n_cols - 1, 1); @@ -171,7 +168,7 @@ reg_stats_r (pspp_linreg_cache * c) Table showing estimated regression coefficients. */ static void -reg_stats_coeff (pspp_linreg_cache * c) +reg_stats_coeff (linreg * c, void *aux_) { size_t j; int n_cols = 7; @@ -184,11 +181,11 @@ reg_stats_coeff (pspp_linreg_cache * c) const char *label; const struct variable *v; - const union value *val; struct tab_table *t; + gsl_matrix *cov = aux_; assert (c != NULL); - n_rows = c->n_coeffs + 3; + n_rows = linreg_n_coeffs (c) + 3; t = tab_create (n_cols, n_rows); tab_headers (t, 2, 0, 1, 0); @@ -203,66 +200,54 @@ reg_stats_coeff (pspp_linreg_cache * c) tab_text (t, 5, 0, TAB_CENTER | TAT_TITLE, _("t")); tab_text (t, 6, 0, TAB_CENTER | TAT_TITLE, _("Significance")); tab_text (t, 1, 1, TAB_LEFT | TAT_TITLE, _("(Constant)")); - tab_double (t, 2, 1, 0, c->intercept, NULL); - std_err = sqrt (gsl_matrix_get (c->cov, 0, 0)); + tab_double (t, 2, 1, 0, linreg_intercept (c), NULL); + std_err = sqrt (gsl_matrix_get (linreg_cov (c), 0, 0)); tab_double (t, 3, 1, 0, std_err, NULL); tab_double (t, 4, 1, 0, 0.0, NULL); - t_stat = c->intercept / std_err; + t_stat = linreg_intercept (c) / std_err; tab_double (t, 5, 1, 0, t_stat, NULL); pval = 2 * gsl_cdf_tdist_Q (fabs (t_stat), 1.0); tab_double (t, 6, 1, 0, pval, NULL); - for (j = 0; j < c->n_coeffs; j++) + for (j = 0; j < linreg_n_coeffs (c); j++) { struct string tstr; ds_init_empty (&tstr); this_row = j + 2; - v = pspp_coeff_get_var (c->coeff[j], 0); + v = linreg_indep_var (c, j); label = var_to_string (v); /* Do not overwrite the variable's name. */ ds_put_cstr (&tstr, label); - if (var_is_alpha (v)) - { - /* - Append the value associated with this coefficient. - This makes sense only if we us the usual binary encoding - for that value. - */ - - val = pspp_coeff_get_value (c->coeff[j], v); - - var_append_value_name (v, val, &tstr); - } - tab_text (t, 1, this_row, TAB_CENTER, ds_cstr (&tstr)); /* Regression coefficients. */ - tab_double (t, 2, this_row, 0, c->coeff[j]->estimate, NULL); + tab_double (t, 2, this_row, 0, linreg_coeff (c, j), NULL); /* Standard error of the coefficients. */ - std_err = sqrt (gsl_matrix_get (c->cov, j + 1, j + 1)); + std_err = sqrt (gsl_matrix_get (linreg_cov (c), j + 1, j + 1)); tab_double (t, 3, this_row, 0, std_err, NULL); /* Standardized coefficient, i.e., regression coefficient if all variables had unit variance. */ - beta = pspp_coeff_get_sd (c->coeff[j]); - beta *= c->coeff[j]->estimate / c->depvar_std; + beta = sqrt (gsl_matrix_get (cov, j, j)); + beta *= linreg_coeff (c, j) / + sqrt (gsl_matrix_get (cov, cov->size1 - 1, cov->size2 - 1)); tab_double (t, 4, this_row, 0, beta, NULL); /* Test statistic for H0: coefficient is 0. */ - t_stat = c->coeff[j]->estimate / std_err; + t_stat = linreg_coeff (c, j) / std_err; tab_double (t, 5, this_row, 0, t_stat, NULL); /* P values for the test statistic above. */ pval = 2 * gsl_cdf_tdist_Q (fabs (t_stat), - (double) (c->n_obs - c->n_coeffs)); + (double) (linreg_n_obs (c) - linreg_n_coeffs (c))); tab_double (t, 6, this_row, 0, pval, NULL); ds_destroy (&tstr); } @@ -274,12 +259,12 @@ reg_stats_coeff (pspp_linreg_cache * c) Display the ANOVA table. */ static void -reg_stats_anova (pspp_linreg_cache * c) +reg_stats_anova (linreg * c, void *aux UNUSED) { int n_cols = 7; int n_rows = 4; - const double msm = c->ssm / c->dfm; - const double mse = pspp_linreg_mse (c); + const double msm = linreg_ssreg (c) / linreg_dfmodel (c); + const double mse = linreg_mse (c); const double F = msm / mse; const double pval = gsl_cdf_fdist_Q (F, c->dfm, c->dfe); @@ -306,9 +291,9 @@ reg_stats_anova (pspp_linreg_cache * c) tab_text (t, 1, 3, TAB_LEFT | TAT_TITLE, _("Total")); /* Sums of Squares */ - tab_double (t, 2, 1, 0, c->ssm, NULL); - tab_double (t, 2, 3, 0, c->sst, NULL); - tab_double (t, 2, 2, 0, c->sse, NULL); + tab_double (t, 2, 1, 0, linreg_ssreg (c), NULL); + tab_double (t, 2, 3, 0, linreg_sst (c), NULL); + tab_double (t, 2, 2, 0, linreg_sse (c), NULL); /* Degrees of freedom */ @@ -329,40 +314,40 @@ reg_stats_anova (pspp_linreg_cache * c) } static void -reg_stats_outs (pspp_linreg_cache * c) +reg_stats_outs (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_zpp (pspp_linreg_cache * c) +reg_stats_zpp (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_label (pspp_linreg_cache * c) +reg_stats_label (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_sha (pspp_linreg_cache * c) +reg_stats_sha (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_ci (pspp_linreg_cache * c) +reg_stats_ci (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_f (pspp_linreg_cache * c) +reg_stats_f (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_bcov (pspp_linreg_cache * c) +reg_stats_bcov (linreg * c, void *aux UNUSED) { int n_cols; int n_rows; @@ -384,13 +369,13 @@ reg_stats_bcov (pspp_linreg_cache * c) tab_vline (t, TAL_0, 1, 0, 0); tab_text (t, 0, 0, TAB_CENTER | TAT_TITLE, _("Model")); tab_text (t, 1, 1, TAB_CENTER | TAT_TITLE, _("Covariances")); - for (i = 0; i < c->n_coeffs; i++) + for (i = 0; i < linreg_n_coeffs (c); i++) { - const struct variable *v = pspp_coeff_get_var (c->coeff[i], 0); + const struct variable *v = linreg_indep_var (c, i); label = var_to_string (v); tab_text (t, 2, i, TAB_CENTER, label); tab_text (t, i + 2, 0, TAB_CENTER, label); - for (k = 1; k < c->n_coeffs; k++) + for (k = 1; k < linreg_n_coeffs (c); k++) { col = (i <= k) ? k : i; row = (i <= k) ? i : k; @@ -402,43 +387,43 @@ reg_stats_bcov (pspp_linreg_cache * c) tab_submit (t); } static void -reg_stats_ses (pspp_linreg_cache * c) +reg_stats_ses (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_xtx (pspp_linreg_cache * c) +reg_stats_xtx (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_collin (pspp_linreg_cache * c) +reg_stats_collin (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_tol (pspp_linreg_cache * c) +reg_stats_tol (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -reg_stats_selection (pspp_linreg_cache * c) +reg_stats_selection (linreg * c, void *aux UNUSED) { assert (c != NULL); } static void -statistics_keyword_output (void (*function) (pspp_linreg_cache *), - int keyword, pspp_linreg_cache * c) +statistics_keyword_output (void (*function) (linreg *, void *), + int keyword, linreg * c, void *aux) { if (keyword) { - (*function) (c); + (*function) (c, aux); } } static void -subcommand_statistics (int *keywords, pspp_linreg_cache * c) +subcommand_statistics (int *keywords, linreg * c, void *aux) { /* The order here must match the order in which the STATISTICS @@ -498,21 +483,21 @@ subcommand_statistics (int *keywords, pspp_linreg_cache * c) keywords[r] = 1; } } - statistics_keyword_output (reg_stats_r, keywords[r], c); - statistics_keyword_output (reg_stats_anova, keywords[anova], c); - statistics_keyword_output (reg_stats_coeff, keywords[coeff], c); - statistics_keyword_output (reg_stats_outs, keywords[outs], c); - statistics_keyword_output (reg_stats_zpp, keywords[zpp], c); - statistics_keyword_output (reg_stats_label, keywords[label], c); - statistics_keyword_output (reg_stats_sha, keywords[sha], c); - statistics_keyword_output (reg_stats_ci, keywords[ci], c); - statistics_keyword_output (reg_stats_f, keywords[f], c); - statistics_keyword_output (reg_stats_bcov, keywords[bcov], c); - statistics_keyword_output (reg_stats_ses, keywords[ses], c); - statistics_keyword_output (reg_stats_xtx, keywords[xtx], c); - statistics_keyword_output (reg_stats_collin, keywords[collin], c); - statistics_keyword_output (reg_stats_tol, keywords[tol], c); - statistics_keyword_output (reg_stats_selection, keywords[selection], c); + statistics_keyword_output (reg_stats_r, keywords[r], c, aux); + statistics_keyword_output (reg_stats_anova, keywords[anova], c, aux); + statistics_keyword_output (reg_stats_coeff, keywords[coeff], c, aux); + statistics_keyword_output (reg_stats_outs, keywords[outs], c, aux); + statistics_keyword_output (reg_stats_zpp, keywords[zpp], c, aux); + statistics_keyword_output (reg_stats_label, keywords[label], c, aux); + statistics_keyword_output (reg_stats_sha, keywords[sha], c, aux); + statistics_keyword_output (reg_stats_ci, keywords[ci], c, aux); + statistics_keyword_output (reg_stats_f, keywords[f], c, aux); + statistics_keyword_output (reg_stats_bcov, keywords[bcov], c, aux); + statistics_keyword_output (reg_stats_ses, keywords[ses], c, aux); + statistics_keyword_output (reg_stats_xtx, keywords[xtx], c, aux); + statistics_keyword_output (reg_stats_collin, keywords[collin], c, aux); + statistics_keyword_output (reg_stats_tol, keywords[tol], c, aux); + statistics_keyword_output (reg_stats_selection, keywords[selection], c, aux); } /* @@ -527,7 +512,7 @@ regression_trns_free (void *t_) if (t->trns_id == t->n_trns) { - result = pspp_linreg_cache_free (t->c); + result = linreg_free (t->c); } free (t); @@ -544,9 +529,10 @@ regression_trns_pred_proc (void *t_, struct ccase **c, size_t i; size_t n_vals; struct reg_trns *trns = t_; - pspp_linreg_cache *model; + linreg *model; union value *output = NULL; - const union value **vals = NULL; + const union value *tmp; + double *vals; const struct variable **vars = NULL; assert (trns != NULL); @@ -555,21 +541,20 @@ regression_trns_pred_proc (void *t_, struct ccase **c, assert (model->depvar != NULL); assert (model->pred != NULL); - vars = xnmalloc (model->n_coeffs, sizeof (*vars)); - n_vals = (*model->get_vars) (model, vars); - + vars = linreg_get_vars (model); + n_vals = linreg_n_coeffs (model); vals = xnmalloc (n_vals, sizeof (*vals)); *c = case_unshare (*c); + output = case_data_rw (*c, model->pred); for (i = 0; i < n_vals; i++) { - vals[i] = case_data (*c, vars[i]); + tmp = case_data (*c, vars[i]); + vals[i] = tmp->f; } - output->f = (*model->predict) ((const struct variable **) vars, - vals, model, n_vals); + output->f = linreg_predict (model, vals, n_vals); free (vals); - free (vars); return TRNS_CONTINUE; } @@ -583,10 +568,11 @@ regression_trns_resid_proc (void *t_, struct ccase **c, size_t i; size_t n_vals; struct reg_trns *trns = t_; - pspp_linreg_cache *model; + linreg *model; union value *output = NULL; - const union value **vals = NULL; - const union value *obs = NULL; + const union value *tmp; + double *vals = NULL; + double obs; const struct variable **vars = NULL; assert (trns != NULL); @@ -595,8 +581,8 @@ regression_trns_resid_proc (void *t_, struct ccase **c, assert (model->depvar != NULL); assert (model->resid != NULL); - vars = xnmalloc (model->n_coeffs, sizeof (*vars)); - n_vals = (*model->get_vars) (model, vars); + vars = linreg_get_vars (model); + n_vals = linreg_n_coeffs (model); vals = xnmalloc (n_vals, sizeof (*vals)); *c = case_unshare (*c); @@ -605,13 +591,14 @@ regression_trns_resid_proc (void *t_, struct ccase **c, for (i = 0; i < n_vals; i++) { - vals[i] = case_data (*c, vars[i]); + tmp = case_data (*c, vars[i]); + vals[i] = tmp->f; } - obs = case_data (*c, model->depvar); - output->f = (*model->residual) ((const struct variable **) vars, - vals, obs, model, n_vals); + tmp = case_data (*c, model->depvar); + obs = tmp->f; + output->f = linreg_residual (model, obs, vals, n_vals); free (vals); - free (vars); + return TRNS_CONTINUE; } @@ -643,7 +630,7 @@ reg_get_name (const struct dictionary *dict, char name[VAR_NAME_LEN], static void reg_save_var (struct dataset *ds, const char *prefix, trns_proc_func * f, - pspp_linreg_cache * c, struct variable **v, int n_trns) + linreg * c, struct variable **v, int n_trns) { struct dictionary *dict = dataset_dict (ds); static int trns_index = 1; @@ -663,14 +650,12 @@ reg_save_var (struct dataset *ds, const char *prefix, trns_proc_func * f, trns_index++; } static void -subcommand_save (struct dataset *ds, int save, pspp_linreg_cache ** models) +subcommand_save (struct dataset *ds, int save, linreg ** models) { - pspp_linreg_cache **lc; + linreg **lc; int n_trns = 0; int i; - assert (models != NULL); - if (save) { /* Count the number of transformations we will need. */ @@ -709,7 +694,7 @@ subcommand_save (struct dataset *ds, int save, pspp_linreg_cache ** models) { if (*lc != NULL) { - pspp_linreg_cache_free (*lc); + linreg_free (*lc); } } } @@ -720,7 +705,7 @@ cmd_regression (struct lexer *lexer, struct dataset *ds) { struct casegrouper *grouper; struct casereader *group; - pspp_linreg_cache **models; + linreg **models; bool ok; size_t i; @@ -813,72 +798,101 @@ identify_indep_vars (const struct variable **indep_vars, } return n_indep_vars; } - -/* Encode categorical variables. - Returns number of valid cases. */ -static int -prepare_categories (struct casereader *input, - const struct variable **vars, size_t n_vars, - struct moments_var *mom) +static double +fill_covariance (gsl_matrix *cov, struct covariance *all_cov, + const struct variable **vars, + size_t n_vars, const struct variable *dep_var, + const struct variable **all_vars, size_t n_all_vars, + double *means) { - int n_data; - struct ccase *c; size_t i; - - assert (vars != NULL); - assert (mom != NULL); - - for (i = 0; i < n_vars; i++) - if (var_is_alpha (vars[i])) - cat_stored_values_create (vars[i]); - - n_data = 0; - for (; (c = casereader_read (input)) != NULL; case_unref (c)) + size_t j; + size_t dep_subscript; + size_t *rows; + const gsl_matrix *ssizes; + const gsl_matrix *cm; + const gsl_matrix *mean_matrix; + const gsl_matrix *ssize_matrix; + double result = 0.0; + + cm = covariance_calculate_unnormalized (all_cov); + rows = xnmalloc (cov->size1 - 1, sizeof (*rows)); + + for (i = 0; i < n_all_vars; i++) { - /* - The second condition ensures the program will run even if - there is only one variable to act as both explanatory and - response. - */ - for (i = 0; i < n_vars; i++) + for (j = 0; j < n_vars; j++) + { + if (vars[j] == all_vars[i]) + { + rows[j] = i; + } + } + if (all_vars[i] == dep_var) { - const union value *val = case_data (c, vars[i]); - if (var_is_alpha (vars[i])) - cat_value_update (vars[i], val); - else - moments1_add (mom[i].m, val->f, 1.0); + dep_subscript = i; } - n_data++; } - casereader_destroy (input); - - return n_data; -} - -static void -coeff_init (pspp_linreg_cache * c, struct design_matrix *dm) -{ - c->coeff = xnmalloc (dm->m->size2, sizeof (*c->coeff)); - pspp_coeff_init (c->coeff, dm); + mean_matrix = covariance_moments (all_cov, MOMENT_MEAN); + ssize_matrix = covariance_moments (all_cov, MOMENT_NONE); + for (i = 0; i < cov->size1 - 1; i++) + { + means[i] = gsl_matrix_get (mean_matrix, rows[i], 0) + / gsl_matrix_get (ssize_matrix, rows[i], 0); + for (j = 0; j < cov->size2 - 1; j++) + { + gsl_matrix_set (cov, i, j, gsl_matrix_get (cm, rows[i], rows[j])); + gsl_matrix_set (cov, j, i, gsl_matrix_get (cm, rows[j], rows[i])); + } + } + means[cov->size1 - 1] = gsl_matrix_get (mean_matrix, dep_subscript, 0) + / gsl_matrix_get (ssize_matrix, dep_subscript, 0); + ssizes = covariance_moments (all_cov, MOMENT_NONE); + result = gsl_matrix_get (ssizes, dep_subscript, rows[0]); + for (i = 0; i < cov->size1 - 1; i++) + { + gsl_matrix_set (cov, i, cov->size1 - 1, + gsl_matrix_get (cm, rows[i], dep_subscript)); + gsl_matrix_set (cov, cov->size1 - 1, i, + gsl_matrix_get (cm, rows[i], dep_subscript)); + if (result > gsl_matrix_get (ssizes, rows[i], dep_subscript)) + { + result = gsl_matrix_get (ssizes, rows[i], dep_subscript); + } + } + gsl_matrix_set (cov, cov->size1 - 1, cov->size1 - 1, + gsl_matrix_get (cm, dep_subscript, dep_subscript)); + free (rows); + return result; } static bool run_regression (struct casereader *input, struct cmd_regression *cmd, - struct dataset *ds, pspp_linreg_cache **models) + struct dataset *ds, linreg **models) { size_t i; int n_indep = 0; int k; + double n_data; + double *means; struct ccase *c; - const struct variable **indep_vars; - struct design_matrix *X; - struct moments_var *mom; - gsl_vector *Y; - - pspp_linreg_opts lopts; + struct covariance *cov; + const struct variable **vars; + const struct variable *dep_var; + struct casereader *reader; + const struct dictionary *dict; + gsl_matrix *this_cm; assert (models != NULL); + for (i = 0; i < n_variables; i++) + { + if (!var_is_numeric (v_variables[i])) + { + msg (SE, _("REGRESSION requires numeric variables.")); + return false; + } + } + c = casereader_peek (input, 0); if (c == NULL) { @@ -888,125 +902,75 @@ run_regression (struct casereader *input, struct cmd_regression *cmd, output_split_file_values (ds, c); case_unref (c); + dict = dataset_dict (ds); if (!v_variables) { - dict_get_vars (dataset_dict (ds), &v_variables, &n_variables, 0); - } - - for (i = 0; i < cmd->n_dependent; i++) - { - if (!var_is_numeric (cmd->v_dependent[i])) - { - msg (SE, _("Dependent variable must be numeric.")); - return false; - } + dict_get_vars (dict, &v_variables, &n_variables, 0); } - - mom = xnmalloc (n_variables, sizeof (*mom)); - for (i = 0; i < n_variables; i++) + vars = xnmalloc (n_variables, sizeof (*vars)); + means = xnmalloc (n_variables, sizeof (*means)); + cov = covariance_1pass_create (n_variables, v_variables, + dict_get_weight (dict), MV_ANY); + + reader = casereader_clone (input); + reader = casereader_create_filter_missing (reader, v_variables, n_variables, + MV_ANY, NULL, NULL); + for (; (c = casereader_read (reader)) != NULL; case_unref (c)) { - (mom + i)->m = moments1_create (MOMENT_VARIANCE); - (mom + i)->v = v_variables[i]; + covariance_accumulate (cov, c); } - lopts.get_depvar_mean_std = 1; - - - indep_vars = xnmalloc (n_variables, sizeof *indep_vars); - + for (k = 0; k < cmd->n_dependent; k++) { - const struct variable *dep_var; - struct casereader *reader; - casenumber row; - struct ccase *c; - size_t n_data; /* Number of valid cases. */ - dep_var = cmd->v_dependent[k]; - n_indep = identify_indep_vars (indep_vars, dep_var); - reader = casereader_clone (input); - reader = casereader_create_filter_missing (reader, indep_vars, n_indep, - MV_ANY, NULL, NULL); - reader = casereader_create_filter_missing (reader, &dep_var, 1, - MV_ANY, NULL, NULL); - n_data = prepare_categories (casereader_clone (reader), - indep_vars, n_indep, mom); - - if ((n_data > 0) && (n_indep > 0)) + n_indep = identify_indep_vars (vars, dep_var); + + this_cm = gsl_matrix_alloc (n_indep + 1, n_indep + 1); + n_data = fill_covariance (this_cm, cov, vars, n_indep, + dep_var, v_variables, n_variables, means); + models[k] = linreg_alloc (dep_var, (const struct variable **) vars, + n_data, n_indep); + models[k]->depvar = dep_var; + for (i = 0; i < n_indep; i++) + { + linreg_set_indep_variable_mean (models[k], i, means[i]); + } + linreg_set_depvar_mean (models[k], means[i]); + /* + For large data sets, use QR decomposition. + */ + if (n_data > sqrt (n_indep) && n_data > REG_LARGE_DATA) + { + models[k]->method = LINREG_QR; + } + + if (n_data > 0) { - Y = gsl_vector_alloc (n_data); - X = - design_matrix_create (n_indep, - (const struct variable **) indep_vars, - n_data); - lopts.get_indep_mean_std = xnmalloc (X->m->size2, sizeof (int)); - for (i = 0; i < X->m->size2; i++) - { - lopts.get_indep_mean_std[i] = 1; - } - models[k] = pspp_linreg_cache_alloc (dep_var, (const struct variable **) indep_vars, - X->m->size1, n_indep); - models[k]->depvar = dep_var; - /* - For large data sets, use QR decomposition. - */ - if (n_data > sqrt (n_indep) && n_data > REG_LARGE_DATA) - { - models[k]->method = PSPP_LINREG_QR; - } - - /* - The second pass fills the design matrix. - */ - reader = casereader_create_counter (reader, &row, -1); - for (; (c = casereader_read (reader)) != NULL; case_unref (c)) - { - for (i = 0; i < n_indep; ++i) - { - const struct variable *v = indep_vars[i]; - const union value *val = case_data (c, v); - if (var_is_alpha (v)) - design_matrix_set_categorical (X, row, v, val); - else - design_matrix_set_numeric (X, row, v, val); - } - gsl_vector_set (Y, row, case_num (c, dep_var)); - } - /* - Now that we know the number of coefficients, allocate space - and store pointers to the variables that correspond to the - coefficients. - */ - coeff_init (models[k], X); - /* - Find the least-squares estimates and other statistics. - */ - pspp_linreg ((const gsl_vector *) Y, X, &lopts, models[k]); - + Find the least-squares estimates and other statistics. + */ + linreg_fit (this_cm, models[k]); + if (!taint_has_tainted_successor (casereader_get_taint (input))) { - subcommand_statistics (cmd->a_statistics, models[k]); + subcommand_statistics (cmd->a_statistics, models[k], this_cm); } - - gsl_vector_free (Y); - design_matrix_destroy (X); - free (lopts.get_indep_mean_std); } else { msg (SE, gettext ("No valid data found. This command was skipped.")); + linreg_free (models[k]); + models[k] = NULL; } - casereader_destroy (reader); } - for (i = 0; i < n_variables; i++) - { - moments1_destroy ((mom + i)->m); - } - free (mom); - free (indep_vars); + + casereader_destroy (reader); + free (vars); + free (means); casereader_destroy (input); - + covariance_destroy (cov); + return true; } diff --git a/src/math/automake.mk b/src/math/automake.mk index a17919e4..b443d9f9 100644 --- a/src/math/automake.mk +++ b/src/math/automake.mk @@ -1,6 +1,5 @@ ## Process this file with automake to produce Makefile.in -*- makefile -*- -include $(top_srcdir)/src/math/ts/automake.mk noinst_LTLIBRARIES += src/math/libpspp-math.la @@ -11,15 +10,12 @@ src_math_libpspp_math_la_SOURCES = \ src/math/chart-geometry.c \ src/math/chart-geometry.h \ src/math/box-whisker.c src/math/box-whisker.h \ - src/math/coefficient.c \ - src/math/coefficient.h \ + src/math/categoricals.h \ + src/math/categoricals.c \ src/math/covariance.c \ src/math/covariance.h \ - src/math/covariance-matrix.c \ - src/math/covariance-matrix.h \ src/math/correlation.c \ src/math/correlation.h \ - src/math/design-matrix.c src/math/design-matrix.h \ src/math/extrema.c src/math/extrema.h \ src/math/group.c src/math/group.h \ src/math/group-proc.h \ diff --git a/src/math/categoricals.c b/src/math/categoricals.c new file mode 100644 index 00000000..33e3b51c --- /dev/null +++ b/src/math/categoricals.c @@ -0,0 +1,386 @@ +/* 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 "categoricals.h" + +#include +#include +#include +#include +#include +#include + +#include + +struct value_node +{ + struct hmap_node node; /* Node in hash map. */ + union value value; /* The value being labeled. */ + double cc; /* The total of the weights of cases with this value */ + int subscript; /* A zero based integer, unique within the variable. + Can be used as an index into an array */ +}; + + +struct var_params +{ + /* A map indexed by a union values */ + struct hmap map; + + const struct variable *var; + + int base_subscript; + + /* The number of distinct values of this variable */ + int n_cats; + + /* A map of values indexed by subscript */ + const struct value_node **reverse_value_map; + + /* Total of the weights of this variable */ + double cc; +}; + + +struct categoricals +{ + /* The weight variable */ + const struct variable *wv; + + + /* An array of var_params */ + struct var_params *vp; + + /* The size of VP. (ie, the number of variables involved.) */ + size_t n_vp; + + /* The number of categorical variables which contain entries. + In the absence of missing values, this will be equal to N_VP */ + size_t n_vars; + + /* A map to enable the lookup of variables indexed by subscript */ + int *reverse_variable_map; + + size_t n_cats_total; + + struct pool *pool; + + /* Missing values to be excluded */ + enum mv_class exclude; +}; + + +void +categoricals_destroy ( struct categoricals *cat) +{ + int i; + if (cat != NULL) + { + for (i = 0 ; i < cat->n_vp; ++i) + hmap_destroy (&cat->vp[i].map); + + pool_destroy (cat->pool); + free (cat); + } +} + + +void +categoricals_dump (const struct categoricals *cat) +{ + int v; + + for (v = 0 ; v < cat->n_vp; ++v) + { + const struct var_params *vp = &cat->vp[v]; + const struct hmap *m = &vp->map; + struct hmap_node *node ; + int x; + + printf ("\n%s (%d) CC=%g n_cats=%d:\n", + var_get_name (vp->var), vp->base_subscript, vp->cc, vp->n_cats); + + printf ("Reverse map\n"); + for (x = 0 ; x < vp->n_cats; ++x) + { + struct string s; + const struct value_node *vn = vp->reverse_value_map[x]; + ds_init_empty (&s); + var_append_value_name (vp->var, &vn->value, &s); + printf ("Value for %d is %s\n", x, ds_cstr(&s)); + ds_destroy (&s); + } + + printf ("\nForward map\n"); + for (node = hmap_first (m); node; node = hmap_next (m, node)) + { + struct string s; + ds_init_empty (&s); + const struct value_node *vn = HMAP_DATA (node, struct value_node, node); + var_append_value_name (vp->var, &vn->value, &s); + printf ("Value: %s; Index %d; CC %g\n", + ds_cstr (&s), + vn->subscript, vn->cc); + ds_destroy (&s); + } + } + + assert (cat->n_vars <= cat->n_vp); + + printf ("\n"); + printf ("Number of categorical variables: %d\n", cat->n_vp); + printf ("Number of non-empty categorical variables: %d\n", cat->n_vars); + printf ("Total number of categories: %d\n", cat->n_cats_total); + + printf ("\nReverse variable map:\n"); + + for (v = 0 ; v < cat->n_cats_total - cat->n_vars; ++v) + printf ("%d ", cat->reverse_variable_map[v]); + printf ("\n"); +} + + + +static struct value_node * +lookup_value (const struct hmap *map, const struct variable *var, const union value *val) +{ + struct value_node *foo; + unsigned int width = var_get_width (var); + size_t hash = value_hash (val, width, 0); + + HMAP_FOR_EACH_WITH_HASH (foo, struct value_node, node, hash, map) + { + if (value_equal (val, &foo->value, width)) + break; + + fprintf (stderr, "Warning: Hash table collision\n"); + } + + return foo; +} + + + +struct categoricals * +categoricals_create (const struct variable **v, size_t n_vars, + const struct variable *wv, enum mv_class exclude) +{ + size_t i; + struct categoricals *cat = xmalloc (sizeof *cat); + + cat->n_vp = n_vars; + cat->wv = wv; + cat->n_cats_total = 0; + cat->n_vars = 0; + cat->reverse_variable_map = NULL; + cat->pool = pool_create (); + cat->exclude = exclude; + + cat->vp = pool_calloc (cat->pool, cat->n_vp, sizeof *cat->vp); + + for (i = 0 ; i < cat->n_vp; ++i) + { + hmap_init (&cat->vp[i].map); + cat->vp[i].var = v[i]; + } + + return cat; +} + + + +void +categoricals_update (struct categoricals *cat, const struct ccase *c) +{ + size_t i; + + const double weight = cat->wv ? case_data (c, cat->wv)->f : 1.0; + + assert (NULL == cat->reverse_variable_map); + + for (i = 0 ; i < cat->n_vp; ++i) + { + const struct variable *var = cat->vp[i].var; + unsigned int width = var_get_width (var); + const union value *val = case_data (c, var); + size_t hash; + struct value_node *node ; + + if ( var_is_value_missing (var, val, cat->exclude)) + continue; + + hash = value_hash (val, width, 0); + node = lookup_value (&cat->vp[i].map, var, val); + + if ( NULL == node) + { + node = pool_malloc (cat->pool, sizeof *node); + + value_init (&node->value, width); + value_copy (&node->value, val, width); + node->cc = 0.0; + + hmap_insert (&cat->vp[i].map, &node->node, hash); + cat->n_cats_total++; + + if ( 0 == cat->vp[i].n_cats) + cat->n_vars++; + + node->subscript = cat->vp[i].n_cats++ ; + } + + node->cc += weight; + cat->vp[i].cc += weight; + } +} + +/* Return the number of categories (distinct values) for variable N */ +size_t +categoricals_n_count (const struct categoricals *cat, size_t n) +{ + return hmap_count (&cat->vp[n].map); +} + + +/* Return the total number of categories */ +size_t +categoricals_total (const struct categoricals *cat) +{ + return cat->n_cats_total; +} + + +/* This function must be called *before* any call to categoricals_get_*_by subscript an + *after* all calls to categoricals_update */ +void +categoricals_done (struct categoricals *cat) +{ + /* Implementation Note: Whilst this function is O(n) in cat->n_cats_total, in most + uses it will be more efficient that using a tree based structure, since it + is called only once, and means that subsequent lookups will be O(1). + + 1 call of O(n) + 10^9 calls of O(1) is better than 10^9 calls of O(log n). + */ + int v; + int idx = 0; + cat->reverse_variable_map = pool_calloc (cat->pool, + cat->n_cats_total - cat->n_vars, + sizeof *cat->reverse_variable_map); + + for (v = 0 ; v < cat->n_vp; ++v) + { + int i; + struct var_params *vp = &cat->vp[v]; + int n_cats_total = categoricals_n_count (cat, v); + struct hmap_node *node ; + + vp->reverse_value_map = pool_calloc (cat->pool, n_cats_total, sizeof *vp->reverse_value_map); + + vp->base_subscript = idx; + + for (node = hmap_first (&vp->map); node; node = hmap_next (&vp->map, node)) + { + const struct value_node *vn = HMAP_DATA (node, struct value_node, node); + vp->reverse_value_map[vn->subscript] = vn; + } + + /* Populate the reverse variable map. + This implementation considers the first value of each categorical variable + as the basis. Therefore, this loop starts from 1 instead of 0 */ + for (i = 1; i < vp->n_cats; ++i) + cat->reverse_variable_map[idx++] = v; + } + + assert (cat->n_vars <= cat->n_vp); +} + + +static int +reverse_variable_lookup (const struct categoricals *cat, int subscript) +{ + assert (cat->reverse_variable_map); + assert (subscript >= 0); + assert (subscript < cat->n_cats_total - cat->n_vars); + + return cat->reverse_variable_map[subscript]; +} + + +/* Return the categorical variable corresponding to SUBSCRIPT */ +const struct variable * +categoricals_get_variable_by_subscript (const struct categoricals *cat, int subscript) +{ + int index = reverse_variable_lookup (cat, subscript); + + return cat->vp[index].var; +} + +/* Return the value corresponding to SUBSCRIPT */ +const union value * +categoricals_get_value_by_subscript (const struct categoricals *cat, int subscript) +{ + int vindex = reverse_variable_lookup (cat, subscript); + const struct var_params *vp = &cat->vp[vindex]; + const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript]; + + return &vn->value; +} + + +double +categoricals_get_weight_by_subscript (const struct categoricals *cat, int subscript) +{ + int vindex = reverse_variable_lookup (cat, subscript); + const struct var_params *vp = &cat->vp[vindex]; + + return vp->cc; +} + +double +categoricals_get_sum_by_subscript (const struct categoricals *cat, int subscript) +{ + int vindex = reverse_variable_lookup (cat, subscript); + const struct var_params *vp = &cat->vp[vindex]; + + const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript]; + return vn->cc; +} + + +/* Returns unity if the value in case C at SUBSCRIPT is equal to the category + for that subscript */ +double +categoricals_get_binary_by_subscript (const struct categoricals *cat, int subscript, + const struct ccase *c) +{ + const struct variable *var = categoricals_get_variable_by_subscript (cat, subscript); + int width = var_get_width (var); + + const union value *val = case_data (c, var); + + return value_equal (val, categoricals_get_value_by_subscript (cat, subscript), width); +} + + +size_t +categoricals_get_n_variables (const struct categoricals *cat) +{ + return cat->n_vars; +} diff --git a/src/math/categoricals.h b/src/math/categoricals.h new file mode 100644 index 00000000..2f86ce1d --- /dev/null +++ b/src/math/categoricals.h @@ -0,0 +1,70 @@ +/* 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 . */ + + +#ifndef _CATEGORICALS__ +#define _CATEGORICALS__ + +#include +#include + +struct categoricals; +struct variable; +struct ccase; + +union value ; + +struct categoricals *categoricals_create (const struct variable **v, size_t n_vars, + const struct variable *wv, enum mv_class exclude); + +void categoricals_destroy (struct categoricals *); + +void categoricals_update (struct categoricals *cat, const struct ccase *c); + + +/* Return the number of categories (distinct values) for variable N */ +size_t categoricals_n_count (const struct categoricals *cat, size_t n); + + +/* Return the total number of categories */ +size_t categoricals_total (const struct categoricals *cat); + +/* + Return the total number of variables which participated in these categoricals. + Due to the possibility of missing values, this is NOT necessarily + equal to the number of variables passed in when the object was + created. +*/ +size_t categoricals_get_n_variables (const struct categoricals *cat); + +void categoricals_done (struct categoricals *cat); + +const struct variable * categoricals_get_variable_by_subscript (const struct categoricals *cat, int subscript); + +const union value * categoricals_get_value_by_subscript (const struct categoricals *cat, int subscript); + +double categoricals_get_weight_by_subscript (const struct categoricals *cat, int subscript); + +double categoricals_get_sum_by_subscript (const struct categoricals *cat, int subscript); + +double categoricals_get_binary_by_subscript (const struct categoricals *cat, int subscript, + const struct ccase *c); + + + + + +#endif diff --git a/src/math/covariance-matrix.c b/src/math/covariance-matrix.c deleted file mode 100644 index 1a72644f..00000000 --- a/src/math/covariance-matrix.c +++ /dev/null @@ -1,1016 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2008, 2009, 2010 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 . */ - -/* - Create and update the values in the covariance matrix. -*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - Structure used to accumulate the covariance matrix in a single data - pass. Before passing the data, we do not know how many categories - there are in each categorical variable. Therefore we do not know the - size of the covariance matrix. To get around this problem, we - accumulate the elements of the covariance matrix in pointers to - COVARIANC_ACCUMULATOR. These values are then used to populate - the covariance matrix. - */ -struct covariance_accumulator -{ - const struct variable *v1; - const struct variable *v2; - const union value *val1; - const union value *val2; - double dot_product; - double sum1; - double sum2; - double ssize; -}; - - - -struct covariance_matrix -{ - struct design_matrix *cov; - struct design_matrix *ssize; - struct hsh_table *ca; - struct moments1 **m1; - struct moments **m; - const struct variable **v_variables; - const struct interaction_variable **interactions; - size_t n_variables; - size_t n_intr; - int n_pass; - int missing_handling; - enum mv_class missing_value; - void (*accumulate) (struct covariance_matrix *, const struct ccase *, - const struct interaction_variable **, size_t); - void (*update_moments) (struct covariance_matrix *, size_t, double); -}; - - - -static struct hsh_table *covariance_hsh_create (size_t *); -static hsh_hash_func covariance_accumulator_hash; -static unsigned int hash_numeric_alpha (const struct variable *, - const struct variable *, - const union value *, size_t); -static hsh_compare_func covariance_accumulator_compare; -static hsh_free_func covariance_accumulator_free; -static void update_moments1 (struct covariance_matrix *, size_t, double); -static void update_moments2 (struct covariance_matrix *, size_t, double); -static struct covariance_accumulator *get_new_covariance_accumulator (const - struct - variable - *, - const - struct - variable - *, - const - union - value *, - const - union - value - *); -static void covariance_accumulate_listwise (struct covariance_matrix *, - const struct ccase *, - const struct interaction_variable **, - size_t); -static void covariance_accumulate_pairwise (struct covariance_matrix *, - const struct ccase *, - const struct interaction_variable **, - size_t); - -struct covariance_matrix * -covariance_matrix_init (size_t n_variables, - const struct variable *v_variables[], int n_pass, - int missing_handling, enum mv_class missing_value) -{ - size_t i; - struct covariance_matrix *result = NULL; - - result = xmalloc (sizeof (*result)); - result->cov = NULL; - result->n_variables = n_variables; - result->ca = covariance_hsh_create (&result->n_variables); - result->m = NULL; - result->m1 = NULL; - result->n_intr = 0; - result->missing_handling = missing_handling; - result->missing_value = missing_value; - result->accumulate = (result->missing_handling == LISTWISE) ? - covariance_accumulate_listwise : covariance_accumulate_pairwise; - if (n_pass == ONE_PASS) - { - result->update_moments = update_moments1; - result->m1 = xnmalloc (n_variables, sizeof (*result->m1)); - for (i = 0; i < n_variables; i++) - { - result->m1[i] = moments1_create (MOMENT_MEAN); - } - } - else - { - result->update_moments = update_moments2; - result->m = xnmalloc (n_variables, sizeof (*result->m)); - for (i = 0; i < n_variables; i++) - { - result->m[i] = moments_create (MOMENT_MEAN); - } - } - result->v_variables = v_variables; - - result->n_pass = n_pass; - - return result; -} -void -covariance_interaction_set (struct covariance_matrix *cov, - const struct interaction_variable **intr, size_t n_intr) -{ - cov->interactions = intr; - cov->n_intr = n_intr; -} - -static size_t -get_n_rows (size_t n_variables, const struct variable *v_variables[]) -{ - size_t i; - size_t result = 0; - for (i = 0; i < n_variables; i++) - { - if (var_is_numeric (v_variables[i])) - { - result++; - } - else if (var_is_alpha (v_variables[i])) - { - size_t n_categories = cat_get_n_categories (v_variables[i]); - result += n_categories - 1; - } - } - return result; -} -/* - The covariances are stored in a DESIGN_MATRIX structure. - */ -struct design_matrix * -covariance_matrix_create (size_t n_variables, - const struct variable *v_variables[]) -{ - size_t n_rows = get_n_rows (n_variables, v_variables); - return design_matrix_create (n_variables, v_variables, n_rows); -} - -static size_t -get_n_rows_s (const struct variable *var) -{ - size_t result = 0; - if (var_is_numeric (var)) - { - result++; - } - else - { - result += cat_get_n_categories (var) - 1; - } - return result; -} -static struct design_matrix * -covariance_matrix_create_s (struct covariance_matrix *cov) -{ - struct variable **v_variables; - size_t n_variables; - size_t n_rows = 0; - size_t i; - size_t j; - - n_variables = cov->n_variables + cov->n_intr; - v_variables = xnmalloc (n_variables, sizeof (*v_variables)); - for (i = 0; i < cov->n_variables; i++) - { - v_variables[i] = cov->v_variables[i]; - n_rows += get_n_rows_s (v_variables[i]); - } - for (j = 0; j < cov->n_intr; j++) - { - v_variables[i + j] = interaction_get_variable (cov->interactions[j]); - n_rows += get_n_rows_s (v_variables[i]); - } - return design_matrix_create (n_variables, v_variables, n_rows); -} - -static void -update_moments1 (struct covariance_matrix *cov, size_t i, double x) -{ - assert (cov->m1 != NULL); - moments1_add (cov->m1[i], x, 1.0); -} - -static void -update_moments2 (struct covariance_matrix *cov, size_t i, double x) -{ - assert (cov->m != NULL); - moments_pass_one (cov->m[i], x, 1.0); -} - -void -covariance_matrix_destroy (struct covariance_matrix *cov) -{ - size_t i; - - assert (cov != NULL); - design_matrix_destroy (cov->cov); - design_matrix_destroy (cov->ssize); - hsh_destroy (cov->ca); - if (cov->n_pass == ONE_PASS) - { - for (i = 0; i < cov->n_variables; i++) - { - moments1_destroy (cov->m1[i]); - } - free (cov->m1); - } - else - { - for (i = 0; i < cov->n_variables; i++) - { - moments_destroy (cov->m[i]); - } - free (cov->m); - } -} - -/* - Update the covariance matrix with the new entries, assuming that ROW - corresponds to a categorical variable and V2 is numeric. - */ -static void -covariance_update_categorical_numeric (struct design_matrix *cov, double mean, - size_t row, - const struct variable *v2, double x, - const union value *val2) -{ - size_t col; - double tmp; - - assert (var_is_numeric (v2)); - - col = design_matrix_var_to_column (cov, v2); - assert (val2 != NULL); - tmp = design_matrix_get_element (cov, row, col); - design_matrix_set_element (cov, row, col, (val2->f - mean) * x + tmp); - design_matrix_set_element (cov, col, row, (val2->f - mean) * x + tmp); -} -static void -column_iterate (struct design_matrix *cov, const struct variable *v, - double ssize, double x, const union value *val1, size_t row) -{ - int width = var_get_width (v); - size_t col; - size_t i; - double y; - double tmp; - const union value *tmp_val; - - col = design_matrix_var_to_column (cov, v); - for (i = 0; i < cat_get_n_categories (v) - 1; i++) - { - col += i; - y = -1.0 * cat_get_category_count (i, v) / ssize; - tmp_val = cat_subscript_to_value (i, v); - if (!value_equal (tmp_val, val1, width)) - { - y += -1.0; - } - tmp = design_matrix_get_element (cov, row, col); - design_matrix_set_element (cov, row, col, x * y + tmp); - design_matrix_set_element (cov, col, row, x * y + tmp); - } -} - -/* - Call this function in the second data pass. The central moments are - MEAN1 and MEAN2. Any categorical variables should already have their - values summarized in in its OBS_VALS element. - */ -void -covariance_pass_two (struct design_matrix *cov, double mean1, double mean2, - double ssize, const struct variable *v1, - const struct variable *v2, const union value *val1, - const union value *val2) -{ - size_t row; - size_t col; - size_t i; - double x; - const union value *tmp_val; - - if (var_is_alpha (v1)) - { - row = design_matrix_var_to_column (cov, v1); - for (i = 0; i < cat_get_n_categories (v1) - 1; i++) - { - row += i; - x = -1.0 * cat_get_category_count (i, v1) / ssize; - tmp_val = cat_subscript_to_value (i, v1); - if (!value_equal (tmp_val, val1, var_get_width (v1))) - { - x += 1.0; - } - if (var_is_numeric (v2)) - { - covariance_update_categorical_numeric (cov, mean2, row, - v2, x, val2); - } - else - { - column_iterate (cov, v1, ssize, x, val1, row); - column_iterate (cov, v2, ssize, x, val2, row); - } - } - } - else if (var_is_alpha (v2)) - { - /* - Reverse the orders of V1, V2, etc. and put ourselves back - in the previous IF scope. - */ - covariance_pass_two (cov, mean2, mean1, ssize, v2, v1, val2, val1); - } - else - { - /* - Both variables are numeric. - */ - row = design_matrix_var_to_column (cov, v1); - col = design_matrix_var_to_column (cov, v2); - x = (val1->f - mean1) * (val2->f - mean2); - x += design_matrix_get_element (cov, col, row); - design_matrix_set_element (cov, row, col, x); - design_matrix_set_element (cov, col, row, x); - } -} - -static unsigned int -covariance_accumulator_hash (const void *h, const void *aux) -{ - struct covariance_accumulator *ca = (struct covariance_accumulator *) h; - size_t *n_vars = (size_t *) aux; - const struct variable *v_min; - const struct variable *v_max; - const union value *val_min; - const union value *val_max; - - /* - Order everything by the variables' addresses. This ensures we get the - same key regardless of the order in which the variables are stored - and passed around. - */ - if (ca->v1 < ca->v2) - { - v_min = ca->v1; - v_max = ca->v2; - val_min = ca->val1; - val_max = ca->val2; - } - else - { - v_min = ca->v2; - v_max = ca->v2; - val_min = ca->val2; - val_max = ca->val1; - } - - if (var_is_numeric (v_max) && var_is_numeric (v_min)) - { - return hash_pointer (v_min, hash_pointer (v_max, 0)); - } - if (var_is_numeric (v_max) && var_is_alpha (v_min)) - { - return hash_numeric_alpha (v_max, v_min, val_min, *n_vars); - } - if (var_is_alpha (v_max) && var_is_numeric (v_min)) - { - return (hash_numeric_alpha (v_min, v_max, val_max, *n_vars)); - } - if (var_is_alpha (v_max) && var_is_alpha (v_min)) - { - unsigned hash = value_hash (val_max, var_get_width (v_max), 0); - hash = value_hash (val_min, var_get_width (v_min), hash); - hash = hash_pointer (v_min, hash); - return hash_pointer (v_max, hash); - } - return -1u; -} - -/* - Make a hash table consisting of struct covariance_accumulators. - This allows the accumulation of the elements of a covariance matrix - in a single data pass. Call covariance_accumulate () for each case - in the data. - */ -static struct hsh_table * -covariance_hsh_create (size_t *n_vars) -{ - return hsh_create (*n_vars * *n_vars, covariance_accumulator_compare, - covariance_accumulator_hash, covariance_accumulator_free, - n_vars); -} - -static void -covariance_accumulator_free (void *c_, const void *aux UNUSED) -{ - struct covariance_accumulator *c = c_; - assert (c != NULL); - free (c); -} - -static int -ordered_match_nodes (const struct covariance_accumulator *c, const struct variable *v1, - const struct variable *v2, const union value *val1, const union value *val2) -{ - return (v1 != c->v1 - || v2 != c->v2 - || (var_is_alpha (v1) - && !value_equal (val1, c->val1, var_get_width (v1))) - || (var_is_alpha (v2) - && !value_equal (val2, c->val2, var_get_width (v2)))); -} - -/* - Hash comparison. Returns 0 for a match, or a non-zero int - otherwise. The sign of a non-zero return value *should* indicate the - position of C relative to the covariance_accumulator described by - the other arguments. But for now, it just returns 1 for any - non-match. This should be changed when someone figures out how to - compute a sensible sign for the return value. - */ -static int -match_nodes (const struct covariance_accumulator *c, - const struct variable *v1, const struct variable *v2, - const union value *val1, const union value *val2) -{ - return (ordered_match_nodes (c, v1, v2, val1, val2) - && ordered_match_nodes (c, v2, v1, val2, val1)); -} - -/* - This function is meant to be used as a comparison function for - a struct hsh_table in src/libpspp/hash.c. -*/ -static int -covariance_accumulator_compare (const void *a1_, const void *a2_, - const void *aux UNUSED) -{ - const struct covariance_accumulator *a1 = a1_; - const struct covariance_accumulator *a2 = a2_; - - if (a1 == NULL && a2 == NULL) - return 0; - - if (a1 == NULL || a2 == NULL) - return 1; - - return match_nodes (a1, a2->v1, a2->v2, a2->val1, a2->val2); -} - -static unsigned int -hash_numeric_alpha (const struct variable *v1, const struct variable *v2, - const union value *val, size_t n_vars) -{ - unsigned int result = -1u; - if (var_is_numeric (v1) && var_is_alpha (v2)) - { - result = hash_pointer (v1, 0); - result = hash_pointer (v2, result); - result = value_hash (val, var_get_width (v2), result); - } - else if (var_is_alpha (v1) && var_is_numeric (v2)) - { - result = hash_numeric_alpha (v2, v1, val, n_vars); - } - return result; -} - - -static double -update_product (const struct variable *v1, const struct variable *v2, - const union value *val1, const union value *val2) -{ - assert (v1 != NULL); - assert (v2 != NULL); - assert (val1 != NULL); - assert (val2 != NULL); - if (var_is_alpha (v1) && var_is_alpha (v2)) - { - return 1.0; - } - if (var_is_numeric (v1) && var_is_numeric (v2)) - { - return (val1->f * val2->f); - } - if (var_is_numeric (v1) && var_is_alpha (v2)) - { - return val1->f; - } - if (var_is_numeric (v2) && var_is_alpha (v1)) - { - return val2->f; - } - else - { - return 0.0; - } -} -static double -update_sum (const struct variable *var, const union value *val, double weight) -{ - assert (var != NULL); - assert (val != NULL); - if (var_is_alpha (var)) - { - return weight; - } - return val->f; -} -static struct covariance_accumulator * -get_new_covariance_accumulator (const struct variable *v1, - const struct variable *v2, - const union value *val1, - const union value *val2) -{ - if ((v1 != NULL) && (v2 != NULL) && (val1 != NULL) && (val2 != NULL)) - { - struct covariance_accumulator *ca; - ca = xmalloc (sizeof (*ca)); - ca->v1 = v1; - ca->v2 = v2; - ca->val1 = val1; - ca->val2 = val2; - return ca; - } - return NULL; -} - -static const struct variable ** -get_covariance_variables (const struct covariance_matrix *cov) -{ - return cov->v_variables; -} - -static void -update_hash_entry_intr (struct hsh_table *c, - const struct variable *v1, - const struct variable *v2, - const union value *val1, const union value *val2, - const struct interaction_value *i_val1, - const struct interaction_value *i_val2) -{ - struct covariance_accumulator *ca; - struct covariance_accumulator *new_entry; - double iv_f1; - double iv_f2; - - iv_f1 = interaction_value_get_nonzero_entry (i_val1); - iv_f2 = interaction_value_get_nonzero_entry (i_val2); - ca = get_new_covariance_accumulator (v1, v2, val1, val2); - ca->dot_product = update_product (ca->v1, ca->v2, ca->val1, ca->val2); - ca->dot_product *= iv_f1 * iv_f2; - ca->sum1 = update_sum (ca->v1, ca->val1, iv_f1); - ca->sum2 = update_sum (ca->v2, ca->val2, iv_f2); - ca->ssize = 1.0; - new_entry = hsh_insert (c, ca); - - if (new_entry != NULL) - { - new_entry->dot_product += ca->dot_product; - new_entry->ssize += 1.0; - new_entry->sum1 += ca->sum1; - new_entry->sum2 += ca->sum2; - /* - If DOT_PRODUCT is null, CA was not already in the hash - hable, so we don't free it because it was just inserted. - If DOT_PRODUCT was not null, CA is already in the hash table. - Unnecessary now, it must be freed here. - */ - free (ca); - } -} - -static void -update_hash_entry (struct hsh_table *c, - const struct variable *v1, - const struct variable *v2, - const union value *val1, const union value *val2) -{ - struct covariance_accumulator *ca; - struct covariance_accumulator *new_entry; - - ca = get_new_covariance_accumulator (v1, v2, val1, val2); - ca->dot_product = update_product (ca->v1, ca->v2, ca->val1, ca->val2); - ca->sum1 = update_sum (ca->v1, ca->val1, 1.0); - ca->sum2 = update_sum (ca->v2, ca->val2, 1.0); - ca->ssize = 1.0; - new_entry = hsh_insert (c, ca); - - if (new_entry != NULL) - { - new_entry->dot_product += ca->dot_product; - new_entry->ssize += 1.0; - new_entry->sum1 += ca->sum1; - new_entry->sum2 += ca->sum2; - /* - If DOT_PRODUCT is null, CA was not already in the hash - hable, so we don't free it because it was just inserted. - If DOT_PRODUCT was not null, CA is already in the hash table. - Unnecessary now, it must be freed here. - */ - free (ca); - } -} - -static void -inner_intr_loop (struct covariance_matrix *cov, const struct ccase *ccase, const struct variable *var1, - const union value *val1, const struct interaction_variable **i_var, - const struct interaction_value *i_val1, size_t j) -{ - struct variable *var2; - union value *val2; - struct interaction_value *i_val2; - - var2 = interaction_get_variable (i_var[j]); - i_val2 = interaction_case_data (ccase, i_var[j]); - val2 = interaction_value_get (i_val2); - - if (!var_is_value_missing (var2, val2, cov->missing_value)) - { - update_hash_entry_intr (cov->ca, var1, var2, val1, val2, i_val1, i_val2); - } -} -/* - Compute the covariance matrix in a single data-pass. Cases with - missing values are dropped pairwise, in other words, only if one of - the two values necessary to accumulate the inner product is missing. - - Do not call this function directly. Call it through the struct - covariance_matrix ACCUMULATE member function, for example, - cov->accumulate (cov, ccase). - */ -static void -covariance_accumulate_pairwise (struct covariance_matrix *cov, - const struct ccase *ccase, - const struct interaction_variable **i_var, - size_t n_intr) -{ - size_t i; - size_t j; - const union value *val1; - const union value *val2; - const struct variable **v_variables; - const struct variable *var1; - const struct variable *var2; - struct interaction_value *i_val1 = NULL; - struct interaction_value *i_val2 = NULL; - - assert (cov != NULL); - assert (ccase != NULL); - - v_variables = get_covariance_variables (cov); - assert (v_variables != NULL); - - for (i = 0; i < cov->n_variables; ++i) - { - var1 = v_variables[i]; - val1 = case_data (ccase, var1); - if (!var_is_value_missing (var1, val1, cov->missing_value)) - { - cat_value_update (var1, val1); - if (var_is_numeric (var1)) - cov->update_moments (cov, i, val1->f); - - for (j = i; j < cov->n_variables; j++) - { - var2 = v_variables[j]; - val2 = case_data (ccase, var2); - if (!var_is_value_missing - (var2, val2, cov->missing_value)) - { - update_hash_entry (cov->ca, var1, var2, val1, val2); - } - } - for (j = 0; j < cov->n_intr; j++) - { - inner_intr_loop (cov, ccase, var1, val1, i_var, i_val1, j); - } - } - } - for (i = 0; i < cov->n_intr; i++) - { - var1 = interaction_get_variable (i_var[i]); - i_val1 = interaction_case_data (ccase, i_var[i]); - val1 = interaction_value_get (i_val1); - cat_value_update (var1, val1); - if (!var_is_value_missing (var1, val1, cov->missing_value)) - { - for (j = i; j < cov->n_intr; j++) - { - inner_intr_loop (cov, ccase, var1, val1, i_var, i_val1, j); - } - } - } -} - -/* - Compute the covariance matrix in a single data-pass. Cases with - missing values are dropped listwise. In other words, if one of the - values for any variable in a case is missing, the entire case is - skipped. - - The caller must use a casefilter to remove the cases with missing - values before calling covariance_accumulate_listwise. This function - assumes that CCASE has already passed through this filter, and - contains no missing values. - - Do not call this function directly. Call it through the struct - covariance_matrix ACCUMULATE member function, for example, - cov->accumulate (cov, ccase). - */ -static void -covariance_accumulate_listwise (struct covariance_matrix *cov, - const struct ccase *ccase, - const struct interaction_variable **i_var, - size_t n_intr) -{ - size_t i; - size_t j; - const union value *val1; - const union value *val2; - const struct variable **v_variables; - struct interaction_value *i_val1 = NULL; - struct interaction_value *i_val2 = NULL; - - assert (cov != NULL); - assert (ccase != NULL); - - v_variables = get_covariance_variables (cov); - assert (v_variables != NULL); - - for (i = 0; i < cov->n_variables; ++i) - { - val1 = case_data (ccase, v_variables[i]); - cat_value_update (v_variables[i], val1); - if (var_is_numeric (v_variables[i])) - cov->update_moments (cov, i, val1->f); - - for (j = i; j < cov->n_variables; j++) - { - update_hash_entry (cov->ca, v_variables[i], v_variables[j], - val1, val2); - } - } -} - -/* - Call this function during the data pass. Each case will be added to - a hash containing all values of the covariance matrix. After the - data have been passed, call covariance_matrix_compute to put the - values in the struct covariance_matrix. - */ -void -covariance_matrix_accumulate (struct covariance_matrix *cov, - const struct ccase *ccase, void **aux, size_t n_intr) -{ - cov->accumulate (cov, ccase, (const struct interaction_variable **) aux, n_intr); -} - -/* - Return the value corresponding to subscript TARGET. If that value corresponds - to the origin, return NULL. - */ -static const union value * -get_value_from_subscript (const struct design_matrix *dm, size_t target) -{ - const union value *result = NULL; - const struct variable *var; - size_t i; - - var = design_matrix_col_to_var (dm, target); - if (var_is_numeric (var)) - { - return NULL; - } - for (i = 0; i < cat_get_n_categories (var); i++) - { - result = cat_subscript_to_value (i, var); - if (dm_get_exact_subscript (dm, var, result) == target) - { - return result; - } - } - return NULL; -} - -static bool -is_covariance_contributor (const struct covariance_accumulator *ca, const struct design_matrix *dm, - size_t i, size_t j) -{ - size_t k; - const struct variable *v1; - const struct variable *v2; - - assert (dm != NULL); - v1 = design_matrix_col_to_var (dm, i); - v2 = design_matrix_col_to_var (dm, j); - if (v1 == ca->v1) - { - if (v2 == ca->v2) - { - k = dm_get_exact_subscript (dm, v1, ca->val1); - if (k == i) - { - k = dm_get_exact_subscript (dm, v2, ca->val2); - if (k == j) - { - return true; - } - } - } - } - else if (v1 == ca->v2) - { - if (v2 == ca->v1) - { - k = dm_get_exact_subscript (dm, v1, ca->val2); - if (k == i) - { - k = dm_get_exact_subscript (dm, v2, ca->val1); - if (k == j) - { - return true; - } - } - } - } - - return false; -} -static double -get_sum (const struct covariance_matrix *cov, size_t i) -{ - size_t k; - double mean; - double n; - const struct variable *var; - const union value *val = NULL; - - assert ( cov != NULL); - var = design_matrix_col_to_var (cov->cov, i); - if (var != NULL) - { - if (var_is_alpha (var)) - { - val = get_value_from_subscript (cov->cov, i); - k = cat_value_find (var, val); - return cat_get_category_count (k, var); - } - else - { - k = 0; - while (cov->v_variables[k] != var && k < cov->n_variables) - { - k++; - } - if (k < cov->n_variables) - { - moments1_calculate (cov->m1[k], &n, &mean, NULL, NULL, NULL); - return mean * n; - } - } - } - - return 0.0; -} -static void -update_ssize (struct design_matrix *dm, size_t i, size_t j, struct covariance_accumulator *ca) -{ - const struct variable *var; - double tmp; - var = design_matrix_col_to_var (dm, i); - if (ca->v1 == var) - { - var = design_matrix_col_to_var (dm, j); - if (ca->v2 == var) - { - tmp = design_matrix_get_element (dm, i, j); - tmp += ca->ssize; - design_matrix_set_element (dm, i, j, tmp); - } - } -} -static void -covariance_accumulator_to_matrix (struct covariance_matrix *cov) -{ - size_t i; - size_t j; - double sum_i = 0.0; - double sum_j = 0.0; - double tmp = 0.0; - struct covariance_accumulator *entry; - struct hsh_iterator iter; - - cov->cov = covariance_matrix_create_s (cov); - cov->ssize = covariance_matrix_create_s (cov); - entry = hsh_first (cov->ca, &iter); - while (entry != NULL) - { - entry = hsh_next (cov->ca, &iter); - } - - for (i = 0; i < design_matrix_get_n_cols (cov->cov); i++) - { - sum_i = get_sum (cov, i); - for (j = i; j < design_matrix_get_n_cols (cov->cov); j++) - { - sum_j = get_sum (cov, j); - entry = hsh_first (cov->ca, &iter); - while (entry != NULL) - { - update_ssize (cov->ssize, i, j, entry); - /* - We compute the centered, un-normalized covariance matrix. - */ - if (is_covariance_contributor (entry, cov->cov, i, j)) - { - design_matrix_set_element (cov->cov, i, j, entry->dot_product); - } - entry = hsh_next (cov->ca, &iter); - } - tmp = design_matrix_get_element (cov->cov, i, j); - tmp -= sum_i * sum_j / design_matrix_get_element (cov->ssize, i, j); - design_matrix_set_element (cov->cov, i, j, tmp); - design_matrix_set_element (cov->cov, j, i, tmp); - } - } -} - - -/* - Call this function after passing the data. - */ -void -covariance_matrix_compute (struct covariance_matrix *cov) -{ - if (cov->n_pass == ONE_PASS) - { - covariance_accumulator_to_matrix (cov); - } -} - -struct design_matrix * -covariance_to_design (const struct covariance_matrix *c) -{ - if (c != NULL) - { - return c->cov; - } - return NULL; -} -size_t -covariance_matrix_get_n_rows (const struct covariance_matrix *c) -{ - return design_matrix_get_n_rows (c->cov); -} - -double -covariance_matrix_get_element (const struct covariance_matrix *c, size_t row, size_t col) -{ - return (design_matrix_get_element (c->cov, row, col)); -} - diff --git a/src/math/covariance-matrix.h b/src/math/covariance-matrix.h deleted file mode 100644 index c16e5cbc..00000000 --- a/src/math/covariance-matrix.h +++ /dev/null @@ -1,61 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2008 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 . */ - -/* - Create covariance matrices for procedures that need them. - */ - -#ifndef COVARIANCE_MATRIX_H -#define COVARIANCE_MATRIX_H - -#include -#include - -struct moments1; -struct ccase; -struct hsh_table; -struct covariance_matrix; -enum -{ ONE_PASS, - TWO_PASS -}; - -/* - How to deal with missing values. - */ -enum -{ LISTWISE, - PAIRWISE -}; -struct design_matrix *covariance_matrix_create (size_t, const struct variable *[]); - -void covariance_matrix_destroy (struct covariance_matrix *); -void covariance_pass_two (struct design_matrix *, double, - double, double, const struct variable *, - const struct variable *, const union value *, - const union value *); -void covariance_matrix_compute (struct covariance_matrix *); -struct covariance_matrix *covariance_matrix_init (size_t, - const struct variable *[], - int, int, enum mv_class); -void covariance_matrix_free (struct covariance_matrix *); -void covariance_matrix_accumulate (struct covariance_matrix *, - const struct ccase *, void **, size_t); -struct design_matrix *covariance_to_design (const struct covariance_matrix *); -double covariance_matrix_get_element (const struct covariance_matrix *, size_t, size_t); -void covariance_interaction_set (struct covariance_matrix *, - const struct interaction_variable **, size_t); -#endif diff --git a/src/math/covariance.c b/src/math/covariance.c index ba0de0b6..dc316692 100644 --- a/src/math/covariance.c +++ b/src/math/covariance.c @@ -16,6 +16,7 @@ #include +#include #include "covariance.h" #include #include "moments.h" @@ -23,16 +24,61 @@ #include #include #include +#include "categoricals.h" #define n_MOMENTS (MOMENT_VARIANCE + 1) +/* Create a new matrix of NEW_SIZE x NEW_SIZE and copy the elements of + matrix IN into it. IN must be a square matrix, and in normal usage + it will be smaller than NEW_SIZE. + IN is destroyed by this function. The return value must be destroyed + when no longer required. +*/ +static gsl_matrix * +resize_matrix (gsl_matrix *in, size_t new_size) +{ + size_t i, j; + + gsl_matrix *out = NULL; + + assert (in->size1 == in->size2); + + if (new_size <= in->size1) + return in; + + out = gsl_matrix_calloc (new_size, new_size); + + for (i = 0; i < in->size1; ++i) + { + for (j = 0; j < in->size2; ++j) + { + double x = gsl_matrix_get (in, i, j); + + gsl_matrix_set (out, i, j, x); + } + } + + gsl_matrix_free (in); + + return out; +} + struct covariance { - /* The variables for which the covariance matrix is to be calculated */ + /* The variables for which the covariance matrix is to be calculated. */ size_t n_vars; const struct variable **vars; - + + /* Categorical variables. */ + struct categoricals *categoricals; + + /* Array containing number of categories per categorical variable. */ + size_t *n_categories; + + /* Dimension of the covariance matrix. */ + size_t dim; + /* The weight variable (or NULL if none) */ const struct variable *wv; @@ -46,6 +92,23 @@ struct covariance Only the top triangle is included, and no diagonals */ double *cm; int n_cm; + + /* 1 for single pass algorithm; + 2 for double pass algorithm + */ + short passes; + + /* + 0 : No pass has been made + 1 : First pass has been started + 2 : Second pass has been + + IE: How many passes have been (partially) made. */ + short state; + + /* Flags indicating that the first case has been seen */ + bool pass_one_first_case_seen; + bool pass_two_first_case_seen; }; @@ -65,20 +128,24 @@ covariance_moments (const struct covariance *cov, int m) -/* Create a covariance struct */ +/* Create a covariance struct. + */ struct covariance * -covariance_create (size_t n_vars, const struct variable **vars, - const struct variable *weight, enum mv_class exclude) +covariance_1pass_create (size_t n_vars, const struct variable **vars, + const struct variable *weight, enum mv_class exclude) { size_t i; struct covariance *cov = xmalloc (sizeof *cov); - cov->vars = xmalloc (sizeof *cov->vars * n_vars); + + cov->passes = 1; + cov->state = 0; + cov->pass_one_first_case_seen = cov->pass_two_first_case_seen = false; + + cov->vars = vars; cov->wv = weight; cov->n_vars = n_vars; - - for (i = 0; i < n_vars; ++i) - cov->vars[i] = vars[i]; + cov->dim = n_vars; cov->moments = xmalloc (sizeof *cov->moments * n_MOMENTS); @@ -90,6 +157,46 @@ covariance_create (size_t n_vars, const struct variable **vars, cov->n_cm = (n_vars * (n_vars - 1) ) / 2; cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); + cov->categoricals = NULL; + + return cov; +} + +/* + Create a covariance struct for a two-pass algorithm. If categorical + variables are involed, the dimension cannot be know until after the + first data pass, so the actual covariances will not be allocated + until then. + */ +struct covariance * +covariance_2pass_create (size_t n_vars, const struct variable **vars, + size_t n_catvars, const struct variable **catvars, + const struct variable *wv, enum mv_class exclude) +{ + size_t i; + struct covariance *cov = xmalloc (sizeof *cov); + + cov->passes = 2; + cov->state = 0; + cov->pass_one_first_case_seen = cov->pass_two_first_case_seen = false; + + cov->vars = vars; + + cov->wv = wv; + cov->n_vars = n_vars; + cov->dim = n_vars; + + cov->moments = xmalloc (sizeof *cov->moments * n_MOMENTS); + + for (i = 0; i < n_MOMENTS; ++i) + cov->moments[i] = gsl_matrix_calloc (n_vars, n_vars); + + cov->exclude = exclude; + + cov->n_cm = -1; + cov->cm = NULL; + + cov->categoricals = categoricals_create (catvars, n_catvars, wv, exclude); return cov; } @@ -104,16 +211,16 @@ static int cm_idx (const struct covariance *cov, int i, int j) { int as; - const int n2j = cov->n_vars - 2 - j; - const int nj = cov->n_vars - 2 ; + const int n2j = cov->dim - 2 - j; + const int nj = cov->dim - 2 ; assert (i >= 0); - assert (j < cov->n_vars); + assert (j < cov->dim); if ( i == 0) return -1; - if (j >= cov->n_vars - 1) + if (j >= cov->dim - 1) return -1; if ( i <= j) @@ -127,27 +234,239 @@ cm_idx (const struct covariance *cov, int i, int j) } +/* + Returns true iff the variable corresponding to the Ith element of the covariance matrix + has a missing value for case C +*/ +static bool +is_missing (const struct covariance *cov, int i, const struct ccase *c) +{ + const struct variable *var = i < cov->n_vars ? + cov->vars[i] : + categoricals_get_variable_by_subscript (cov->categoricals, i - cov->n_vars); + + const union value *val = case_data (c, var); + + return var_is_value_missing (var, val, cov->exclude); +} + + +static double +get_val (const struct covariance *cov, int i, const struct ccase *c) +{ + if ( i < cov->n_vars) + { + const struct variable *var = cov->vars[i]; + + const union value *val = case_data (c, var); + + return val->f; + } + + return categoricals_get_binary_by_subscript (cov->categoricals, i - cov->n_vars, c); +} + +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"); + } +} + +/* Call this function for every case in the data set */ +void +covariance_accumulate_pass1 (struct covariance *cov, const struct ccase *c) +{ + size_t i, j, m; + const double weight = cov->wv ? case_data (c, cov->wv)->f : 1.0; + + assert (cov->passes == 2); + if (!cov->pass_one_first_case_seen) + { + assert (cov->state == 0); + cov->state = 1; + } + + categoricals_update (cov->categoricals, c); + + for (i = 0 ; i < cov->dim; ++i) + { + double v1 = get_val (cov, i, c); + + if ( is_missing (cov, i, c)) + continue; + + for (j = 0 ; j < cov->dim; ++j) + { + double pwr = 1.0; + + if ( is_missing (cov, j, c)) + continue; + + for (m = 0 ; m <= MOMENT_MEAN; ++m) + { + double *x = gsl_matrix_ptr (cov->moments[m], i, j); + + *x += pwr * weight; + pwr *= v1; + } + } + } + + cov->pass_one_first_case_seen = true; +} + + /* Call this function for every case in the data set */ void +covariance_accumulate_pass2 (struct covariance *cov, const struct ccase *c) +{ + size_t i, j; + const double weight = cov->wv ? case_data (c, cov->wv)->f : 1.0; + + assert (cov->passes == 2); + assert (cov->state >= 1); + + if (! cov->pass_two_first_case_seen) + { + size_t m; + assert (cov->state == 1); + cov->state = 2; + + cov->dim = cov->n_vars + + categoricals_total (cov->categoricals) - categoricals_get_n_variables (cov->categoricals); + + cov->n_cm = (cov->dim * (cov->dim - 1) ) / 2; + cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); + + /* Grow the moment matrices so that they're large enough to accommodate the + categorical elements */ + for (i = 0; i < n_MOMENTS; ++i) + { + cov->moments[i] = resize_matrix (cov->moments[i], cov->dim); + } + + categoricals_done (cov->categoricals); + + /* Populate the moments matrices with the categorical value elements */ + for (i = cov->n_vars; i < cov->dim; ++i) + { + for (j = 0 ; j < cov->dim ; ++j) /* FIXME: This is WRONG !!! */ + { + double w = categoricals_get_weight_by_subscript (cov->categoricals, i - cov->n_vars); + + gsl_matrix_set (cov->moments[MOMENT_NONE], i, j, w); + + w = categoricals_get_sum_by_subscript (cov->categoricals, i - cov->n_vars); + + gsl_matrix_set (cov->moments[MOMENT_MEAN], i, j, w); + } + } + + /* FIXME: This is WRONG!! It must be fixed to properly handle missing values. For + now it assumes there are none */ + for (m = 0 ; m < n_MOMENTS; ++m) + { + for (i = 0 ; i < cov->dim ; ++i) + { + double x = gsl_matrix_get (cov->moments[m], i, cov->n_vars -1); + for (j = cov->n_vars; j < cov->dim; ++j) + { + gsl_matrix_set (cov->moments[m], i, j, x); + } + } + } + + /* Divide the means by the number of samples */ + for (i = 0; i < cov->dim; ++i) + { + for (j = 0; j < cov->dim; ++j) + { + double *x = gsl_matrix_ptr (cov->moments[MOMENT_MEAN], i, j); + *x /= gsl_matrix_get (cov->moments[MOMENT_NONE], i, j); + } + } + } + + for (i = 0 ; i < cov->dim; ++i) + { + double v1 = get_val (cov, i, c); + + if ( is_missing (cov, i, c)) + continue; + + for (j = 0 ; j < cov->dim; ++j) + { + int idx; + double ss ; + double v2 = get_val (cov, j, c); + + const double s = pow2 (v1 - gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j)) * weight; + + if ( is_missing (cov, j, c)) + continue; + + { + double *x = gsl_matrix_ptr (cov->moments[MOMENT_VARIANCE], i, j); + *x += s; + } + + ss = + (v1 - gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j)) + * + (v2 - gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j)) + * weight + ; + + idx = cm_idx (cov, i, j); + if (idx >= 0) + { + cov->cm [idx] += ss; + } + } + } + + cov->pass_two_first_case_seen = true; +} + + +/* Call this function for every case in the data set. + After all cases have been passed, call covariance_calculate + */ +void covariance_accumulate (struct covariance *cov, const struct ccase *c) { size_t i, j, m; const double weight = cov->wv ? case_data (c, cov->wv)->f : 1.0; - for (i = 0 ; i < cov->n_vars; ++i) + assert (cov->passes == 1); + + if ( !cov->pass_one_first_case_seen) + { + assert ( cov->state == 0); + cov->state = 1; + } + + for (i = 0 ; i < cov->dim; ++i) { const union value *val1 = case_data (c, cov->vars[i]); - if ( var_is_value_missing (cov->vars[i], val1, cov->exclude)) + if ( is_missing (cov, i, c)) continue; - for (j = 0 ; j < cov->n_vars; ++j) + for (j = 0 ; j < cov->dim; ++j) { double pwr = 1.0; int idx; const union value *val2 = case_data (c, cov->vars[j]); - if ( var_is_value_missing (cov->vars[j], val2, cov->exclude)) + if ( is_missing (cov, j, c)) continue; idx = cm_idx (cov, i, j); @@ -165,6 +484,8 @@ covariance_accumulate (struct covariance *cov, const struct ccase *c) } } } + + cov->pass_one_first_case_seen = true; } @@ -176,12 +497,12 @@ static gsl_matrix * cm_to_gsl (struct covariance *cov) { int i, j; - gsl_matrix *m = gsl_matrix_calloc (cov->n_vars, cov->n_vars); + gsl_matrix *m = gsl_matrix_calloc (cov->dim, cov->dim); /* Copy the non-diagonal elements from cov->cm */ - for ( j = 0 ; j < cov->n_vars - 1; ++j) + for ( j = 0 ; j < cov->dim - 1; ++j) { - for (i = j+1 ; i < cov->n_vars; ++i) + for (i = j+1 ; i < cov->dim; ++i) { double x = cov->cm [cm_idx (cov, i, j)]; gsl_matrix_set (m, i, j, x); @@ -190,7 +511,7 @@ cm_to_gsl (struct covariance *cov) } /* Copy the diagonal elements from cov->moments[2] */ - for (j = 0 ; j < cov->n_vars ; ++j) + for (j = 0 ; j < cov->dim ; ++j) { double sigma = gsl_matrix_get (cov->moments[2], j, j); gsl_matrix_set (m, j, j, sigma); @@ -200,14 +521,32 @@ cm_to_gsl (struct covariance *cov) } +static const gsl_matrix * +covariance_calculate_double_pass (struct covariance *cov) +{ + size_t i, j; + for (i = 0 ; i < cov->dim; ++i) + { + for (j = 0 ; j < cov->dim; ++j) + { + int idx; + double *x = gsl_matrix_ptr (cov->moments[MOMENT_VARIANCE], i, j); + *x /= gsl_matrix_get (cov->moments[MOMENT_NONE], i, j); -/* - Return a pointer to gsl_matrix containing the pairwise covariances. - The matrix remains owned by the COV object, and must not be freed. - Call this function only after all data have been accumulated. -*/ -const gsl_matrix * -covariance_calculate (struct covariance *cov) + idx = cm_idx (cov, i, j); + if ( idx >= 0) + { + x = &cov->cm [idx]; + *x /= gsl_matrix_get (cov->moments[MOMENT_NONE], i, j); + } + } + } + + return cm_to_gsl (cov); +} + +static const gsl_matrix * +covariance_calculate_single_pass (struct covariance *cov) { size_t i, j; size_t m; @@ -217,9 +556,9 @@ covariance_calculate (struct covariance *cov) /* Divide the moments by the number of samples */ if ( m > 0) { - for (i = 0 ; i < cov->n_vars; ++i) + for (i = 0 ; i < cov->dim; ++i) { - for (j = 0 ; j < cov->n_vars; ++j) + for (j = 0 ; j < cov->dim; ++j) { double *x = gsl_matrix_ptr (cov->moments[m], i, j); *x /= gsl_matrix_get (cov->moments[0], i, j); @@ -232,9 +571,9 @@ covariance_calculate (struct covariance *cov) } /* Centre the moments */ - for ( j = 0 ; j < cov->n_vars - 1; ++j) + for ( j = 0 ; j < cov->dim - 1; ++j) { - for (i = j + 1 ; i < cov->n_vars; ++i) + for (i = j + 1 ; i < cov->dim; ++i) { double *x = &cov->cm [cm_idx (cov, i, j)]; @@ -251,12 +590,119 @@ covariance_calculate (struct covariance *cov) } +/* + Return a pointer to gsl_matrix containing the pairwise covariances. + The matrix remains owned by the COV object, and must not be freed. + Call this function only after all data have been accumulated. +*/ +const gsl_matrix * +covariance_calculate (struct covariance *cov) +{ + assert ( cov->state > 0 ); + + switch (cov->passes) + { + case 1: + return covariance_calculate_single_pass (cov); + break; + case 2: + return covariance_calculate_double_pass (cov); + break; + default: + NOT_REACHED (); + } +} + +/* + Covariance computed without dividing by the sample size. + */ +static const gsl_matrix * +covariance_calculate_double_pass_unnormalized (struct covariance *cov) +{ + size_t i, j; + for (i = 0 ; i < cov->dim; ++i) + { + for (j = 0 ; j < cov->dim; ++j) + { + int idx; + double *x = gsl_matrix_ptr (cov->moments[MOMENT_VARIANCE], i, j); + + idx = cm_idx (cov, i, j); + if ( idx >= 0) + { + x = &cov->cm [idx]; + } + } + } + + return cm_to_gsl (cov); +} + +static const gsl_matrix * +covariance_calculate_single_pass_unnormalized (struct covariance *cov) +{ + size_t i, j; + size_t m; + + for (i = 0 ; i < cov->dim; ++i) + { + for (j = 0 ; j < cov->dim; ++j) + { + double *x = gsl_matrix_ptr (cov->moments[MOMENT_VARIANCE], i, j); + *x -= pow2 (gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j)) + / gsl_matrix_get (cov->moments[MOMENT_NONE], i, j); + } + } + for ( j = 0 ; j < cov->dim - 1; ++j) + { + for (i = j + 1 ; i < cov->dim; ++i) + { + double *x = &cov->cm [cm_idx (cov, i, j)]; + + *x -= + gsl_matrix_get (cov->moments[MOMENT_MEAN], i, j) + * + gsl_matrix_get (cov->moments[MOMENT_MEAN], j, i) + / gsl_matrix_get (cov->moments[MOMENT_NONE], i, j); + } + } + + return cm_to_gsl (cov); +} + + +/* + Return a pointer to gsl_matrix containing the pairwise covariances. + The matrix remains owned by the COV object, and must not be freed. + Call this function only after all data have been accumulated. +*/ +const gsl_matrix * +covariance_calculate_unnormalized (struct covariance *cov) +{ + assert ( cov->state > 0 ); + + switch (cov->passes) + { + case 1: + return covariance_calculate_single_pass_unnormalized (cov); + break; + case 2: + return covariance_calculate_double_pass_unnormalized (cov); + break; + default: + NOT_REACHED (); + } +} + + + /* Destroy the COV object */ void covariance_destroy (struct covariance *cov) { size_t i; - free (cov->vars); + + categoricals_destroy (cov->categoricals); for (i = 0; i < n_MOMENTS; ++i) gsl_matrix_free (cov->moments[i]); diff --git a/src/math/covariance.h b/src/math/covariance.h index 8b8de88e..3d29dcea 100644 --- a/src/math/covariance.h +++ b/src/math/covariance.h @@ -27,12 +27,20 @@ struct covariance; struct variable; struct ccase ; -struct covariance * covariance_create (size_t n_vars, const struct variable **vars, - const struct variable *wv, enum mv_class excl); +struct covariance * covariance_1pass_create (size_t n_vars, const struct variable **vars, + const struct variable *wv, enum mv_class excl); + +struct covariance * +covariance_2pass_create (size_t n_vars, const struct variable **vars, + size_t n_catvars, const struct variable **catvars, + const struct variable *wv, enum mv_class excl); void covariance_accumulate (struct covariance *, const struct ccase *); +void covariance_accumulate_pass1 (struct covariance *, const struct ccase *); +void covariance_accumulate_pass2 (struct covariance *, const struct ccase *); const gsl_matrix * covariance_calculate (struct covariance *cov); +const gsl_matrix * covariance_calculate_unnormalized (struct covariance *); void covariance_destroy (struct covariance *cov); diff --git a/src/math/design-matrix.c b/src/math/design-matrix.c deleted file mode 100644 index 8f125c58..00000000 --- a/src/math/design-matrix.c +++ /dev/null @@ -1,307 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2005 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 . */ - -/* - Create design matrices for procedures that need them. -*/ -#include - -#include "design-matrix.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include "xalloc.h" - -#define DM_COLUMN_NOT_FOUND -1 -#define DM_INDEX_NOT_FOUND -3 - - -struct design_matrix * -design_matrix_create (int n_variables, - const struct variable *v_variables[], - const size_t n_data) -{ - struct design_matrix *dm; - const struct variable *v; - size_t i; - size_t n_cols = 0; - size_t col; - - dm = xmalloc (sizeof *dm); - dm->vars = xnmalloc (n_variables, sizeof *dm->vars); - dm->n_cases = xnmalloc (n_variables, sizeof (*dm->n_cases)); - dm->n_vars = n_variables; - - for (i = 0; i < n_variables; i++) - { - dm->n_cases[i] = 0; - v = v_variables[i]; - assert ((dm->vars + i) != NULL); - (dm->vars + i)->v = v; /* Allows us to look up the variable from - the design matrix. */ - (dm->vars + i)->first_column = n_cols; - if (var_is_numeric (v)) - { - (dm->vars + i)->last_column = n_cols; - n_cols++; - } - else if (var_is_alpha (v)) - { - size_t n_categories = cat_get_n_categories (v); - (dm->vars + i)->last_column = - (dm->vars + i)->first_column + n_categories - 2; - n_cols += n_categories - 1; - } - } - dm->m = gsl_matrix_calloc (n_data, n_cols); - col = 0; - - - return dm; -} - -void -design_matrix_destroy (struct design_matrix *dm) -{ - free (dm->vars); - gsl_matrix_free (dm->m); - free (dm->n_cases); - free (dm); -} - -/* - Return the index of the variable for the - given column. - */ -const struct variable * -design_matrix_col_to_var (const struct design_matrix *dm, size_t col) -{ - size_t i; - struct design_matrix_var v; - - for (i = 0; i < dm->n_vars; i++) - { - v = dm->vars[i]; - if (v.first_column <= col && col <= v.last_column) - return v.v; - } - return NULL; -} - -/* - Return the number of the first column which holds the - values for variable v. - */ -size_t -design_matrix_var_to_column (const struct design_matrix * dm, - const struct variable * v) -{ - size_t i; - struct design_matrix_var tmp; - - for (i = 0; i < dm->n_vars; i++) - { - tmp = dm->vars[i]; - if (tmp.v == v) - { - return tmp.first_column; - } - } - return DM_COLUMN_NOT_FOUND; -} - -/* Last column. */ -static size_t -dm_var_to_last_column (const struct design_matrix *dm, - const struct variable *v) -{ - size_t i; - struct design_matrix_var tmp; - - for (i = 0; i < dm->n_vars; i++) - { - tmp = dm->vars[i]; - if (tmp.v == v) - { - return tmp.last_column; - } - } - return DM_COLUMN_NOT_FOUND; -} - -/* - Set the appropriate value in the design matrix, - whether that value is from a categorical or numeric - variable. For a categorical variable, only the usual - binary encoding is allowed. - */ -void -design_matrix_set_categorical (struct design_matrix *dm, size_t row, - const struct variable *var, - const union value *val) -{ - size_t col; - size_t is_one; - size_t fc; - size_t lc; - double entry; - - assert (var_is_alpha (var)); - fc = design_matrix_var_to_column (dm, var); - lc = dm_var_to_last_column (dm, var); - assert (lc != DM_COLUMN_NOT_FOUND); - assert (fc != DM_COLUMN_NOT_FOUND); - is_one = fc + cat_value_find (var, val); - for (col = fc; col <= lc; col++) - { - entry = (col == is_one) ? 1.0 : 0.0; - gsl_matrix_set (dm->m, row, col, entry); - } -} - -void -design_matrix_set_numeric (struct design_matrix *dm, size_t row, - const struct variable *var, const union value *val) -{ - size_t col; - - assert (var_is_numeric (var)); - col = design_matrix_var_to_column ((const struct design_matrix *) dm, var); - assert (col != DM_COLUMN_NOT_FOUND); - gsl_matrix_set (dm->m, row, col, val->f); -} - -struct design_matrix * -design_matrix_clone (const struct design_matrix *dm) -{ - struct design_matrix *result; - size_t i; - - assert (dm != NULL); - result = xmalloc (sizeof *result); - result->vars = xnmalloc (dm->n_vars, sizeof *dm->vars); - result->n_vars = dm->n_vars; - result->m = gsl_matrix_alloc (dm->m->size1, dm->m->size2); - - gsl_matrix_memcpy (result->m, dm->m); - for (i = 0; i < result->n_vars; i++) - { - result->vars[i] = dm->vars[i]; - } - return result; -} - -/* - Increment the number of cases for V. - */ -void -design_matrix_increment_case_count (struct design_matrix *dm, const struct variable *v) -{ - size_t i; - assert (dm != NULL); - assert (dm->n_cases != NULL); - assert (v != NULL); - i = design_matrix_var_to_column (dm, v); - dm->n_cases[i]++; -} - -/* - Set the number of cases for V. - */ -void -design_matrix_set_case_count (struct design_matrix *dm, const struct variable *v, size_t n) -{ - size_t i; - assert (dm != NULL); - assert (dm->n_cases != NULL); - assert (v != NULL); - i = design_matrix_var_to_column (dm, v); - dm->n_cases[i] = n; -} - -/* - Get the number of cases for V. - */ -size_t -design_matrix_get_case_count (const struct design_matrix *dm, const struct variable *v) -{ - size_t i; - assert (dm != NULL); - assert (dm->n_cases != NULL); - assert (v != NULL); - i = design_matrix_var_to_column (dm, v); - return dm->n_cases[i]; -} - -size_t -design_matrix_get_n_cols (const struct design_matrix *d) -{ - return d->m->size2; -} - -size_t -design_matrix_get_n_rows (const struct design_matrix *d) -{ - return d->m->size1; -} - -double -design_matrix_get_element (const struct design_matrix *d, size_t row, size_t col) -{ - return (gsl_matrix_get (d->m, row, col)); -} - -void -design_matrix_set_element (const struct design_matrix *d, size_t row, size_t col, double x) -{ - gsl_matrix_set (d->m, row, col, x); -} - -/* - Return the subscript of the column of the design matrix - corresponding to VAL. If VAR is categorical with d categories, its - first category should correspond to the origin in d-dimensional - Euclidean space, so there is no subscript for this value. - */ -size_t -dm_get_exact_subscript (const struct design_matrix *dm, const struct variable *var, - const union value *val) -{ - size_t result; - - result = design_matrix_var_to_column (dm, var); - if (var_is_alpha (var)) - { - if (cat_is_origin (var, val)) - { - return -1u; - } - result += cat_value_find (var, val) - 1; - } - return result; -} diff --git a/src/math/design-matrix.h b/src/math/design-matrix.h deleted file mode 100644 index b1cda5a9..00000000 --- a/src/math/design-matrix.h +++ /dev/null @@ -1,100 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2005 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 . */ - -/* - Create design matrices for procedures that need them. - */ - -#ifndef DESIGN_MATRIX_H -#define DESIGN_MATRIX_H - -#include -#include -#include - -struct design_matrix_var -{ - size_t first_column; /* First column for this variable in - the design_matix. If this variable - is categorical, its values are - stored in multiple, contiguous - columns, as dictated by its vector - encoding in the variable's struct - cat_vals. - */ - size_t last_column; - const struct variable *v; -}; - -struct design_matrix -{ - gsl_matrix *m; - struct design_matrix_var *vars; /* Element i corresponds to - the variable whose values - are stored in at least one - column of m. If that - variable is categorical - with more than two - categories, its values are - stored in multiple, - contiguous columns. The - variable's values are then - stored in the columns - first_column through - last_column of the - design_matrix_var - structure. - */ - size_t *n_cases; /* Element i is the number of valid cases for this - variable. - */ - size_t n_vars; -}; - - -struct design_matrix *design_matrix_create (int, const struct variable *[], - const size_t); - -void design_matrix_destroy (struct design_matrix *); - -void design_matrix_set_categorical (struct design_matrix *, size_t, - const struct variable *, - const union value *); - -void design_matrix_set_numeric (struct design_matrix *, size_t, - const struct variable *, - const union value *); - -struct design_matrix *design_matrix_clone (const struct design_matrix *); - -size_t design_matrix_var_to_column (const struct design_matrix *, - const struct variable *); - -const struct variable *design_matrix_col_to_var (const struct design_matrix *, - size_t); -void design_matrix_increment_case_count (struct design_matrix *, const struct variable *); - -void design_matrix_set_case_count (struct design_matrix *, const struct variable *, size_t); - -size_t design_matrix_get_case_count (const struct design_matrix *, const struct variable *); -size_t design_matrix_get_n_cols (const struct design_matrix *); -size_t design_matrix_get_n_rows (const struct design_matrix *); -double design_matrix_get_element (const struct design_matrix *, size_t, size_t); -void design_matrix_set_element (const struct design_matrix *, size_t, size_t, double); -size_t dm_get_exact_subscript (const struct design_matrix *, const struct variable *, - const union value *); - -#endif diff --git a/src/math/linreg.c b/src/math/linreg.c index c03af467..462a0785 100644 --- a/src/math/linreg.c +++ b/src/math/linreg.c @@ -19,13 +19,10 @@ #include #include #include +#include #include #include -#include #include -#include -#include -#include #include #include #include @@ -57,170 +54,75 @@ */ -/* - Get the mean and standard deviation of a vector - of doubles via a form of the Kalman filter as - described on page 32 of [3]. - */ -static int -linreg_mean_std (gsl_vector_const_view v, double *mp, double *sp, double *ssp) +const struct variable ** +linreg_get_vars (const linreg *c) { - size_t i; - double j = 0.0; - double d; - double tmp; - double mean; - double variance; - - mean = gsl_vector_get (&v.vector, 0); - variance = 0; - for (i = 1; i < v.vector.size; i++) - { - j = (double) i + 1.0; - tmp = gsl_vector_get (&v.vector, i); - d = (tmp - mean) / j; - mean += d; - variance += j * (j - 1.0) * d * d; - } - *mp = mean; - *sp = sqrt (variance / (j - 1.0)); - *ssp = variance; - - return GSL_SUCCESS; + return c->indep_vars; } /* - Set V to contain an array of pointers to the variables - used in the model. V must be at least C->N_COEFFS in length. - The return value is the number of distinct variables found. + Allocate a linreg and return a pointer to it. n is the number of + cases, p is the number of independent variables. */ -int -pspp_linreg_get_vars (const void *c_, const struct variable **v) -{ - const pspp_linreg_cache *c = c_; - const struct variable *tmp; - int i; - int j; - int result = 0; - - /* - Make sure the caller doesn't try to sneak a variable - into V that is not in the model. - */ - for (i = 0; i < c->n_coeffs; i++) - { - v[i] = NULL; - } - for (j = 0; j < c->n_coeffs; j++) - { - tmp = pspp_coeff_get_var (c->coeff[j], 0); - assert (tmp != NULL); - /* Repeated variables are likely to bunch together, at the end - of the array. */ - i = result - 1; - while (i >= 0 && v[i] != tmp) - { - i--; - } - if (i < 0 && result < c->n_coeffs) - { - v[result] = tmp; - result++; - } - } - return result; -} - -/* - Allocate a pspp_linreg_cache and return a pointer - to it. n is the number of cases, p is the number of - independent variables. - */ -pspp_linreg_cache * -pspp_linreg_cache_alloc (const struct variable *depvar, const struct variable **indep_vars, - size_t n, size_t p) +linreg * +linreg_alloc (const struct variable *depvar, const struct variable **indep_vars, + double n, size_t p) { + linreg *c; size_t i; - pspp_linreg_cache *c; - c = (pspp_linreg_cache *) malloc (sizeof (pspp_linreg_cache)); + c = xmalloc (sizeof (*c)); c->depvar = depvar; - c->indep_vars = indep_vars; + c->indep_vars = xnmalloc (p, sizeof (*indep_vars)); + for (i = 0; i < p; i++) + { + c->indep_vars[i] = indep_vars[i]; + } c->indep_means = gsl_vector_alloc (p); c->indep_std = gsl_vector_alloc (p); - c->ssx = gsl_vector_alloc (p); /* Sums of squares for the - independent variables. - */ + c->ss_indeps = gsl_vector_alloc (p); /* Sums of squares for the model parameters. */ c->n_obs = n; c->n_indeps = p; - c->n_coeffs = 0; - for (i = 0; i < p; i++) - { - if (var_is_numeric (indep_vars[i])) - { - c->n_coeffs++; - } - else - { - c->n_coeffs += cat_get_n_categories (indep_vars[i]) - 1; - } - } - - c->cov = gsl_matrix_alloc (c->n_coeffs + 1, c->n_coeffs + 1); + c->n_coeffs = p; + c->coeff = xnmalloc (p, sizeof (*c->coeff)); + c->cov = gsl_matrix_calloc (c->n_coeffs + 1, c->n_coeffs + 1); + c->dft = n - 1; + c->dfm = p; + c->dfe = c->dft - c->dfm; + c->intercept = 0.0; + c->depvar_mean = 0.0; + c->depvar_std = 0.0; /* Default settings. */ - c->method = PSPP_LINREG_SWEEP; - c->predict = pspp_linreg_predict; - c->residual = pspp_linreg_residual; /* The procedure to compute my - residuals. */ - c->get_vars = pspp_linreg_get_vars; /* The procedure that returns - pointers to model - variables. */ - c->resid = NULL; /* The variable storing my residuals. */ - c->pred = NULL; /* The variable storing my predicted values. */ + c->method = LINREG_SWEEP; + c->pred = NULL; + c->resid = NULL; return c; } bool -pspp_linreg_cache_free (void *m) +linreg_free (void *m) { - int i; - - pspp_linreg_cache *c = m; + linreg *c = m; if (c != NULL) { gsl_vector_free (c->indep_means); gsl_vector_free (c->indep_std); - gsl_vector_free (c->ss_indeps); gsl_matrix_free (c->cov); - gsl_vector_free (c->ssx); - for (i = 0; i < c->n_coeffs; i++) - { - pspp_coeff_free (c->coeff[i]); - } + free (c->indep_vars); free (c->coeff); free (c); } return true; } -static void -cache_init (pspp_linreg_cache *cache) -{ - assert (cache != NULL); - cache->dft = cache->n_obs - 1; - cache->dfm = cache->n_indeps; - cache->dfe = cache->dft - cache->dfm; - cache->intercept = 0.0; -} static void -post_sweep_computations (pspp_linreg_cache *cache, const struct design_matrix *dm, - gsl_matrix *sw) +post_sweep_computations (linreg *l, gsl_matrix *sw) { gsl_matrix *xm; gsl_matrix_view xtx; @@ -232,19 +134,19 @@ post_sweep_computations (pspp_linreg_cache *cache, const struct design_matrix *d int rc; assert (sw != NULL); - assert (cache != NULL); + assert (l != NULL); - cache->sse = gsl_matrix_get (sw, cache->n_indeps, cache->n_indeps); - cache->mse = cache->sse / cache->dfe; + l->sse = gsl_matrix_get (sw, l->n_indeps, l->n_indeps); + l->mse = l->sse / l->dfe; /* Get the intercept. */ - m = cache->depvar_mean; - for (i = 0; i < cache->n_indeps; i++) + m = l->depvar_mean; + for (i = 0; i < l->n_indeps; i++) { - tmp = gsl_matrix_get (sw, i, cache->n_indeps); - cache->coeff[i]->estimate = tmp; - m -= tmp * pspp_linreg_get_indep_variable_mean (cache, design_matrix_col_to_var (dm, i)); + tmp = gsl_matrix_get (sw, i, l->n_indeps); + l->coeff[i] = tmp; + m -= tmp * linreg_get_indep_variable_mean (l, i); } /* Get the covariance matrix of the parameter estimates. @@ -255,37 +157,37 @@ post_sweep_computations (pspp_linreg_cache *cache, const struct design_matrix *d The loops below do not compute the entries related to the estimated intercept. */ - for (i = 0; i < cache->n_indeps; i++) - for (j = i; j < cache->n_indeps; j++) + for (i = 0; i < l->n_indeps; i++) + for (j = i; j < l->n_indeps; j++) { - tmp = -1.0 * cache->mse * gsl_matrix_get (sw, i, j); - gsl_matrix_set (cache->cov, i + 1, j + 1, tmp); + tmp = -1.0 * l->mse * gsl_matrix_get (sw, i, j); + gsl_matrix_set (l->cov, i + 1, j + 1, tmp); } /* Get the covariances related to the intercept. */ - xtx = gsl_matrix_submatrix (sw, 0, 0, cache->n_indeps, cache->n_indeps); - xmxtx = gsl_matrix_submatrix (cache->cov, 0, 1, 1, cache->n_indeps); - xm = gsl_matrix_calloc (1, cache->n_indeps); + xtx = gsl_matrix_submatrix (sw, 0, 0, l->n_indeps, l->n_indeps); + xmxtx = gsl_matrix_submatrix (l->cov, 0, 1, 1, l->n_indeps); + xm = gsl_matrix_calloc (1, l->n_indeps); for (i = 0; i < xm->size2; i++) { gsl_matrix_set (xm, 0, i, - pspp_linreg_get_indep_variable_mean (cache, design_matrix_col_to_var (dm, i))); + linreg_get_indep_variable_mean (l, i)); } - rc = gsl_blas_dsymm (CblasRight, CblasUpper, cache->mse, + rc = gsl_blas_dsymm (CblasRight, CblasUpper, l->mse, &xtx.matrix, xm, 0.0, &xmxtx.matrix); gsl_matrix_free (xm); if (rc == GSL_SUCCESS) { - tmp = cache->mse / cache->n_obs; - for (i = 1; i < 1 + cache->n_indeps; i++) + tmp = l->mse / l->n_obs; + for (i = 1; i < 1 + l->n_indeps; i++) { - tmp -= gsl_matrix_get (cache->cov, 0, i) - * pspp_linreg_get_indep_variable_mean (cache, design_matrix_col_to_var (dm, i - 1)); + tmp -= gsl_matrix_get (l->cov, 0, i) + * linreg_get_indep_variable_mean (l, i - 1); } - gsl_matrix_set (cache->cov, 0, 0, tmp); + gsl_matrix_set (l->cov, 0, 0, tmp); - cache->intercept = m; + l->intercept = m; } else { @@ -294,454 +196,295 @@ post_sweep_computations (pspp_linreg_cache *cache, const struct design_matrix *d exit (rc); } } - + /* - Fit the linear model via least squares. All pointers passed to pspp_linreg - are assumed to be allocated to the correct size and initialized to the - values as indicated by opts. + Predict the value of the dependent variable with the new set of + predictors. VALS are assumed to be in the order corresponding to the + order of the coefficients in the linreg struct. */ -int -pspp_linreg (const gsl_vector * Y, const struct design_matrix *dm, - const pspp_linreg_opts * opts, pspp_linreg_cache * cache) +double +linreg_predict (const linreg *c, const double *vals, size_t n_vals) { - int rc; - gsl_matrix *design = NULL; - gsl_matrix_view xtx; - gsl_vector_view xty; - gsl_vector_view xi; - gsl_vector_view xj; - gsl_vector *param_estimates; - struct pspp_coeff *coef; - const struct variable *v; - const union value *val; - - size_t i; size_t j; - double tmp; - double m; - double s; - double ss; + double result; - if (cache == NULL) + assert (n_vals = c->n_coeffs); + if (vals == NULL || c == NULL) { - return GSL_EFAULT; + return GSL_NAN; } - if (opts->get_depvar_mean_std) + if (c->coeff == NULL) { - linreg_mean_std (gsl_vector_const_subvector (Y, 0, Y->size), - &m, &s, &ss); - cache->depvar_mean = m; - cache->depvar_std = s; - cache->sst = ss; + /* The stupid model: just guess the mean. */ + return c->depvar_mean; } - cache_init (cache); - cache->n_coeffs = dm->m->size2; - for (i = 0; i < dm->m->size2; i++) - { - if (opts->get_indep_mean_std[i]) - { - linreg_mean_std (gsl_matrix_const_column (dm->m, i), &m, &s, &ss); - v = design_matrix_col_to_var (dm, i); - val = NULL; - if (var_is_alpha (v)) - { - j = i - design_matrix_var_to_column (dm, v); - val = cat_subscript_to_value (j, v); - } - coef = pspp_linreg_get_coeff (cache, v, val); - pspp_coeff_set_mean (coef, m); - pspp_coeff_set_sd (coef, s); - gsl_vector_set (cache->ssx, i, ss); + result = c->intercept; - } + for (j = 0; j < n_vals; j++) + { + result += linreg_coeff (c, j) * vals[j]; } - if (cache->method == PSPP_LINREG_SWEEP) + return result; +} + +double +linreg_residual (const linreg *c, double obs, const double *vals, size_t n_vals) +{ + if (vals == NULL || c == NULL) { - gsl_matrix *sw; - /* - Subtract the means to improve the condition of the design - matrix. This requires copying dm->m and Y. We do not divide by the - standard deviations of the independent variables here since doing - so would cause a miscalculation of the residual sums of - squares. Dividing by the standard deviation is done GSL's linear - regression functions, so if the design matrix has a poor - condition, use QR decomposition. - - The design matrix here does not include a column for the intercept - (i.e., a column of 1's). If using PSPP_LINREG_QR, we need that column, - so design is allocated here when sweeping, or below if using QR. - */ - design = gsl_matrix_alloc (dm->m->size1, dm->m->size2); - for (i = 0; i < dm->m->size2; i++) - { - v = design_matrix_col_to_var (dm, i); - m = pspp_linreg_get_indep_variable_mean (cache, v); - for (j = 0; j < dm->m->size1; j++) - { - tmp = (gsl_matrix_get (dm->m, j, i) - m); - gsl_matrix_set (design, j, i, tmp); - } - } - sw = gsl_matrix_calloc (cache->n_coeffs + 1, cache->n_coeffs + 1); - xtx = gsl_matrix_submatrix (sw, 0, 0, cache->n_coeffs, cache->n_coeffs); + return GSL_NAN; + } + return (obs - linreg_predict (c, vals, n_vals)); +} - for (i = 0; i < xtx.matrix.size1; i++) - { - tmp = gsl_vector_get (cache->ssx, i); - gsl_matrix_set (&(xtx.matrix), i, i, tmp); - xi = gsl_matrix_column (design, i); - for (j = (i + 1); j < xtx.matrix.size2; j++) - { - xj = gsl_matrix_column (design, j); - gsl_blas_ddot (&(xi.vector), &(xj.vector), &tmp); - gsl_matrix_set (&(xtx.matrix), i, j, tmp); - } - } +double linreg_get_indep_variable_sd (linreg *c, size_t j) +{ + assert (c != NULL); + return gsl_vector_get (c->indep_std, j); +} - gsl_matrix_set (sw, cache->n_coeffs, cache->n_coeffs, cache->sst); - xty = gsl_matrix_column (sw, cache->n_coeffs); - /* - This loop starts at 1, with i=0 outside the loop, so we can get - the model sum of squares due to the first independent variable. - */ - xi = gsl_matrix_column (design, 0); - gsl_blas_ddot (&(xi.vector), Y, &tmp); - gsl_vector_set (&(xty.vector), 0, tmp); - tmp *= tmp / gsl_vector_get (cache->ssx, 0); - gsl_vector_set (cache->ss_indeps, 0, tmp); - for (i = 1; i < cache->n_coeffs; i++) - { - xi = gsl_matrix_column (design, i); - gsl_blas_ddot (&(xi.vector), Y, &tmp); - gsl_vector_set (&(xty.vector), i, tmp); - } +void linreg_set_indep_variable_sd (linreg *c, size_t j, double s) +{ + assert (c != NULL); + gsl_vector_set (c->indep_std, j, s); +} - /* - Sweep on the matrix sw, which contains XtX, XtY and YtY. - */ - reg_sweep (sw); - post_sweep_computations (cache, dm, sw); - gsl_matrix_free (sw); - } - else if (cache->method == PSPP_LINREG_CONDITIONAL_INVERSE) +/* + Mean of the independent variable. + */ +double linreg_get_indep_variable_mean (linreg *c, size_t j) +{ + assert (c != NULL); + return gsl_vector_get (c->indep_means, j); +} + +void linreg_set_indep_variable_mean (linreg *c, size_t j, double m) +{ + assert (c != NULL); + gsl_vector_set (c->indep_means, j, m); +} +static void invert_r (gsl_matrix *r, gsl_matrix *r_inv) +{ + size_t i; + size_t j; + size_t k; + size_t row; + double tmp; + + for (i = 0; i < r->size1; i++) { - /* - Use the SVD of X^T X to find a conditional inverse of X^TX. If - the SVD is X^T X = U D V^T, then set the conditional inverse - to (X^T X)^c = V D^- U^T. D^- is defined as follows: If entry - (i, i) has value sigma_i, then entry (i, i) of D^- is 1 / - sigma_i if sigma_i > 0, and 0 otherwise. Then solve the normal - equations by setting the estimated parameter vector to - (X^TX)^c X^T Y. - */ + gsl_matrix_set (r_inv, i, i, 1.0 / gsl_matrix_get (r, i, i)); } - else + for (i = 0; i < r->size1; i++) { - gsl_multifit_linear_workspace *wk; - /* - Use QR decomposition via GSL. - */ - - param_estimates = gsl_vector_alloc (1 + dm->m->size2); - design = gsl_matrix_alloc (dm->m->size1, 1 + dm->m->size2); - - for (j = 0; j < dm->m->size1; j++) + row = 0; + for (j = row + 1 + i; j < r->size2; j++) { - gsl_matrix_set (design, j, 0, 1.0); - for (i = 0; i < dm->m->size2; i++) + tmp = 0.0; + for (k = 1; k <= j - row; k++) { - tmp = gsl_matrix_get (dm->m, j, i); - gsl_matrix_set (design, j, i + 1, tmp); + tmp += gsl_matrix_get (r, row, row + k) + * gsl_matrix_get (r_inv, row + k, j); } - } - - wk = gsl_multifit_linear_alloc (design->size1, design->size2); - rc = gsl_multifit_linear (design, Y, param_estimates, - cache->cov, &(cache->sse), wk); - for (i = 0; i < cache->n_coeffs; i++) - { - cache->coeff[i]->estimate = gsl_vector_get (param_estimates, i + 1); - } - cache->intercept = gsl_vector_get (param_estimates, 0); - if (rc == GSL_SUCCESS) - { - gsl_multifit_linear_free (wk); - gsl_vector_free (param_estimates); - } - else - { - fprintf (stderr, "%s:%d: gsl_multifit_linear returned %d\n", - __FILE__, __LINE__, rc); + gsl_matrix_set (r_inv, row, j, -tmp / gsl_matrix_get (r, row, row)); + row++; } } - - - cache->ssm = cache->sst - cache->sse; - /* - Get the remaining sums of squares for the independent - variables. - */ - m = 0; - for (i = 1; i < cache->n_indeps; i++) - { - j = i - 1; - m += gsl_vector_get (cache->ss_indeps, j); - tmp = cache->ssm - m; - gsl_vector_set (cache->ss_indeps, i, tmp); - } - - gsl_matrix_free (design); - return GSL_SUCCESS; } -/* - Is the coefficient COEF contained in the list of coefficients - COEF_LIST? - */ -static int -has_coefficient (const struct pspp_coeff **coef_list, const struct pspp_coeff *coef, - size_t n) +static void +linreg_fit_qr (const gsl_matrix *cov, linreg *l) { - size_t i = 0; + gsl_matrix *xtx; + gsl_matrix *q; + gsl_matrix *r; + gsl_vector *xty; + gsl_vector *tau; + gsl_vector *params; + double tmp = 0.0; + size_t i; + size_t j; + + xtx = gsl_matrix_alloc (cov->size1 - 1, cov->size2 - 1); + xty = gsl_vector_alloc (cov->size1 - 1); + tau = gsl_vector_alloc (cov->size1 - 1); + params = gsl_vector_alloc (cov->size1 - 1); - while (i < n) + for (i = 0; i < xtx->size1; i++) { - if (coef_list[i] == coef) + gsl_vector_set (xty, i, gsl_matrix_get (cov, cov->size2 - 1, i)); + for (j = 0; j < xtx->size2; j++) { - return 1; + gsl_matrix_set (xtx, i, j, gsl_matrix_get (cov, i, j)); } - i++; } - return 0; -} -/* - Predict the value of the dependent variable with the - new set of predictors. PREDICTORS must point to a list - of variables, each of whose values are stored in VALS, - in the same order. - */ -double -pspp_linreg_predict (const struct variable **predictors, - const union value **vals, const void *c_, int n_vals) -{ - const pspp_linreg_cache *c = c_; - int j; - size_t next_coef = 0; - const struct pspp_coeff **coef_list; - const struct pspp_coeff *coe; - double result; - double tmp; + gsl_linalg_QR_decomp (xtx, tau); + q = gsl_matrix_alloc (xtx->size1, xtx->size2); + r = gsl_matrix_alloc (xtx->size1, xtx->size2); - if (predictors == NULL || vals == NULL || c == NULL) + gsl_linalg_QR_unpack (xtx, tau, q, r); + gsl_linalg_QR_solve (xtx, tau, xty, params); + for (i = 0; i < params->size; i++) { - return GSL_NAN; + l->coeff[i] = gsl_vector_get (params, i); } - if (c->coeff == NULL) + l->sst = gsl_matrix_get (cov, cov->size1 - 1, cov->size2 - 1); + l->ssm = 0.0; + for (i = 0; i < l->n_indeps; i++) { - /* The stupid model: just guess the mean. */ - return c->depvar_mean; + l->ssm += gsl_vector_get (xty, i) * l->coeff[i]; } - coef_list = xnmalloc (c->n_coeffs, sizeof (*coef_list)); - result = c->intercept; + l->sse = l->sst - l->ssm; - /* - The loops guard against the possibility that the caller passed us - inadequate information, such as too few or too many values, or - a redundant list of variable names. - */ - for (j = 0; j < n_vals; j++) + gsl_blas_dtrsm (CblasLeft, CblasLower, CblasNoTrans, CblasNonUnit, linreg_mse (l), + r, q); + /* Copy the lower triangle into the upper triangle. */ + double intercept_variance = 0.0; + for (i = 0; i < q->size1; i++) { - coe = pspp_linreg_get_coeff (c, predictors[j], vals[j]); - if (!has_coefficient (coef_list, coe, next_coef)) + gsl_matrix_set (l->cov, i + 1, i + 1, gsl_matrix_get (q, i, i)); + for (j = i + 1; j < q->size2; j++) { - tmp = pspp_coeff_get_est (coe); - if (var_is_numeric (predictors[j])) - { - tmp *= vals[j]->f; - } - result += tmp; - coef_list[next_coef++] = coe; + intercept_variance -= 2.0 * gsl_matrix_get (q, i, j) * + linreg_get_indep_variable_mean (l, i) * + linreg_get_indep_variable_mean (l, j); + gsl_matrix_set (q, i, j, gsl_matrix_get (q, j, i)); } } - free (coef_list); - - return result; -} - -double -pspp_linreg_residual (const struct variable **predictors, - const union value **vals, - const union value *obs, const void *c, int n_vals) -{ - double pred; - double result; - - if (predictors == NULL || vals == NULL || c == NULL || obs == NULL) + l->intercept = linreg_get_depvar_mean (l); + tmp = 0.0; + for (i = 0; i < l->n_indeps; i++) { - return GSL_NAN; + tmp = linreg_get_indep_variable_mean (l, i); + l->intercept -= l->coeff[i] * tmp; + intercept_variance += tmp * tmp * gsl_matrix_get (q, i, i); } - pred = pspp_linreg_predict (predictors, vals, c, n_vals); - result = isnan (pred) ? GSL_NAN : (obs->f - pred); - return result; + /* Covariances related to the intercept. */ + intercept_variance += linreg_mse (l) / linreg_n_obs (l); + gsl_matrix_set (l->cov, 0, 0, intercept_variance); + double intcpt_coef = 0.0; + for (i = 0; i < q->size1; i++) + { + for (j = 0; j < q->size2; j++) + { + intcpt_coef -= gsl_matrix_get (q, i, j) + * linreg_get_indep_variable_mean (l, j); + } + gsl_matrix_set (l->cov, 0, i + 1, intcpt_coef); + gsl_matrix_set (l->cov, i + 1, 0, intcpt_coef); + intcpt_coef = 0.0; + } + + gsl_matrix_free (q); + gsl_matrix_free (r); + gsl_vector_free (xty); + gsl_vector_free (tau); + gsl_matrix_free (xtx); + gsl_vector_free (params); } /* - Which coefficient is associated with V? The VAL argument is relevant - only to categorical variables. - */ -struct pspp_coeff * -pspp_linreg_get_coeff (const pspp_linreg_cache * c, - const struct variable *v, const union value *val) + Estimate the model parameters from the covariance matrix. This + function assumes the covariance entries corresponding to the + dependent variable are in the final row and column of the covariance + matrix. +*/ +void +linreg_fit (const gsl_matrix *cov, linreg *l) { - if (c == NULL) + assert (l != NULL); + assert (cov != NULL); + + l->sst = gsl_matrix_get (cov, cov->size1 - 1, cov->size2 - 1); + if (l->method == LINREG_SWEEP) { - return NULL; + gsl_matrix *params; + params = gsl_matrix_calloc (cov->size1, cov->size2); + gsl_matrix_memcpy (params, cov); + reg_sweep (params); + post_sweep_computations (l, params); + gsl_matrix_free (params); } - if (c->coeff == NULL || c->n_indeps == 0 || v == NULL) + else if (l->method == LINREG_QR) { - return NULL; + linreg_fit_qr (cov, l); } - return pspp_coeff_var_to_coeff (v, c->coeff, c->n_coeffs, val); } -/* - Return the standard deviation of the independent variable. - */ -double pspp_linreg_get_indep_variable_sd (pspp_linreg_cache *c, const struct variable *v) + +double linreg_mse (const linreg *c) { - if (var_is_numeric (v)) - { - const struct pspp_coeff *coef; - coef = pspp_linreg_get_coeff (c, v, NULL); - return pspp_coeff_get_sd (coef); - } - return GSL_NAN; + assert (c != NULL); + return (c->sse / c->dfe); } -void pspp_linreg_set_indep_variable_sd (pspp_linreg_cache *c, const struct variable *v, - double s) +double linreg_intercept (const linreg *c) { - if (var_is_numeric (v)) - { - struct pspp_coeff *coef; - coef = pspp_linreg_get_coeff (c, v, NULL); - pspp_coeff_set_sd (coef, s); - } + return c->intercept; } -/* - Mean of the independent variable. - */ -double pspp_linreg_get_indep_variable_mean (pspp_linreg_cache *c, const struct variable *v) +gsl_matrix * +linreg_cov (const linreg *c) { - if (var_is_numeric (v)) - { - struct pspp_coeff *coef; - coef = pspp_linreg_get_coeff (c, v, NULL); - return pspp_coeff_get_mean (coef); - } - return 0.0; + return c->cov; } -void pspp_linreg_set_indep_variable_mean (pspp_linreg_cache *c, const struct variable *v, - double m) +double +linreg_coeff (const linreg *c, size_t i) { - if (var_is_numeric (v)) - { - struct pspp_coeff *coef; - coef = pspp_linreg_get_coeff (c, v, NULL); - pspp_coeff_set_mean (coef, m); - } + return (c->coeff[i]); } -/* - Make sure the dependent variable is at the last column, and that - only variables in the model are in the covariance matrix. - */ -static struct design_matrix * -rearrange_covariance_matrix (const struct covariance_matrix *cm, pspp_linreg_cache *c) +const struct variable * +linreg_indep_var (const linreg *c, size_t i) { - const struct variable **model_vars; - struct design_matrix *cov; - struct design_matrix *result; - size_t *permutation; - size_t i; - size_t j; - size_t k; - size_t n_coeffs = 0; + return (c->indep_vars[i]); +} - assert (cm != NULL); - cov = covariance_to_design (cm); - assert (cov != NULL); - assert (c != NULL); - assert (cov->m->size1 > 0); - assert (cov->m->size2 == cov->m->size1); - model_vars = xnmalloc (1 + c->n_indeps, sizeof (*model_vars)); +size_t +linreg_n_coeffs (const linreg *c) +{ + return c->n_coeffs; +} - /* - Put the model variables in the right order in MODEL_VARS. - Count the number of coefficients. - */ - for (i = 0; i < c->n_indeps; i++) - { - model_vars[i] = c->indep_vars[i]; - } - model_vars[i] = c->depvar; - result = covariance_matrix_create (1 + c->n_indeps, model_vars); - permutation = xnmalloc (design_matrix_get_n_cols (result), sizeof (*permutation)); +double +linreg_n_obs (const linreg *c) +{ + return c->n_obs; +} - for (j = 0; j < cov->m->size2; j++) - { - k = 0; - while (k < result->m->size2) - { - if (design_matrix_col_to_var (cov, j) == design_matrix_col_to_var (result, k)) - { - permutation[k] = j; - } - k++; - } - } - for (i = 0; i < result->m->size1; i++) - for (j = 0; j < result->m->size2; j++) - { - gsl_matrix_set (result->m, i, j, gsl_matrix_get (cov->m, permutation[i], permutation[j])); - } - free (permutation); - free (model_vars); - return result; +double +linreg_sse (const linreg *c) +{ + return c->sse; } -/* - Estimate the model parameters from the covariance matrix only. This - method uses less memory than PSPP_LINREG, which requires the entire - data set to be stored in memory. - - The function assumes FULL_COV may contain columns corresponding to - variables that are not in the model. It fixes this in - REARRANG_COVARIANCE_MATRIX. This allows the caller to compute a - large covariance matrix once before, then pass it to this without - having to alter it. The problem is that this means the caller must - set CACHE->N_COEFFS. -*/ -void -pspp_linreg_with_cov (const struct covariance_matrix *full_cov, - pspp_linreg_cache * cache) + +double +linreg_ssreg (const linreg *c) +{ + return (c->sst - c->sse); +} + +double linreg_sst (const linreg *c) { - struct design_matrix *cov; + return c->sst; +} - assert (full_cov != NULL); - assert (cache != NULL); +double +linreg_dfmodel ( const linreg *c) +{ + return c->dfm; +} - cov = rearrange_covariance_matrix (full_cov, cache); - cache_init (cache); - reg_sweep (cov->m); - post_sweep_computations (cache, cov, cov->m); - design_matrix_destroy (cov); +void +linreg_set_depvar_mean (linreg *c, double x) +{ + c->depvar_mean = x; } -double pspp_linreg_mse (const pspp_linreg_cache *c) +double +linreg_get_depvar_mean (linreg *c) { - assert (c != NULL); - return (c->sse / c->dfe); + return c->depvar_mean; } diff --git a/src/math/linreg.h b/src/math/linreg.h index f9d8c9b3..349d5a90 100644 --- a/src/math/linreg.h +++ b/src/math/linreg.h @@ -20,14 +20,12 @@ #include #include #include -#include -#include enum { - PSPP_LINREG_CONDITIONAL_INVERSE, - PSPP_LINREG_QR, - PSPP_LINREG_SWEEP, + LINREG_CONDITIONAL_INVERSE, + LINREG_QR, + LINREG_SWEEP, }; @@ -89,9 +87,9 @@ typedef struct pspp_linreg_opts_struct pspp_linreg_opts; */ -struct pspp_linreg_cache_struct +struct linreg_struct { - int n_obs; /* Number of observations. */ + double n_obs; /* Number of observations. */ int n_indeps; /* Number of independent variables. */ int n_coeffs; /* The intercept is not considered a coefficient here. */ @@ -102,8 +100,7 @@ struct pspp_linreg_cache_struct const struct variable *depvar; const struct variable **indep_vars; - gsl_vector *residuals; - struct pspp_coeff **coeff; + double *coeff; double intercept; int method; /* Method to use to estimate parameters. */ /* @@ -132,11 +129,6 @@ struct pspp_linreg_cache_struct dfe, but since it is the best unbiased estimate of the population variance, it has its own entry here. */ - gsl_vector *ssx; /* Centered sums of squares for independent - variables, i.e. \sum (x[i] - mean(x))^2. */ - double ssy; /* Centered sums of squares for dependent - variable. - */ /* Covariance matrix of the parameter estimates. */ @@ -148,79 +140,57 @@ struct pspp_linreg_cache_struct double dfe; double dfm; - /* - 'Hat' or Hessian matrix, i.e. (X'X)^{-1}, where X is our - design matrix. - */ - gsl_matrix *hat; - - double (*predict) (const struct variable **, const union value **, - const void *, int); - double (*residual) (const struct variable **, - const union value **, - const union value *, const void *, int); - /* - Returns pointers to the variables used in the model. - */ - int (*get_vars) (const void *, const struct variable **); - struct variable *resid; struct variable *pred; - + struct variable *resid; }; -typedef struct pspp_linreg_cache_struct pspp_linreg_cache; +typedef struct linreg_struct linreg; -/* - Allocate a pspp_linreg_cache and return a pointer - to it. n is the number of cases, p is the number of - independent variables. - */ -pspp_linreg_cache *pspp_linreg_cache_alloc (const struct variable *, const struct variable **, - size_t, size_t); +linreg *linreg_alloc (const struct variable *, const struct variable **, + double, size_t); -bool pspp_linreg_cache_free (void *); +bool linreg_free (void *); /* Fit the linear model via least squares. All pointers passed to pspp_linreg are assumed to be allocated to the correct size and initialized to the values as indicated by opts. */ -int -pspp_linreg (const gsl_vector *, const struct design_matrix *, - const pspp_linreg_opts *, pspp_linreg_cache *); +void +linreg_fit (const gsl_matrix *, linreg *); double -pspp_linreg_predict (const struct variable **, const union value **, - const void *, int); +linreg_predict (const linreg *, const double *, size_t); double -pspp_linreg_residual (const struct variable **, const union value **, - const union value *, const void *, int); -/* - All variables used in the model. - */ -int pspp_linreg_get_vars (const void *, const struct variable **); +linreg_residual (const linreg *, double, const double *, size_t); +const struct variable ** linreg_get_vars (const linreg *); -struct pspp_coeff *pspp_linreg_get_coeff (const pspp_linreg_cache - *, - const struct variable - *, - const union value *); /* Return or set the standard deviation of the independent variable. */ -double pspp_linreg_get_indep_variable_sd (pspp_linreg_cache *, const struct variable *); -void pspp_linreg_set_indep_variable_sd (pspp_linreg_cache *, const struct variable *, double); +double linreg_get_indep_variable_sd (linreg *, size_t); +void linreg_set_indep_variable_sd (linreg *, size_t, double); /* Mean of the independent variable. */ -double pspp_linreg_get_indep_variable_mean (pspp_linreg_cache *, const struct variable *); -void pspp_linreg_set_indep_variable_mean (pspp_linreg_cache *, const struct variable *, double); - -/* - Regression using only the covariance matrix. - */ -void pspp_linreg_with_cov (const struct covariance_matrix *, pspp_linreg_cache *); -double pspp_linreg_mse (const pspp_linreg_cache *); +double linreg_get_indep_variable_mean (linreg *, size_t); +void linreg_set_indep_variable_mean (linreg *, size_t, double); + +double linreg_mse (const linreg *); + +double linreg_intercept (const linreg *); + +gsl_matrix * linreg_cov (const linreg *); +double linreg_coeff (const linreg *, size_t); +const struct variable * linreg_indep_var (const linreg *, size_t); +size_t linreg_n_coeffs (const linreg *); +double linreg_n_obs (const linreg *); +double linreg_sse (const linreg *); +double linreg_ssreg (const linreg *); +double linreg_dfmodel (const linreg *); +double linreg_sst (const linreg *); +void linreg_set_depvar_mean (linreg *, double); +double linreg_get_depvar_mean (linreg *); #endif