I am doing a linear regression analysis on a dataset of houses (found here: https://www.kaggle.com/shree1992/housedata). I have the following code(see image1): image1
The image shows that when I print the average price for each number of bedrooms the trend is that the price rises with a larger number of bedrooms. When doing a single linear regression I get a positive coef_ on bedrooms, which is what I expected. (see image 2) image 2
Though when I do a multiple linear regression(adding more features/columns) on the dataset and prints the coef_ I get a negative coef_ for bedrooms (see image3). image3
How does this make sense when the average price increases with more bedrooms?
houses_preprocessed = houses[
(houses.price<1.2*10**7) &
(houses.bedrooms>0) &
(houses.bedrooms <= 6) &
(houses.bathrooms>0) &
(houses.price>8000)].drop(columns=['country', 'date', 'street', 'city'])
houses_preprocessed.loc[houses_preprocessed['yr_renovated'] < 1, 'yr_renovated'] = 0
houses_preprocessed.loc[houses_preprocessed['yr_renovated'] > 1, 'yr_renovated'] = 1
X = houses_preprocessed[['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated']]
y = houses_preprocessed[['price']]
X_train, X_test, y_train, y_test = train_test_split(X,y)
reg = LinearRegression()
reg.fit(X_train, y_train)
K=reg.coef_
K
coef_dict = {}
for K, name in zip(K,X):
coef_dict[name] = K
coef_dict
# Create a list of tuples sorted by index 1 i.e. value field
listofTuples = sorted(coef_dict.items(), key=lambda e:e[1])
# Iterate over the sorted sequence
for elem in listofTuples :
print(elem[0] , " ::" , elem[1] )