La revista Psicothema fue fundada en Asturias en 1989 y está editada conjuntamente por la Facultad y el Departamento de Psicología de la Universidad de Oviedo y el Colegio Oficial de Psicología del Principado de Asturias. Publica cuatro números al año.
Se admiten trabajos tanto de investigación básica como aplicada, pertenecientes a cualquier ámbito de la Psicología, que previamente a su publicación son evaluados anónimamente por revisores externos.
Psicothema, 1996. Vol. Vol. 8 (nº 3). 691-697
Enrique Moreno González
Universidad Nacional de Educación a Distancia
En este trabajo se presenta un programa, escrito en QBASIC, para el ajuste de tres tipo de funciones psicofísicas (logarítmica, potencial y lineal) y el contraste de la hipótesis de linealidad del ajuste. El programa proporciona la tabla del Análisis de Varianza de la Regresión, con las sumas de cuadrados que permiten efectuar el contraste de linealidad, los parámetros de la función de ajuste elegida, el coeficiente de correlación y el coeficiente de determinación.
A program for testing linearity applied to the fit of the psychophysical responses. In this work we present a program, written in QBASIC language, to fit three types of psychophysical functions (logarithmic, power and linear). The program provides the table of Analysis of Variance of regression, with the sum of squares which allows to carry out the test of linearity, the parameters of the fitted function, Pearsons correlation coefficient, and the coefficient of determination.
Dentro del ámbito de la Psicofísica, el ajuste del binomio estímulo-sensación mediante funciones ha ocupado a buena parte de los investigadores, comenzando por el propio Fechner (1860), padre de la disciplina; para éste, la relación entre estímulo y sensación es logarítmica y puede expresarse del siguiente modo:
S = b LnE + a
donde E representa la magnitud del Estímulo, S la magnitud de la Sensación y a y b los parámetros de la función.
Posteriormente, varias décadas después, Stevens (1975)1 descubrió experimentalmente -a diferencia de Fechner, que lo elaboró de manera teórica- que los datos de los diferentes ensayos psicofísicos que efectuó se ajustaban de manera más precisa a una función potencial del tipo:
S = cEn
donde E = magnitud estímulo; S = magnitud sensación; c y n parámetros de la función.
Esta función es linealizable aplicando logaritmos a ambos términos de la ecuación, con lo que adopta la forma:
Ln S = Ln c + nLn E
Otros autores (Cadwallader, 1973; Fontes, 1988; Moreno, 1994; Rodríguez Miñón, 1989) postulan la función lineal como función descriptiva de la relación entre intensidad del estímulo y magnitud de la sensación, fundamentalmente cuando se hacen juicios de longitudes de segmentos rectilíneos. La función lineal puede expresarse así:
S = d E + f
donde E = magnitud estímulo; S = magnitud sensación; d y f parámetros de la función.
Como criterio de bondad del ajuste de la función de regresión, se adopta el coeficiente de correlación al cuadrado, R2, que informa del porcentaje de variación de la sensación que es explicada por la variación estimular. Sin embargo, como han señalado algunos autores (Birnbaum, 1973; Weiss, 1981; Rodríguez Miñón, Garriga y Ponsoda, 1991), el hecho de obtener valor significativos de la regresión no implica que la relación entre el estímulo y la sensación tenga únicamente un componente lineal.
Para la realización del contraste de linealidad se descompone la suma de cuadrados total, es decir, las desviaciones al cuadrado de cada observación de la variable dependiente (sensación, S) respecto a la media total, en tres componentes:
donde:
Sij = respuestas para cada uno de los p estímulos
= media total de las respuestas
i= medias de las respuestas al estímulo clase i
i = medias para la clase i bajo la hipótesis de linealidad
m = número de observaciones para el estímulo clase i
Para contrastar la hipótesis de linealidad, se comparan las medias muestrales estimadas directamente a partir de los datos,i, con las medias muestrales estimadas bajo la hipótesis de linealidad,i, y este estadístico sigue una distribución F. Las características del test se resumen en la Tabla 1.
Para una explicación más detallada del fundamento del contraste puede consultarse en Peña (1987) y Johnston (1984). Si el resultado del contraste es significativo es obligado proceder a ajustar una función de mayor grado (generalmente cuadrático) para describir apropiadamente la relación entre estímulo y sensación.
Características del programa
El programa, escrito en QBASIC -por su amplia difusión en PC’s-, está diseñado para calcular los parámetros de tres tipos de funciones de ajuste y el contraste de linealidad del ajuste, y presenta cinco bloques diferenciados:
Bloque 1. Elección del tipo de ajuste que se desea efectuar. Opciones: Logarítmica, Potencial y Lineal.
Bloque 2. Declaración de la matriz para almacenar las respuestas de los observadores; declaración del vector para almacenar las magnitudes de los estímulos; declaración de los vectores necesarios para los cálculos intermedios. Hecha la declaración se procede a la lectura de los datos estímulo-respuesta (almacenados en un fichero externo) y se inicializan a cero los vectores para cálculos intermedios
Bloque 3. Transformación de los datos en función del tipo de ajuste elegido en Bloque 1.
Bloque 4. Algoritmo para obtener los parámetros de la función de ajuste y contrastar la hipótesis de linealidad de la función.
Bloque 5. Salida de resultados. El programa proporciona los sumas de cuadrados, grados de libertad y medias cuadrática que se muestran en la Tabla 1. Además indica el tipo de ajuste efectuado, los parámetros de dicho ajuste (pendiente y ordenada), el coeficiente de correlación estímulo-respuesta, el coeficiente de determinación, y los valores del estadístico F del contraste de regresión y del contraste de linealidad, con su significación correspondiente; para evaluar ésta F se incluye la subfunción DISTRIF.
Este programa ya ha sido empleado con éxito en el ajuste de los datos a tres diferentes funciones (logarítmica, potencial y lineal), con sus respectivos contrastes de linealidad, en la investigación de Moreno (1994), centrada en el análisis de los juicios psicofísicos de estimación de magnitudes de longitud y superficie, bajo diferentes condiciones experimentales.
En el Apéndice 1 se presenta el código fuente del programa, con una explicación detallada de los vectores y variables que se declaran para efectuar los cálculos intermedios. En el Apéndice 2 se muestra un conjunto de datos y la salida de resultados cuando se ejecuta el programa sobre ese conjunto.
APENDICE 1
CODIGO FUENTE DEL PROGRAMA
DECLARE SUB DISTRIF (F!, gln%, gld%)
‘ AUTOR: Enrique Moreno González
‘ FACULTAD DE PSICOLOGIA. UNED. MADRID, 1994
‘ LENGUAJE: QBASIC
‘**************************************
‘ BLOQUE 1: Elección del tipo de ajuste
‘**************************************
‘ En primer lugar, el usuario del programa debe especificar el
‘ tipo de función a que quiere ajustar los datos. Los tres tipos
‘ contemplados son el ajuste Lineal, el ajuste Potencial, y el
‘ ajuste Logarítmico.
CLS
LOCATE 10, 12: PRINT "Seleccionar opción"
LOCATE 13, 12: PRINT "1. Ajuste logarítmico"
LOCATE 14, 12: PRINT "2. Ajuste potencial"
LOCATE 15, 12: PRINT "3. Ajuste lineal"
LOCATE 16, 12: PRINT "4. Salir del programa"
DO
LOCATE 18, 15: INPUT "Opción #...", AJUSTE%
LOOP UNTIL AJUSTE% < 5 AND AJUSTE% > 0
IF AJUSTE% = 4 THEN
END
END IF
‘**************************************
‘ BLOQUE 2: Declaración de matrices y vectores para almacenar los datos y acumular los cálculos intermedios
‘**************************************
‘ El fichero con los datos de las estimaciones debe estar compuesto
‘ por dos columnas (primera: magnitud de los estímulos; segunda:
‘ estimaciones numéricas de los sujetos) y tantas filas como ensayos
‘ se hayan efectuado a lo largo de una sesión (para cada estímulo
‘ han de realizarse el mismo número de ensayos). Este fichero debe estar
‘ en orden ascendente de magnitud de los C estímulos para que la solución
‘ del contraste sea correcta. Este orden supone que los N ensayos del
‘ estímulo primero deben estar escritos de manera consecutiva en el
‘ fichero, luego los N ensayos del estímulo segundo, y así sucesivamente.
‘ Si no está ordenado el fichero en el sentido anterior, es preciso
‘ efectuar algún procedimiento de ordenación antes de aplicar
‘ el algoritmo de resolución de los ajuste y el contraste de linealidad
‘ presentado en este programa.
INPUT "Nombre del fichero con las estimaciones"; FILE$
INPUT "Número de estímulos presentados (clases): "; C
INPUT "Número de veces que se presenta cada estímulo: "; N
‘ Declaración de matrices (entre paréntesis la dimensión)
‘ para almacenar los datos contenidos en el fichero.
‘ El nombre del fichero está declarado en FILE$
‘ ADATOSY(c,n): almacenará las respuestas de los observadores
‘ ACLASEX(c): almacenará la magnitud de los estímulos
‘ ASUMAY(c): almacenará sumatorio de las n respuestas para cada estímulo
‘ ASUMA2Y(c): almacenará sumatorio de las n respuestas al cuadrado
‘ AMEDYCLASX(c): almacenará las medias de las n respuestas para cada estímulo
‘ ADTYCLASX(C): almacenará la desv. típica de las n respuestas para cada estímulo
DIM ADATOSY(C, N), ASUMAY(C), ASUMAY2(C)
DIM AMEDYCLASX(C), ADTYCLASX(C), ACLASEX(C)
‘ Abrir fichero con los datos
OPEN "I", #1, FILE$
‘ Carga las matrices ADATOSY con los juicios de los sujetos
‘ y la matriz ACLASEX con la magnitud de los estímulos. El resto
‘ de matrices declaradas con la sentencia DIM se inicializan a 0.
FOR I = 1 TO C
ASUMAY(I) = 0
ASUMAY2(I) = 0
AMEDYCLASX(I) = 0
ADTYCLASX(I) = 0
FOR J = 1 TO N
INPUT #1, ACLASEX(I), ADATOSY(I, J)
NEXT
NEXT
CLOSE #1
‘**************************************
‘ BLOQUE 3: Transformación de los datos en función del tipo de ajuste
‘**************************************
‘ Transformación de los datos en función del ajuste que se haya
‘ especificado al comienzo del programa
FOR I = 1 TO C
IF AJUSTE% = 1 OR AJUSTE% = 2 THEN
ACLASEX(I) = LOG(ACLASEX(I))
END IF
FOR J = 1 TO N
IF AJUSTE% = 2 THEN
ADATOSY(I, J) = LOG(ADATOSY(I, J))
END IF
NEXT
NEXT
‘**************************************
‘ BLOQUE 4: Algoritmo para:
‘ Cálculo de parámetros de la regresión.
‘ Cálculo de coeficiente de correlación de Pearson.
‘ Cálculo del coeficiente de determinación.
‘ Cálculo de las sumas de cuadrados de la Tabla 1 (ver texto).
‘ Cálculo valor de F del contraste de regresión.
‘ Cálculo valor de F del contraste de linealidad.
‘**************************************
‘ Descripción del contenido de las variables empleadas para
‘ los cálculos
‘ SUMAX: Sumatorio de los estimulo (en ACLASEX)
‘ SUMAX2: Sumatorio de los estímulos al cuadrado
‘ SUMAY: Sumatorio de las respuestas (en ADATOSY)
‘ SUMAY2: Sumatorio de las respuestas al cuadrado
‘ SUMMDY: Sumatorio de las medias de respuesta por estímulo (en AMEDYCLASX)
‘ SUMMDY2: Sumatorio medias de respuesta al cuadrado
‘ SUMAXPORY: Sumatorio productos cruzados estímulo por media de respuesta
‘ DESVX: Desviación de los estímulos
‘ DESVY: Desviación de las respuestas medias
‘ DESVXY: Desviación productos cruzados estímulo por media respuesta
‘ BETA: Pendiente de la función de ajuste
‘ ALFA: Intercepto de la función de ajuste
‘ S1: Suma de cuadrados de la regresión (en Tabla 1, SC1)
‘ S2: Suma de cuadrados media condicionada respecto regresión (en Tabla 1, SC2)
‘ S3: Suma de cuadrados de las respuestas respecto a la medias condicionadas (en Tabla 1, SC3)
‘ S4: Suma de cuadrados total (en Tabla 1, SC4)
‘ GLS1: Grados de libertad S1
‘ GLS2: Grados de libertad S2
‘ GLS3: Grados de libertad S3
‘ GLS4: Grados de libertad S4
‘ RXY: Coeficiente de correlación de Pearson
‘ FSRXY: Valor estadístico F para contraste regresión
‘ FLINEAL: Valor estadístico F para contraste linealidad
FOR I = 1 TO C
FOR J = 1 TO N
ASUMAY(I) = ASUMAY(I) + ADATOSY(I, J)
ASUMAY2(I) = ASUMAY2(I) + ADATOSY(I, J) ^ 2
NEXT
AMEDYCLASX(I) = ASUMAY(I) / N
ADTYCLASX(I) = ASUMAY2(I) / N - (AMEDYCLASX(I) ^ 2)
SUMAX = SUMAX + ACLASEX(I)
SUMAX2 = SUMAX2 + (ACLASEX(I) ^ 2)
SUMMDY = SUMMDY + AMEDYCLASX(I)
SUMMDY2 = SUMMDY2 + (AMEDYCLASX(I) ^ 2)
SUMAXPORY = SUMAXPORY + (ACLASEX(I) * AMEDYCLASX(I))
S3 = S3 + (ASUMAY2(I) - 1 / N * (ASUMAY(I) ^ 2))
SUMAY = SUMAY + ASUMAY(I)
SUMAY2 = SUMAY2 + ASUMAY2(I)
NEXT
DESVX = SUMAX2 - (SUMAX ^ 2 / C)
DESVXY = SUMAXPORY - (SUMAX * SUMMDY / C)
DESVY = SUMMDY2 - (SUMMDY ^ 2 / C)
BETA = DESVXY / DESVX
ALFA = (SUMMDY / C) - (BETA * (SUMAX / C))
S4 = SUMAY2 - (1 / (C * N)) * SUMAY ^ 2
S1 = N * (DESVXY ^ 2 / DESVX)
S2 = S4 - (S1 + S3)
RXY = SQR(S1 / S4)
‘ Grados de libertad
GLS1 = 1
GLS2 = C - 2
GLS3 = C * (N - 1)
GLS4 = C * N - 1
‘ Cálculo de las significación de la correlación (FSRXY),
‘ y la del contraste de linealidad (FLINEAL)
FSRXY = (S1 / GLS1) / ((S2 + S3) / (GLS2 + GLS3))
FLINEAL = (S2 / GLS2) / (S3 / GLS3)
‘**************************************
‘ BLOQUE 5: Salida de resultados
‘ 1. Tabla del ANVA de la Regresión (Sumas de cuadrados y grad. libertad
‘ 2. Tipo de Ajuste realizado
‘ 3. Parámetros regresión (BETA, ALFA). Coeficiente correlación
‘ Valor F contraste regresión, grados de libertad y significación
‘ estadística. Coeficiente de determinación. Valor F contraste
‘ linealidad, grados de libertad y significación
‘**************************************
PRINT "ANALISIS DE VARIANZA DE LA REGRESION"
PRINT "________________"
PRINT "Regresión S1 = ";
PRINT USING "####.###"; S1; GLS1
PRINT "Medias respecto reg. S2 = ";
PRINT USING "####.###"; S2; GLS2; S2 / GLS2
PRINT "Intra clases S3 = ";
PRINT USING "####.###"; S3; GLS3; S3 / GLS3
PRINT "Total S4 = ";
PRINT USING "####.###"; S4; GLS4
PRINT "___________________"
IF AJUSTE% = 1 THEN
PRINT "AJUSTE logarítmico"
END IF
IF AJUSTE% = 2 THEN
PRINT "AJUSTE POTENCIAL"
ALFA = EXP(ALFA)
END IF
IF AJUSTE% = 3 THEN
PRINT "AJUSTE LINEAL"
END IF
PRINT "__________________"
PRINT "PENDIENTE RECTA DE REGRESION................ "; BETA
PRINT "ORDENADA RECTA DE REGRESION................. "; ALFA
PRINT "COEFICIENTE DE CORRELACION LINEAL DE PERSON. "; RXY
PRINT "VALOR F CONTRASTE REGRESION LINEAL.......... "; FSRXY
PRINT "G.D.L. F REG. LINEAL (num. y den.).......... "; GLS1, GLS2 + GLS3
GN% = GLS1: GD% = GLS2 + GLS3: VF! = FSRXY
PRINT "PROBABILIDAD DE F REGRESION................. ";
CALL DISTRIF(VF!, GN%, GD%)
PRINT "COEFICIENTE DE DETERMINACION................ "; RXY ^ 2
PRINT "VALOR F DEL CONTRASTE LINEALIDAD............ "; FLINEAL
PRINT "G.D.L. F linealidad (num. y den.)........... "; GLS2, GLS3
GN% = GLS2: GD% = GLS3: VF! = FLINEAL
PRINT "PROBABILIDAD DE F DE LINEALIDAD............. ";
CALL DISTRIF(VF!, GN%, GD%)
PRINT "Pulse cualquier tecla para terminar";
DO
TECLA$ = INKEY$
LOOP WHILE TECLA$ = ""
END
SUB DISTRIF (F!, gln%, gld%)
IF F! = 0 THEN
END
END IF
X = 1
IF F! < 1 THEN
A = gld%
B = gln%
C = 1 / F!
ELSE
A = gln%
B = gld%
C = F!
END IF
G1 = 2 / (9 * A)
G2 = 2 / (9 * B)
Y = ABS((1 - G2) * C ^ (1 / 3) - 1 + G1) / SQR(G2 * C ^ (2 / 3) + G1)
IF B < 4 THEN
Y = Y * (.08 * Y ^ 4 + 1 / B ^ 3)
END IF
X = .5 / (1 + .196854 * Y + .115194 * Y ^ 2 + .000344 * Y ^ 3 + .019527 * Y ^ 4) ^ 4
X = INT(10000 * X + .5) / 10000
IF F! < 1 THEN
X = 1 - X
END IF
PRINT X;
END SUB
*** SALIDA DEL PROGRAMA CON LOS DATOS QUE APARECEN EN LA TABLA 2
Número de estímulos presentados (clases): ? 20
Número de veces que se presenta cada estímulo: ? 7
ANALISIS DE VARIANZA DE LA REGRESION
Regresión Medias respecto ----------S1 = 180.572----------------1.000
reg. 0.251 ---------------------------S2 = 4.511 -----------------18.000
Intra clases 0.022 ---------------S3 = 2.675 ---------------120.000
Total-----------------------------------S4 = 187.757 -----------139.000
AJUSTE POTENCIAL
Pendiente recta de regresión ----------------------------7168561
Ordenada recta de regresión -----------------------------2.14921
Coeficiente de correlac. lineal de Pearson -----------9806783
Valor F constante regresión lineal --------------------3467.957
G.D.L. F REG. Lineal (num. y den.)--------------------- 1........ 138
Probabilidad de F regresión------------------------------------0
Coeficiente de determinación ---------------------------9617299
Valor F del contraste linealidad ------------------------11.24182
G.D.L. F linealidad (num. y den.)------------------------18......120
Probabilidad de F de linealidad ------------------------------------0
Notas
(1) Se hace referencia sólo a la última obra del autor, editada con carácter póstumo, pues es una síntesis clarificadora de su fructífera labor investigadora en el campo de la Psicofísica.
Birnbaum, M.H. (1973): The devil rides again: correlation as an index of fit. Psychological Bulletin, 79 (4), 239-242.
Cadwallader, M. (1973): A methodological examination of cognitive distance. En N.F. Preiser (Ed). Environmental design research. Stroudsburg, P.A.: Dowden, Hutchinson and Ross.
Fontes, S. (1988): Psicofísica de la estimación de distancias entre dos rectas verticales y paralelas. Tesis Doctoral no publicada. Madrid: UNED.
Johnston, J. (1984): Econometric Methods. N. York: McGraw-Hill.
Moreno, E. (1994): Análisis de los juicios psicofísicos con la técnica de estimación de magnitudes. Tesis Doctoral no publicada. Madrid: UNED.
Peña, D. (1987): Estadística. Modelos y métodos. Madrid: Alianza., Madrid.
Rodríguez Miñón, P. (1989): Ajuste de Funciones: Psicofísica. Tesis Doctoral no publicada. Universidad Autónoma de Madrid.
Rodríguez Miñon, P, Garriga, A. y Ponsoda, V. (1991): Opciones no lineales en las funciones psicofísicas. Psicológica, 12, 187-194.
Stevens, S. (1975): Psychophysics: Introduction to its Perceptual, Neural, and Social Prospects. Hove: John Wiley and Sons.
Weiss, D.J. (1981): The imposible dream of Fechner and Stevens. Perception, 10, 431-434.
Aceptado el 18 de octubre de 1995