np.random.multivariate_normal(np.zeros(dim_obs), y_cov)
< /code>
Mein Skript wird ausgeführt, generiert jedoch die folgende Warnung: < /p>
RuntimeWarning: covariance is not positive-semidefinite.
< /code>
Auch die kleinen Debug -Druckanweisungen, die ich dort einwerfen, drucken Sie falsche < /code> Die meiste Zeit < /p>
print( np.all(np.linalg.eigvals(y_cov) > 0) )
< /code>
Warum wirft das falsch positive Positive? Mein y_cov < /code> ist ein positives halb definites, weil es (Entschuldigung für den Mangel an Tex-Markup) B x x'b ' + y y', wobei die B eine Matrix ist und die anderen zufällige Vektoren mit jedem Element positiv sind. Aus der Dokumentation: < /p>
Beachten Sie, dass die Kovarianzmatrix positiv sein muss (a.k.a. nicht negativ-definit). Andernfalls ist das Verhalten dieser Methode undefiniert und die Kompatibilität rückwärts ist nicht garantiert. Vielen Dank für den Tipp @user2357112. < /P>
import numpy as np
num_factors = 1
dim_obs = 9
u = np.random.normal(size = num_factors)
v = np.random.normal(size = dim_obs)
y_cov = np.dot(np.ones((9,1)), np.exp(u.reshape((num_factors,1))/2))
y_cov = np.dot(y_cov, np.exp(u.reshape((1,num_factors))/2)) #transpose
y_cov = np.dot(y_cov, np.transpose(np.ones((9,1))))
y_cov += np.dot(np.exp( v.reshape((dim_obs,1)) / 2),
np.exp( v.reshape((1,dim_obs)) / 2))
print( np.random.multivariate_normal(np.zeros(dim_obs), y_cov) )
print( np.all(np.linalg.eigvals(y_cov) > 0) )
print( np.linalg.eigvals(y_cov) )
Warum wirft das falsch positive Positive? Mein y_cov < /code> ist ein positives halb definites, weil es (Entschuldigung für den Mangel an Tex-Markup) B x x'b ' + y y', wobei die B eine Matrix ist und die anderen zufällige Vektoren mit jedem Element positiv sind. Aus der Dokumentation: < /p>
Beachten Sie, dass die Kovarianzmatrix positiv sein muss (a.k.a. nicht negativ-definit). Andernfalls ist das Verhalten dieser Methode undefiniert und die Kompatibilität rückwärts ist nicht garantiert. Vielen Dank für den Tipp @user2357112. < /P>
Ich versuche, globale Regeln für mein Team festzulegen. Wir verwenden VS2012 mit TFS für unsere C#-Projekte. Ich möchte einige der Warnungen unterdrücken und einige der Warnungen auch als Fehler...