1
resposta

Dúvida sobre os altos valores da função linalg.norm para este projeto das laranjas e toranjas

Olá,

Tudo bem?

Fiz o código abaixo para resolver o projeto das laranjas e obtive um gráfico muito próximo à minha reta de regressão. Entretanto, ao executar a função linalg.norm para o array das laranjas, obtive como resultado um valor muito alto (Função linalg.norm: 10279.67). Já que a reta da regressão e das laranjas estão tão próximas, o valor do resultado linalg.norm não deveria sem bem menor?Os gráficos de regressão e dos dados dos preços das maças do exercício de Moscow, por exemplo, foram bem mais divergentes e apresentaram um valor da Função linalg.norm bem menor (101.7969539992751). Como isso foi possível?

# Arrays
diametro_laranja
peso_laranja


# Regressão linear das laranjas
print("-"*25, "REGRESSÃO LINEAR DAS LARANJAS", "-"*25)
xl = diametro_laranja
yl = peso_laranja
n1 = peso_laranja.size
print(f"N{chr(176)} de elementos no array laranjas: {n1}")

a1 = (n1*np.sum(xl*yl) - np.sum(xl)*np.sum(yl))/(n1*np.sum(xl**2)-np.sum(xl)**2) # Cálculo do coeficiente angular da reta das laranjas
print(f"Coeficiente angular da reta das laranjas: {a1:.2f}")
b1 = np.mean(yl) - a1*np.mean(xl) # Cálculo do coeficiente linear da reta das laranjas
print(f"Coeficiente linear da reta das laranjas: {b1:.2f}")

print(f"Função linalg.norm: {np.linalg.norm(diametro_laranja-yl):.2f}")
plt.plot(diametro_laranja, peso_laranja) # Exibição dos resultados das amostras
plt.plot(xl, xl*a1+b1) # Exibição da reta de regressão (estimativa do valor)
plt.plot(8.5, a1*8.5+b1, "Dr") # Estimativa do valor do eixo y considerando o eixo x com valor de 8.5
plt.plot(15, a1*15+b1, "Dr") # Estimativa de valor do eixo y considerando o eixo x com valor hipotético de 15
plt.legend(["Laranjas"])

print("-"*20, "GRÁFICO DE REGRESSÃO LINEAR DAS LARANJAS", "-"*20)

Regressão linear das laranjas

O mesmo aconteceu com os gráficos das toranjas (Função linalg.norm = 13200.74).

Regressão linear das toranjas

1 resposta

Oii, Marina! Tudo bom?

O valor alto da norma pode ser explicado pela diferença de escalas e pela forma como ela é calculada,a função linalg.norm mede a magnitude da diferença entre os arrays diametro_laranja e peso_laranja, e não a qualidade do ajuste da reta.

Se os arrays estiverem em escalas diferentes, como diâmetros em centímetros e pesos em gramas, o valor da norma pode parecer maior do que realmente é. E, também, a norma é sensível a outliers, que podem aumentar significativamente o resultado.

🔗 Documentação Álgebra Liner (numpy.linalg)

Conte conosco para te auxiliar em caso de dúvidas, até mais!