iT邦幫忙

0

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

想請教各位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。

1 個回答

1
I code so I am
iT邦研究生 5 級 ‧ 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

我要發表回答

立即登入回答