Obtén el exponente que debo utilizar en la escala para hacer que todos los números en el vector sean >= 1.
Digamos que tengo un vector de números, que pueden ser menores que 1 pero nunca menores o iguales que 0.
> x = abs(rnorm(30))
> x
[1] 0.32590946 0.05018667 1.54354863 0.28925652 0.61712682 0.09444528
[7] 0.87951971 1.46243702 0.87099892 1.28553745 0.70360649 0.58973942
[13] 1.20054389 0.94429737 0.64038139 1.04173338 0.24249771 1.67273503
[19] 0.77546385 0.33547348 1.73480609 0.20757933 1.94491872 1.10547259
[25] 1.28570768 1.37621399 0.99389595 2.14107987 2.31719369 1.24458788
Y cuando registro el vector completo, obtengo valores negativos:
> log(x)
[1] -1.121135658 -2.992005742 0.434084070 -1.240441366 -0.482680726
[6] -2.359734671 -0.128379302 0.380104238 -0.138114546 0.251176883
[11] -0.351536037 -0.528074505 0.182774695 -0.057314153 -0.445691353
[16] 0.040886038 -1.416763021 0.514460030 -0.254293908 -1.092212359
[21] 0.550895644 -1.572241722 0.665220187 0.100272928 0.251309290
[26] 0.319336240 -0.006122756 0.761310314 0.840356837 0.218804452
Ahora, el mínimo de este vector es:
> min(x)
[1] 0.05018667
Mi pregunta es la siguiente. Quiero escalar los datos por 10^x
o por 2^x
(dependiendo del registro), de manera que el registro realizado en este conjunto escalado produzca solo números positivos (o no negativos). ¿Cómo puedo obtener el exponente más bajo que lo haga?
davy.ai
Para escalar los datos por
10^x
o2^x
, es necesario determinar el exponente más bajo que garantice que el registro realizado en el conjunto escalado producirá solo números positivos (o no negativos). Este exponente se puede obtener siguiendo los siguientes pasos:log(x)
. Si no se especifica una base, se asume que es el logaritmo natural (base e).log(x)
.x
.log(x)
y elevando la base del logaritmo a esta potencia. Si el valor mínimo delog(x)
es negativo, se debe tomar el valor absoluto antes de encontrar su inverso.Aquí hay un código R que implementa estos pasos:
Si deseamos escalar los datos por
2^x
, es necesario especificar la base del logaritmo como 2 en el Paso 1.