Fórmula de la línea de ajuste y la columna de intersección, ayuda con un errorJMP18.1.1
Estoy trabajando con datos de medición, donde me gustaría calcular una línea de ajuste en un punto de datos en particular, utilizando los puntos de datos vecinos. Para luego obtener una intersección con el eje x para y = 0.
Mirando alrededor y tratando de resolver esto yo mismo, parece que puedo hacerlo usando la función 'Regresión lineal' o 'Resolución de mínimos cuadrados' en JMP.
He hecho esto en una fórmula de columna (con una declaración if para identificar el punto de datos sobre el cual evaluar):
x = J( 2, 1, 0 );
y = J( 2, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Este código produce el resultado correcto, pero cuando se ejecuta arroja un error:
'No se puede estimar la varianza de las estimaciones de los parámetros porque el rango de X es igual al número de filas de X'
No entiendo muy bien cuál es el problema. De todos modos, solo quiero la intercepción. ¿Hay alguna forma sencilla de solucionarlo? ¿O de desactivar la advertencia?
Puedo intentar un enfoque similar con la función de mínimos cuadrados, pero arroja el mismo error.
He creado una tabla de ejemplo que muestra el problema. Vuelva a ejecutar la fórmula en esa tabla para ver el error.
Gracias
Análisis y modelado de datos básicosRe: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorParece que he solucionado esto inmediatamente aumentando el número de puntos de datos en la regresión a 3, incluido el punto de datos actual.
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :y_column, 1 );
x[2, 1] = :y_column;
x[3, 1] = Lag( :y_column, -1 );
y[1, 1] = Lag( :x_column, 1 );
y[2, 1] = :x_column;
y[3, 1] = Lag( :x_column, -1 );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
Esto evita que aparezca el error, lo que puede estar bien por ahora. Sin embargo, me gustaría calcular las intersecciones a partir de solo dos puntos en el futuro. Por lo tanto, mi pregunta sigue en pie.
Gracias
Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorPodrías incluir el punto en el que estás haciendo el cálculo (es decir, 3 puntos en lugar de dos).
If(Row() > 1 & Row() < Col Number(:y_column),
Linear Regression(:y_column[Index(Row() - 1, Row() + 1)]`, :x_column[Index(Row() - 1, Row() + 1)]`)[1][1];
,
.
);
Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorAhora tengo un problema con el valor de intersección devuelto que no es correcto...
Tendré que mostrar un extracto de datos reales para demostrarlo. Archivo adjunto.
Estoy evaluando la intersección en la fila donde otra columna está en su valor máximo.
El script está tomando los valores correctamente de las filas adyacentes, puedo ver en la salida del registro que está formando la matriz correctamente.
Proporciona un valor de salida para la intersección de '-1053478758'. Pero si tomo esos valores x/y manualmente en una tabla separada y ejecuto un ajuste de línea bivariado sobre ellos, proporciona una intersección de '-1,22', lo cual es correcto.
Código:
If( :"dlogIds/dVgs"n == Col Maximum( :"dlogIds/dVgs"n ),
x = J( 3, 1, 0 );
y = J( 3, 1, 0 );
x[1, 1] = Lag( :I_Drain Abs, 1 );
x[2, 1] = :I_Drain Abs;
x[3, 1] = Lag( :I_Drain Abs, -1 );
y[1, 1] = Lag( :V_GATE, 1 );
y[2, 1] = :V_GATE;
y[3, 1] = Lag( :V_GATE, -1 );
Show( x );
Show( y );
Coeffs = Linear Regression( y, x )[1];
Coeffs[1];
)
No puedo entender en absoluto por qué no está bien...
Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorPodría ser un problema de precisión, un descuido o un error. Puedes ponerte en contacto con el soporte de JMP @mzwald
Names Default To Here(1);
ys = [-0.999986, -1.49994, -1.99997];
xs = [1.3500e-12, 1.0600e-10, 1.9700e-9];
xs2 = Matrix(Eval List({1.3500e-12*10^12, 1.0600e-10*10^12, 1.9700e-9*10^12}));
ls = Linear Regression(ys, xs, << print to log);
ls2 = Linear Regression(ys, xs2, << print to log);
dt = New Table("",
New Column("Y", Numeric, Continuous, Values(ys)),
New Column("X1", Numeric, Continuous, Values(xs)),
New Column("X2", Numeric, Continuous, Values(xs2)),
);
biv1 = dt << Bivariate(Y(:Y), X(:X1), Fit Line({Line Color({230, 159, 0})}));
biv_estimates1 = Report(biv1)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates1 << get);
biv2 = dt << Bivariate(Y(:Y), X(:X2), Fit Line({Line Color({230, 159, 0})}));
biv_estimates2 = Report(biv2)[Outline Box("Parameter Estimates"), Number Col Box("Estimate")];
Show(biv_estimates2 << get);
Write();Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorMe preguntaba si era un problema de precisión. Parece que algo en esa función no está manejando la entrada con suficientes cifras significativas.
Por ahora funciona usar su solución y multiplicar los valores del eje x por algo que pueda manejar.
¡Gracias!
Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un errorHola @GRoberts86 : Para completar, el mensaje de "error" "No se puede estimar la varianza de las estimaciones de parámetros porque el rango de X es igual al número de filas de X" se debe a que solo tienes dos puntos y los estás conectando con una línea recta. Por lo tanto, no hay variabilidad alrededor de la línea... es decir, en realidad no estás llevando a cabo un procedimiento estadístico , solo estás conectando matemáticamente dos puntos. Sin embargo, estás usando un paquete estadístico para hacerlo, a través del álgebra matricial como se muestra aquí.
https://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/13/lecture-13.pdf.
El procedimiento estadístico que usted ha llamado (Regresión lineal (y, x)[1]) intenta hacer mucho más que simplemente conectar matemáticamente dos puntos. También proporciona intervalos de confianza, valores p, etc. para la pendiente y la intersección. Pero en su caso, dado que solo tiene dos puntos (rango de X = 2), no hay variabilidad y, por lo tanto, no hay intervalos de confianza, etc.
En resumen, el "error" es en realidad sólo una notificación de que no habrá resultados estadísticos (a diferencia de los matemáticos ).
Re: Fórmula de columna de intersección y línea de ajuste, ayuda con un error@MRB3855
Me di cuenta de eso después de pensarlo un poco. Si solo estás trabajando con dos puntos, entonces la buena y vieja "ecuación de una línea" y=mc+c es lo adecuado.
Aún así, una bandera 'silenciosa' estaría bien jaja.