日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实例讲解统计学基础知识(1):统计学基础概念

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例讲解统计学基础知识(1):统计学基础概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:xxw9485
時間:2018/3/20
來源:https://www.jianshu.com/p/dffdaf11bd4c


下面將從具體的實例入手,用Python并結合統計學知識對數據進行探索分析,從而了解數據分析所用到的一些統計學概念。

前言

數據分析步驟

數據分析一般包括以下步驟:

  • 提出有價值的問題,好的問題就像是瞄準了正確的靶心,才能使后續的動作有意義。
  • 收集原始數據,數據來源可能是豐富多樣的,格式也可能不盡相同。
  • 清洗數據,理順雜亂的原始數據,并修正數據中的錯誤,這一步比較繁雜,但確是整個分析的基石。
  • 進行探索式分析,對整個數據集有個全面的認識,以便后續選擇何種分析策略。
  • 分析數據,這里常常用到機器學習、數據挖掘、深度學習等算法。
  • 得出結論,可視化結果,并使用報告、圖表等形式展現出來,與他人交流。

實例

  • 問題:當今美國社會中富人比一般人是更胖嗎?
  • 數據:2015年的BRFSS調研數據
  • 重要指標:家庭收入水平income,用來區分富人和普通人;BMI指數,其定義是體重(kg)除以身高(m)的平方,用于衡量胖瘦。

統計學基礎概念

總體VS樣本

總體是我們感興趣的目標的數據集。在我們關于“美國的富人會更胖嗎”這個問題下,總體是全部美國人的數據,顯然數據量非常龐大,難以全部獲取。那么如何解決呢?于是就有了樣本,即在總體中取一子集,我們使用的BRFSS數據集就是一個樣本數據。可見總體往往是很大的,因為不可能完整獲取有時只是概念上的,所以我們常常需要采用樣本觀測到的數據來推測總體的性質。當然,在有了大規模分布式存儲和計算能力的今天,也許總體數據的取得也不再是難事了,這正是大數據的魅力所在。

參數VS統計量

用來描述總體特性的測量數稱為總體的參數,而用來描述樣本特性的測量數稱為樣本統計量。在我們的問題中,全體美國人BMI指數的平均值是參數,而BRFSS數據集中BMI指數的平均值則是統計量。統計學中時常使用樣本的統計量來對總體參數進行估計,在后續講到參數估計時我們會詳細展開。

因果性VS相關性

統計學中常說相關性并不意味著因果性,而生活中我們卻常常錯把相關性的關系當成因果關系。比如公雞總是在早上天亮的時候打鳴,那你能說是公雞打鳴導致了天亮嗎?

實驗VS調研

那么在統計學中我們就得不到因果關系嗎?也不是的。一般的調研數據得到的都是相關性關系,比如我們后續會研究的BRFSS調研數據。要想得到因果關系的證明,需要設計非常嚴格的實驗才行。比如研究某項新藥對某個疾病是否有療效,就要設計一項統計學實驗,其中又需要了解如下概念:

控制組VS對照組

首先需要將實驗對象隨機分為兩組,控制組服用新藥,對照組不服用新藥。

獨立變量VS依賴變量

是否服用新藥是獨立變量(independent variables),而觀測到的服藥后的療效,是相應的依賴變量(dependent variables)。我們往往需要分析這兩者的關系,來判斷新藥是否有療效。

藥物VS安慰劑

對于實驗對象,也許他們因為心理上相信藥物有效而產生好轉的征兆,為了避免這類心理上的影響,兩組實驗對象都需要服藥,只不過控制組服用的是真正需要測試的藥物,而對照組服用的是沒有效果的安慰劑而已。

雙盲實驗

不僅受試者會受到心理的干擾,實驗的觀察測量人員也會受到主觀偏見的影響。所以在實驗中,無論是實驗對象還是實驗人員,都不知道哪組是控制組,而哪組又是對照組,這被稱為雙盲實驗。

數據采集與清洗

原始數據是ASCII格式的壓縮包,需要采用pandas.read_fwf() 來讀取。清洗時不僅要正確提取所需變量,還需要對數據進行恰當轉換使之成為我們可以理解的量。下面將數據提取和清洗的代碼存入brfss.py中。

import pandas as pd import numpy as npclass FixedWidthVariables(object):"""Represents a set of variables in a fixed width file."""def __init__(self, variables, index_base=0):"""Initializes.variables: DataFrameindex_base: are the indices 0 or 1 based?Attributes:colspecs: list of (start, end) index tuplesnames: list of string variable names"""self.variables = variables# note: by default, subtract 1 from colspecsself.colspecs = variables[['start', 'end']] - index_base# convert colspecs to a list of pair of intself.colspecs = self.colspecs.astype(np.int).values.tolist()self.names = variables['name']def ReadFixedWidth(self, filename, **options):"""Reads a fixed width ASCII file.filename: string filenamereturns: DataFrame"""df = pd.read_fwf(filename,colspecs=self.colspecs, names=self.names,**options)return dfdef ReadBrfss(filename='LLCP2015ASC.zip', compression='zip', nrows=None):"""Reads the BRFSS data.filename: stringcompression: stringnrows: int number of rows to read, or None for allreturns: DataFrame"""var_info = [('sex', 120, 120, int),('age', 1974, 1975, int),('edu', 158, 158, int),('marital', 157, 157, int),('employ', 172, 172, int),('income', 175, 176, int), ('health', 90, 90, int), ('bmi', 1988, 1991, int),('height', 1980, 1982, int),('weight', 1983, 1987, int), ('exercise', 227, 227, int),('workhour', 608, 609, int),('exemin', 2119, 2123, int),('fruit', 2050, 2050, int),('vegetable', 2051, 2051,int),]columns = ['name', 'start', 'end', 'type']variables = pd.DataFrame(var_info, columns=columns)variables.end += 1dct = FixedWidthVariables(variables, index_base=1)df = dct.ReadFixedWidth(filename, compression=compression, nrows=nrows)CleanBrfssFrame(df)return dfdef CleanBrfssFrame(df):"""Recodes BRFSS variables.df: DataFrame"""# sexdf.sex = df.sex.replace({1:'M', 2:'F'})# incomedf.income = df.income.replace({77:np.nan, 99:np.nan})# healthdf.health = df.health.replace({7:np.nan, 9:np.nan})# bmidf.bmi /= 100# heightdf.height /= 100# weightdf.weight /= 100# exercisedf.exercise = df.exercise.replace({1:True, 2:False, 7:np.nan, 9:np.nan})# workhourdf.workhour = df.workhour.replace({97:np.nan, 98:0, 99:np.nan})# fruitdf.fruit = df.fruit.replace({1:True, 2:False, 9:np.nan})# vegetabledf.vegetable = df.vegetable.replace({1:True, 2:False, 9:np.nan})

總結

以上是生活随笔為你收集整理的实例讲解统计学基础知识(1):统计学基础概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。