iT邦幫忙

0

python 如何輸出每個observation的標準差

  • 分享至 

  • xImage

想請教各位python高手,做多元線性回歸的時候,應該如何取得每個observation的標準差?
拜託大家救救可能需要壓一千次SPSS的我ˊˋ

各大網站的標準差都是針對「某一控制(自)變數」做標準差,換言之,我無法取得每個observation的標準差,以至於無法刪除最大的outlier,相當困擾,拜託救救我QAQQQ
我看了許多類似的網站https://stackoverflow.com/questions/31523921/print-std-err-value-from-statsmodels-ols-results,但都沒有就各別的標準差@@

這是目前寫的語法

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
from sklearn import preprocessing, linear_model

df = pd.read_excel(r"data.xlsx",header = [0,1])
print(df.head()) #check data

# 自變量
X = df[['w1','w2','w3','w4']]
# 因變量
y = df['z'].values

X2 = sm.add_constant(X) 
res = sm.OLS(y, X2) 
res = res.fit() 
print(res.summary())

#另一種函式庫的線性回歸(不知道哪個比較方便取得標準差)
regr=linear_model.LinearRegression()
regr.fit(X, y)

如果data大概長這樣,「因變數」為z,「自變數」為w1、w2、w3、w4。
company name | w1 | w2 | w3 | w4
------------- | -------------
data0 | 99 | 13 | 1 | 26
data1 | 82 | 3 | 2 | 13
data2 | 80 | 42 | 8 | 91
data3 | 10 | 50 | 15 | 34
data4 | 20 | 12 | 71 | 17
我希望可以各別print出data1、data2、data3、data4的標準差!

還請各位幫幫忙,非常感謝,萬分感謝QAQQQQ
我願意寫一些關於統計軟體與python的相關應用回饋給這個版~
懇請大家救救可能需要壓SPSS一千次的我阿阿,拜託大家

import numpy as no
df[“stds”] = df.apply(lambda x: np.std(x.values), axis=1)
既然都轉來python了,要學一點迴圈的概念,反正要自己想一下怎麼把自己想要的東西刻出來。

喔對,如果想看有沒有outlier,建議你可以看看PCA。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
I code so I am
iT邦高手 1 級 ‧ 2020-03-29 21:56:36

一組單變數樣本只有一個標準差,個別觀察值沒有所謂的標準差。
你應該是指觀察值的預測誤差吧。 如果是,程式碼如下:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

lin_model = LinearRegression()
lin_model.fit(X_train, Y_train)

y_test_predict = lin_model.predict(X_test)
rmse = (np.sqrt(mean_squared_error(Y_test, y_test_predict)))
r2 = r2_score(Y_test, y_test_predict)

# 觀察值的預測誤差
y_test_predict - Y_test

我要發表回答

立即登入回答