5

I generated random 20 numbers with mean 0 and variance 1 (np.random.normal). I calculated the variance twice ddof = 1 and 0.

My question is i am trying to add (mean 0 and variance 1) to (np.random.normal), However on there website is no mention for the variance https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html

loc : float Mean (“centre”) of the distribution.
scale : float Standard deviation (spread or “width”) of the distribution.
size : int or tuple of ints, optional

So can i just do it like this

 mu, sigma = 0, math.sqrt(1) 
 x = np.random.normal(mu, sigma, 20)

Because i have to perform the estimation in 90 times and 20 numbers each time and recount again

a = np.random.rand(90, x)

Here is the full code

import math
import numpy as np
import pandas as pd
mu, sigma = 0, math.sqrt(1) 
x = np.random.normal(mu, sigma, 20)


#caluclateing the unbiased_estimator and the biased_estimator
unbiased_estimator = np.var(x, ddof=1)
biased_estimator = np.var(x, ddof=0)


print ("Unbiased_estimator : ",unbiased_estimator)
print ("Biased_estimator   : ", biased_estimator)

a = np.random.rand(90, x)
#caluclateing the unbiased_estimator and the biased_estimator
unbiased_estimator_for_each_20 = np.var(a, ddof=1, axis=1)
biased_estimator_for_each_20 = np.var(a, ddof=0, axis=1)

print (unbiased_estimator_for_each_20 )
print(" ")
print (biased_estimator_for_each_20 )
6
  • "So can i just do it like this" - no. There are so many things wrong with that code. Commented Dec 5, 2016 at 17:28
  • What do you mean ? Commented Dec 5, 2016 at 17:37
  • Spurious trailing commas, trying to assign to (std)**2, passing (std)**2 for an argument that's supposed to be standard deviation rather than variance, not assigning the return value to anything, inconsistent variable names, etc. Commented Dec 5, 2016 at 17:38
  • user2357112 What do you think of this part " a = np.random.rand(90, x)" I know its worng, since it gives error. What am i missing here ? Commented Dec 5, 2016 at 18:25
  • Well, for one thing, that is nothing like how numpy.random.rand takes arguments. Commented Dec 5, 2016 at 18:36

1 Answer 1

5

the definition: variance = (standard deviation)^2, then standard deviation = sqrt(variance), in consequence:

import numpy as np

mean = 0, 
variance = 1,
np.random.normal(loc = mean, scale= np.sqrt(variance), 20)

#caluclateing the unbiased_estimator and the biased_estimator
unbiased_estimator = np.var(x, ddof=1)
biased_estimator = np.var(x, ddof=0)


print ("Unbiased_estimator : ",unbiased_estimator)
print ("Biased_estimator   : ", biased_estimator)

Output:

Unbiased_estimator :  1.08318083742
Biased_estimator   :  1.02902179555
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.