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 <Miguel.Quesada@uab.cat>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
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."
"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."
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
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
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."
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 ""
#. 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."
"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 %<PRIu8>."
msgstr "Format de variable %<PRIu8> 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, "
"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 "
"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 "
"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 "
"%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)"
"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."
"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 "
"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 "
"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. "
"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 "
"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 "
"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 "
"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."
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 "
"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 ""
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:"
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"
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"
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
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"
#: 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"
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
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
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."
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
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."
#: 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."
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"
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 "
"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 %"
"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."
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
#: 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"
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 ""
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"
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"
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"
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"
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\""
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"
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"
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"
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 ""
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"
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 "
"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 "
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"
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"
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"
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 "
"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"
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"
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:"
#: 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"
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:"
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"
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"
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"
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"
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 <john@darrington.wattle.id.au>\n"
"Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
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 ""
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
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
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 ""
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."
"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 %<PRIu8>."
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 ""
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 ""
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 ""
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 ""
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 ""
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
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 ""
#: 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 ""
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
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
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 ""
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
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."
#: 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 ""
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 ""
"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 ""
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
#: 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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 "
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 ""
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 ""
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"
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
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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"
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 ""
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 <Miguel.Quesada@uab.cat>\n"
"Language-Team: Spanish <es@li.org>\n"
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."
"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."
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
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
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."
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 ""
#. 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."
"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 %<PRIu8>."
msgstr "Formato de variable %<PRIu8> 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, "
"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 "
"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)."
"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 "
"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 "
"%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)"
"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."
"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 "
"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 "
"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. "
"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 "
"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 "
"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 "
"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."
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 "
"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 ""
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:"
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"
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"
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
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"
#: 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"
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
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
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."
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
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."
#: 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"
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"
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 "
"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 %"
"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."
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
#: 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"
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 ""
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"
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"
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"
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"
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\""
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"
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"
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"
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 ""
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."
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 "
"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 "
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"
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"
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"
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 "
"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"
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"
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:"
#: 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"
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:"
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"
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"
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"
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"
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 <pspp@sjpaes.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
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."
"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."
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
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
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."
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 ""
#. 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 %<PRIu8>."
msgstr "Onbekend variabelenopmaak %<PRIu8>."
-#: 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, "
"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 "
"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)."
"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 "
"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 "
"%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)"
"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."
"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 "
"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 "
"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. "
"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."
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 "
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 ""
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:"
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"
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"
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"
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
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"
#: 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"
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
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
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."
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
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."
#: 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"
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"
"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 "
"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 %"
"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"
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 ""
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."
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"
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"
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."
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."
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 "
"%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 "
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 "
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"
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"
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"
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"
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:"
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"
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:"
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"
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"
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"
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."
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 <michel@cecaps.ufmg.br>\n"
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
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."
"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."
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
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
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."
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 %<PRIu8>."
msgstr "Variável de formato %<PRIu8> 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, "
"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 "
"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)."
"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 "
"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 "
"%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."
"Í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 "
"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. "
"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."
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 "
"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 ""
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:"
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"
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"
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
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"
#: 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"
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
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
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 ""
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
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."
#: 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"
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 ""
"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."
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
#: 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"
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 ""
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"
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"
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"
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"
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\""
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"
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 ""
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 ""
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 ""
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."
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 "
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 ""
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"
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"
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
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"
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:"
#: 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"
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 ""
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"
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"
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"
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\""
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 \
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- 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 <config.h>
-
-#include <assert.h>
-#include <data/category.h>
-#include <data/value.h>
-#include <data/variable.h>
-#include <gl/xalloc.h>
-#include <libpspp/message.h>
-#include <stdlib.h>
-#include <string.h>
-
-#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;
-}
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- 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 <stdbool.h>
-#include <stddef.h>
-
-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
#include "data/attributes.h"
#include "data/case.h"
-#include "data/category.h"
#include "data/identifier.h"
#include "data/mrset.h"
#include "data/settings.h"
#include <stdlib.h>
#include <data/attributes.h>
-#include <data/category.h>
#include <data/data-out.h>
#include <data/format.h>
#include <data/dictionary.h>
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;
};
v->short_name_cnt = 0;
v->aux = NULL;
v->aux_dtor = NULL;
- v->obs_vals = NULL;
attrset_init (&v->attributes);
return v;
- 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)
{
{
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);
free (v->aux);
}
\f
-/* 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;
-}
-\f
/* 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
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 *);
#include <libpspp/assertion.h>
#include <math/covariance.h>
#include <math/correlation.h>
-#include <math/design-matrix.h>
#include <gsl/gsl_matrix.h>
#include <data/casegrouper.h>
#include <data/casereader.h>
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);
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))
#include <stdlib.h>
#include <data/case.h>
-#include <data/category.h>
#include <data/casegrouper.h>
#include <data/casereader.h>
#include <data/dictionary.h>
#include <libpspp/compiler.h>
#include <libpspp/hash.h>
#include <libpspp/message.h>
-#include <math/covariance-matrix.h>
+#include <math/covariance.h>
#include <math/coefficient.h>
#include <math/linreg.h>
#include <math/moments.h>
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"));
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;
}
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)
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);
#include <gsl/gsl_vector.h>
#include <math.h>
#include <stdlib.h>
-
#include <data/case.h>
#include <data/casegrouper.h>
#include <data/casereader.h>
-#include <data/category.h>
#include <data/dictionary.h>
#include <data/missing-values.h>
#include <data/procedure.h>
#include <libpspp/compiler.h>
#include <libpspp/message.h>
#include <libpspp/taint.h>
-#include <math/design-matrix.h>
-#include <math/coefficient.h>
+#include <math/covariance.h>
#include <math/linreg.h>
#include <math/moments.h>
#include <output/tab.h>
{
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).
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;
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);
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;
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);
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);
}
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);
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 */
}
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;
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;
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
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);
}
/*
if (t->trns_id == t->n_trns)
{
- result = pspp_linreg_cache_free (t->c);
+ result = linreg_free (t->c);
}
free (t);
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);
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;
}
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);
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);
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;
}
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;
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. */
{
if (*lc != NULL)
{
- pspp_linreg_cache_free (*lc);
+ linreg_free (*lc);
}
}
}
{
struct casegrouper *grouper;
struct casereader *group;
- pspp_linreg_cache **models;
+ linreg **models;
bool ok;
size_t i;
}
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)
{
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;
}
## 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
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 \
--- /dev/null
+/* 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 <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include "categoricals.h"
+
+#include <gl/xalloc.h>
+#include <data/variable.h>
+#include <data/case.h>
+#include <data/value.h>
+#include <libpspp/hmap.h>
+#include <libpspp/pool.h>
+
+#include <libpspp/str.h>
+
+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;
+}
--- /dev/null
+/* 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 <http://www.gnu.org/licenses/>. */
+
+
+#ifndef _CATEGORICALS__
+#define _CATEGORICALS__
+
+#include <stddef.h>
+#include <data/missing-values.h>
+
+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
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- Create and update the values in the covariance matrix.
-*/
-#include <assert.h>
-#include <config.h>
-#include <data/case.h>
-#include <data/category.h>
-#include <data/variable.h>
-#include <data/value.h>
-#include <libpspp/hash.h>
-#include <libpspp/hash-functions.h>
-#include <math/covariance-matrix.h>
-#include <math/moments.h>
-#include <string.h>
-#include <xalloc.h>
-
-/*
- 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));
-}
-
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- Create covariance matrices for procedures that need them.
- */
-
-#ifndef COVARIANCE_MATRIX_H
-#define COVARIANCE_MATRIX_H
-
-#include <math/design-matrix.h>
-#include <math/interaction.h>
-
-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
#include <config.h>
+#include <libpspp/assertion.h>
#include "covariance.h"
#include <gl/xalloc.h>
#include "moments.h"
#include <data/case.h>
#include <data/variable.h>
#include <libpspp/misc.h>
+#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;
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;
};
-/* 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);
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;
}
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)
}
+/*
+ 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);
}
}
}
+
+ cov->pass_one_first_case_seen = true;
}
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);
}
/* 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);
}
+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;
/* 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);
}
/* 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)];
}
+/*
+ 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]);
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);
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- Create design matrices for procedures that need them.
-*/
-#include <config.h>
-
-#include "design-matrix.h"
-
-#include <assert.h>
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libpspp/message.h>
-#include <data/variable.h>
-#include <data/category.h>
-#include <data/value.h>
-
-#include <gsl/gsl_machine.h>
-#include <gsl/gsl_vector.h>
-#include <gsl/gsl_matrix.h>
-
-#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;
-}
+++ /dev/null
-/* 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 <http://www.gnu.org/licenses/>. */
-
-/*
- Create design matrices for procedures that need them.
- */
-
-#ifndef DESIGN_MATRIX_H
-#define DESIGN_MATRIX_H
-
-#include <gsl/gsl_matrix.h>
-#include <stdbool.h>
-#include <data/category.h>
-
-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
#include <gsl/gsl_cblas.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_fit.h>
+#include <gsl/gsl_linalg.h>
#include <gsl/gsl_multifit.h>
#include <linreg/sweep.h>
-#include <math/coefficient.h>
#include <math/linreg.h>
-#include <math/coefficient.h>
-#include <math/design-matrix.h>
-#include <src/data/category.h>
#include <src/data/variable.h>
#include <src/data/value.h>
#include <gl/xalloc.h>
*/
-/*
- 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;
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.
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
{
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;
}
#include <gsl/gsl_math.h>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_matrix.h>
-#include <src/math/coefficient.h>
-#include <math/covariance-matrix.h>
enum
{
- PSPP_LINREG_CONDITIONAL_INVERSE,
- PSPP_LINREG_QR,
- PSPP_LINREG_SWEEP,
+ LINREG_CONDITIONAL_INVERSE,
+ LINREG_QR,
+ LINREG_SWEEP,
};
*/
-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. */
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. */
/*
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.
*/
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