精华内容
下载资源
问答
  • 横截面数据时间序列数据、面板数据

    万次阅读 多人点赞 2018-03-20 15:12:40
    具有“横截面”和“时间序列”两个维度,当这类数据按两个维度进行排列时,数据都排在一个平面,与排在一条线的一维数据有着明显的不同,整个表格像是一个面板,所以称为面板数据(Panel Data)。 实际如果从...

            面板数据(Panel Data)是将“截面数据”和“时间序列数据”综合起来的一种数据类型。具有“横截面”和“时间序列”两个维度,当这类数据按两个维度进行排列时,数据都排在一个平面上,与排在一条线上的一维数据有着明显的不同,整个表格像是一个面板,所以称为面板数据(Panel Data)。

            实际上如果从数据结构内在含义上,应该把Panel Data称为“时间序列-截面数据”,更能体现数据结构本质上的特点。该数据为也被称为“纵向数据(Longitudinal Data)”,“平行数据”,“TS-CS数据(Time Series-Cross Section)”。它是截面上个体在不同时间点的重复测量数据。面板数据从横截面(cross section)看,是由若干个体(entity,unit,individual)在某一时点构成的截面观测值,从纵剖面(longitudinal section)看每个个体都是一个时间序列。

         从时空维度来看,可将计量经济学中应用的数据分三类:

    1、横截面数据(Cross-sectional data)

      横截面数据是指在某一时点收集的不同对象的数据。它对应同一时点上不同空间(对象)所组成的一维数据集合,研究的是某一时点上的某种经济现象,突出空间(对象)的差异。横截面数据的突出特点就是离散性高。横截面数据体现的是个体的个性,突出个体的差异,通常横截面数据表现的是无规律的而非真正的随机变化。即计量经济学中所谓的“无法观测的异质性”。在分析横截面数据时,应主要注意两个问题:一是异方差问题,由于数据是在某一时期对个体或地域的样本的采集,不同个体或地域本身就存在差异;二是数据的一致性,主要包括变量的样本容量是否一致、样本的取样时期是否一致、数据的统计标准是否一致。

    图片来源于网络

    2、时间序列数据(Time-series data)

      时间序列数据是指对同一对象在不同时间连续观察所取得的数据。它着眼于研究对象在时间顺序上的变化,寻找空间(对象)历时发展的规律。利用时间序列作样本时,要注意几个问题:一是所选择的样本区间内经济行为的一致性问题;二是样本数据在不同样本点之间不可比,需要对原始数据进行调整,消除其不可比因素;三是样本观测值过于集中,因而时间序列数据不适宜于对模型中反映长期变化关系的结构参数的估计;四是模型随机误差的序列相关问题。

    图片来源于网络

    3、纵向数据(Longitudinal data)或面板数据(Panel data)

      面板数据,即Panel Data,是截面数据与时间序列综合起来的一种数据资源。 在分析时,多用PanelData模型,故也被称为面板数据模型. 它可以用于分析各样本在时间序列上组成的数据的特征,它能够综合利用样本信息,通过模型中的参数,既可以分析个体之间的差异情况,又可以描述个体的动态变化特征。

    图片来源于网络

     

    举栗一个,栗子来源于网络! 

    时间序列数据:北京一年来每天的平均温度。 

    截面数据:北京,上海,深圳,广州某一天的平均温度。 

    面板数据:北京,上海,深圳,广州这一年来每天的平均温度。  

    适用范围:

            时间序列数据:某一个个体随时间变化产生的数据。 

            截面数据:许多个个体在同一个时间下由于个体不同而产生的数据。 

            面板数据:前两个的综合——许多个个体由于个体不同以及时间变化产生的数据。  

    分析方法:

            时间序列数据:主要围绕时间变化,可看总体趋势,季节性,周期性,ARIMA(自回归,滑动平均,差分)等。 

            截面数据:主要围绕统计个体区别,可用线性回归,主元分析等。 面板数据:前两个的综合。

     

     

    举栗二个,栗子来源于网络! 

    如:城市名:北京、上海、重庆、天津的GDP分别为10、11、9、8(单位亿元)。这就是截面数据,在一个时间点处切开,看各个城市的不同就是截面数据。

    如:2000、2001、2002、2003、2004各年的北京市GDP分别为8、9、10、11、12(单位亿元)。这就是时间序列,选一个城市,看各个样本时间点的不同就是时间序列。

    如:2000、2001、2002、2003、2004各年中国所有直辖市的GDP分别为:

    北京市分别为8、9、10、11、12;

    上海市分别为9、10、11、12、13;

    天津市分别为5、6、7、8、9;

    重庆市分别为7、8、9、10、11(单位亿元)。

    这就是面板数据。

    展开全文
  • 软同步提供一个相同的时间源(一般都是主控电脑utc时间)给相机和LIDAR,相机和LIDAR记录的数据中打时间戳,因为周期不同,相机和LIDAR之间的数据帧不是完全对应的。 我们在使用ROS的时候,例如激光雷达、小觅相机...

    主要分为硬同步软同步
    硬同步就是用一个硬件触发器,直接通过物理信号,触发相机和LIDAR记录一个data frame
    软同步提供一个相同的时间源(一般都是主控电脑utc时间)给相机和LIDAR,相机和LIDAR记录的数据中打上时间戳,因为周期不同,相机和LIDAR之间的数据帧不是完全对应的。

    我们在使用ROS的时候,例如激光雷达、小觅相机之类的,在获取其传感器数据并用ros节点以话题发布的时候都会根据电脑的时钟来为数据打上时间戳,以利用不同数据间的时间戳进行数据同步,但是该时间戳不一定准确,尤其是对于没有做过硬件同步的不同数据源来讲,可能会存在延迟存在,我们需要找寻其他方法来消除时间戳之间的时间延迟td。


    另外一个关于传感器网络中时间同步问题的文章可以带来思考:
    知乎-传感器网络中时间同步
    什么是无线传感器网络?如上图,无线传感器网络一般由数量众多的无线传感器节点组成,这些节点大多硬件成本低廉且非常适合大量部署。网关设备(又称为基站节点)是无线传感器网络与互联网沟通的接口,通过网关设备可以将无线传感器网络收集的数据传递到互联网服务器中存储分析。

    FTSP:The Flooding Time Synchronization Protocol,是在无线传感器网络中被广泛使用的时间同步协议,主要解决了3个问题:

    1、 两个设备之间的时间对齐:时间戳同步

    2、 两个设备之间晶体振荡器的对齐

    3、 同步网络中所有的设备


    从零开始做自动驾驶定位(六): 传感器时间同步

    本文章配套源代码地址:https://github.com/Little-Potato-1990/localization_in_auto_driving

    测试数据:https://pan.baidu.com/s/1TyXbifoTHubu3zt4jZ90Wg提取码: n9ys

    本篇文章对应的代码Tag为 6.0

    代码在后续可能会有调整,如和文章有出入,以实际代码为准

    ========================================

    一、概述
    只要牵扯到多个传感器,那么时间同步就是一件必做的事情。

    时间同步包括两个步骤:

    1)首先保证时钟源是一致的
    因为时钟源都有钟漂,而且每个时钟源钟漂不同,所以即使把各个传感器时间戳在初始时刻对齐,运行一段时间之后,之前对齐的结果就会偏离。解决这个问题的办法就是在硬件上把时钟源统一,常见的做法是做一个脉冲发生器,所有传感器都被这个脉冲触发,每次触发都校正一次自己的时钟,这样就可以消除时钟源的累计误差。

    在自动驾驶的传感器配置里,GNSS是一个必备的传感器,它自带秒脉冲发生器,所以可以直接使用。而且GNSS信号能够达到定位要求时,自身时钟也会受到卫星上原子钟的校正,从而进一步提高精度。大家可能对GNSS的定位功能比较熟悉,其实它的授时功能是和定位同等重要的功能,现在很多系统里都已经改变说法,不再把这类东西只称作定位系统,而是称作定位授时系统。感兴趣的可以自行去搜一些资料看看。

    2)获取同一时刻的信息
    在解决硬件同步以后,我们只能保证时间差没有累计漂移了,但是各个传感器的采集时刻并不是相同的。比如,在kitti数据集了,雷达和IMU都是10HZ,也就是100ms的周期,但是雷达每次采集的时间要比IMU慢个几十毫秒,当我们想获得在雷达采集时刻的车体角速度和加速度信息时,就要根据雷达前后时刻的IMU信息,通过插值计算出一个等效值,这就是获取同一时刻信息的含义。

    由于kitti已经做好了第一步,所以我们本次的工作就是围绕第二步来做的。

    二、同步方法
    按照刚才所说,同步就是插值。

    关于插入时刻问题,因为我们是以雷达作为核心传感器,所以每收到一次雷达数据,就以当前雷达数据采集时刻作为要插入的时间点,从而获得除雷达以外的其他传感器的同一时刻等效信息。

    在动手做之前,我们可以拆解一下任务,想插值获取某一时间点的等效信息,就需要索引获得这一时间点前后的两帧数据,有了前后两帧数据的采集时刻,以及要插入的时刻,那么就是一个比例计算的问题了。所以一共被拆解成了两步:索引和插值计算。

    1. 程序结构设计
      我们在front_end_flow.cpp文件中的ReadData函数里添加这段功能。

    首先从ros的缓冲区里把所有传感器数据取出来,雷达不需要做插值,所以直接放在cloud_data_buff_容器里,其他传感器原始数据放在未做同步的临时容器里,包括IMU信息(unsynced_imu_)、速度信息(unsynced_velocity_)、GNSS信息(unsynced_gnss_)

    cloud_sub_ptr_->ParseData(cloud_data_buff_);
    
    static std::deque<IMUData> unsynced_imu_;
    static std::deque<VelocityData> unsynced_velocity_;
    static std::deque<GNSSData> unsynced_gnss_;
    
    imu_sub_ptr_->ParseData(unsynced_imu_);
    velocity_sub_ptr_->ParseData(unsynced_velocity_);
    gnss_sub_ptr_->ParseData(unsynced_gnss_);
    

    接下来要做的就是做同步了,由于每个传感器都要做一次同步,如果都放在front_end_flow.cpp文件中,会显得繁琐,所以我们把每个传感器的同步功能放在sensor_data文件夹下对应的传感器类文件中,ReadData函数只是调用这个功能函数,这样在ReadData函数下只需要实现三行程序

    bool valid_imu = IMUData::SyncData(unsynced_imu_, imu_data_buff_, cloud_time);
    bool valid_velocity = VelocityData::SyncData(unsynced_velocity_, velocity_data_buff_, cloud_time);
    bool valid_gnss = GNSSData::SyncData(unsynced_gnss_, gnss_data_buff_, cloud_time);
    

    他们分别是IMU信息、速度信息和GNSS信息的时间同步的实现。每个传感器的类都包含一个SyncData函数,在函数内部实现该传感器对应的同步操作,具体讲就是索引和插值操作。

    1. 时间索引
      由于数据在容器里都是按照时间先后排列的,每个容器相当于构建了一条时间线。索引要做的就是把雷达采集时刻在其他传感器的时间线里找到对应的位置,位置锁定,前后两帧的数据就自然有了。

    在索引时需要考虑一些异常情况,因为传感器难免会有一些丢帧或者时间戳出问题的情况,要避免其对程序功能产生影响

    我们以IMU数据的索引为例来介绍具体步骤,其他传感器步骤一致。

    while (UnsyncedData.size() >= 2) {
        if (UnsyncedData.front().time > sync_time) 
            return false;
        if (UnsyncedData.at(1).time < sync_time) {
            UnsyncedData.pop_front();
            continue;
        }
        if (sync_time - UnsyncedData.front().time > 0.2) {
            UnsyncedData.pop_front();
            return false;
        }
        
        if (UnsyncedData.at(1).time - sync_time > 0.2) {
            UnsyncedData.pop_front();
            return false;
        }
        break;
    }
    

    上面这段就是索引所需要的四个步骤,核心思想是让容器第一个数据时间比插入时刻早,第二个数据时间比插入时刻晚:

    1)如果第一个数据时间比雷达时间还要靠后,即插入时刻的前面没有数据,那么就无从插入,直接退出

    2)如果第一个数据比插入时刻早,第二个数据也比插入时刻早,那么第一个时刻的数据是没意义的,应该接着往下找,并删除第一个数据

    3)如果雷达采集时刻已经处在前两个数据的中间了,但是第一个数据时刻与雷达采集时刻时间差过大,那么中间肯定丢数据了,退出

    4)同样,如果第二个数据时刻与雷达采集时刻时间差过大,那么也是丢数据了,也退出

    以上四个限制条件如果都通过了,那么就算是找到对应位置了。

    1. 数据插值
      线性插值大家都懂,有两个数据a和b,时刻分别是0和1,那么时间t(0<t<1)时刻的插值就是a*(1-t)+b*t。
    double front_scale = (back_data.time - sync_time) / (back_data.time - front_data.time);
    double back_scale = (sync_time - front_data.time) / (back_data.time - front_data.time);
    synced_data.time = sync_time;
    synced_data.linear_acceleration.x = front_data.linear_acceleration.x * front_scale + back_data.linear_acceleration.x * back_scale;
    synced_data.linear_acceleration.y = front_data.linear_acceleration.y * front_scale + back_data.linear_acceleration.y * back_scale;
    synced_data.linear_acceleration.z = front_data.linear_acceleration.z * front_scale + back_data.linear_acceleration.z * back_scale;
    synced_data.angular_velocity.x = front_data.angular_velocity.x * front_scale + back_data.angular_velocity.x * back_scale;
    synced_data.angular_velocity.y = front_data.angular_velocity.y * front_scale + back_data.angular_velocity.y * back_scale;
    synced_data.angular_velocity.z = front_data.angular_velocity.z * front_scale + back_data.angular_velocity.z * back_scale;
    // 四元数插值有线性插值和球面插值,球面插值更准确,但是两个四元数差别不大是,二者精度相当
    // 由于是对相邻两时刻姿态插值,姿态差比较小,所以可以用线性插值
    synced_data.orientation.x = front_data.orientation.x * front_scale + back_data.orientation.x * back_scale;
    synced_data.orientation.y = front_data.orientation.y * front_scale + back_data.orientation.y * back_scale;
    synced_data.orientation.z = front_data.orientation.z * front_scale + back_data.orientation.z * back_scale;
    synced_data.orientation.w = front_data.orientation.w * front_scale + back_data.orientation.w * back_scale;
    // 线性插值之后要归一化
    synced_data.orientation.Normlize();
    

    上面是IMU数据插值的例子。其他传感器插值原理一致。


    ROS中提供的方法:

    ROS之订阅多个话题并对其进行同步处理(多传感器融合)
    文章目录
    1.引言
    2.方法一:利用全局变量TimeSynchronizer
    3. CMakeLists.txt 和 packages.xml添加ROS包
    4.方法二: 利用类成员message_filters::Synchronizer
    1.引言
    本小节针对在ROS节点中需要订阅两个及两个以上的话题时,需要保持对这两个话题数据的同步,且需要同时接收数据一起处理然后当做参数传入到另一个函数中。
    研究背景:realsenseT265 和 realsense D435 都有IMU数据,但是这两个传感器都将imu的数据拆开进行发布了,区分了线加速度和角加速,而在有一些场合我们需要合并使用。

    2.方法一:利用全局变量TimeSynchronizer
    1 . message_filter ::subscriber 分别订阅不同的输入topic

    2 . TimeSynchronizer<Image,CameraInfo> 定义时间同步器;

    3 . sync.registerCallback 同步回调

    4 . void callback(const ImageConstPtr&image,const CameraInfoConstPtr& cam_info) 带多消息的消息同步自定义回调函数

    5 .相关API:http://docs.ros.org/api/message_filters/html/c++/classmessage__filters_1_1TimeSynchronizer.html

    在这里插入图片描述

    	#include <message_filters/subscriber.h>
    	#include <message_filters/synchronizer.h>
    	#include <message_filters/sync_policies/approximate_time.h>
    	#include <boost/thread/thread.hpp>
    	
    	using namespace message_filters;
    	
    	void imu_callback(const sensor_msgs::ImuConstPtr &imu_msg_accel, const sensor_msgs::ImuConstPtr &imu_msg_gyro)
    	{
    		    double t = imu_msg_accel->header.stamp.toSec();
    		    double dx = imu_msg_accel->linear_acceleration.x;
    		    double dy = imu_msg_accel->linear_acceleration.y;
    		    double dz = imu_msg_accel->linear_acceleration.z;
    		    double rx = imu_msg_gyro->angular_velocity.x;
    		    double ry = imu_msg_gyro->angular_velocity.y;
    		    double rz = imu_msg_gyro->angular_velocity.z;
    				Vector3d gyr(rx, ry, rz);
    			Vector3d acc(dx, dy, dz);
    		   /**
    		  	处理函数 ......
    		   */
    	}
    	
    	int main(int argc, char** argv)
    	{
    		// 需要用message_filter容器对两个话题的数据发布进行初始化,这里不能指定回调函数
    	    message_filters::Subscriber<sensor_msgs::Imu> sub_imu_accel(n,IMU_TOPIC_ACCEL,2000,ros::TransportHints().tcpNoDelay());
    	    message_filters::Subscriber<sensor_msgs::Imu> sub_imu_gyro(n,IMU_TOPIC_GYRO,2000,ros::TransportHints().tcpNoDelay());
      		
      		// 将两个话题的数据进行同步
    		typedef sync_policies::ApproximateTime<sensor_msgs::Imu, sensor_msgs::Imu> syncPolicy;
    	  	Synchronizer<syncPolicy> sync(syncPolicy(10), sub_imu_accel, sub_imu_gyro);  
    	  	// 指定一个回调函数,就可以实现两个话题数据的同步获取
    	  	sync.registerCallback(boost::bind(&imu_callback, _1, _2));
    	  	
    	  	ros::spin();
    	  	return 0;
     		}
    
    

    3. CMakeLists.txt 和 packages.xml添加ROS包

    CMakeLists.txt下添加:
    find_package(catkin REQUIRED COMPONENTS
      ....
      image_transport
      ....
    )
    package.xml下添加:
     <build_depend>image_transport</build_depend>
     <exec_depend>image_transport</exec_depend>
    
    

    参考连接:http://wiki.ros.org/message_filters

    补充:用 TimeSynchronizer 改写成类形式中间出现了一点问题.后就改写成message_filters::Synchronizer的形式

    4.方法二: 利用类成员message_filters::Synchronizer
    1 . 头文件

    #include <message_filters/subscriber.h>
    #include <message_filters/synchronizer.h>
    #include <message_filters/sync_policies/approximate_time.h>
    

    2 . 定义消息同步机制和成员变量

    typedef message_filters::sync_policies::ApproximateTime<nav_msgs::Odometry,sensor_msgs::Image> slamSyncPolicy;
    message_filters::Subscriber<nav_msgs::Odometry>* odom_sub_ ;             // topic1 输入
    message_filters::Subscriber<sensor_msgs::Image>* img_sub_;   // topic2 输入
    message_filters::Synchronizer<slamSyncPolicy>* sync_;
    

    3.类构造函数中开辟空间new

     odom_sub_ = new message_filters::Subscriber<nav_msgs::Odometry>(ar_handle, "/odom", 1);
     img_sub_  = new message_filters::Subscriber<sensor_msgs::Image>(ar_handle, "/usb_cam/image_raw", 1);
       
     sync_ = new  message_filters::Synchronizer<slamSyncPolicy>(slamSyncPolicy(10), *odom_sub_, *img_sub_);
     sync_->registerCallback(boost::bind(&QrSlam::combineCallback,this, _1, _2));
    

    4.类成员函数回调处理

    void QrSlam::combineCallback(const nav_msgs::Odometry::ConstPtr& pOdom, const sensor_msgs::ImageConstPtr& pImg)  //回调中包含多个消息
    {
        //TODO
        fStampAll<<pOdom->header.stamp<<"    "<<pImg->header.stamp<<endl;
        getOdomData(pOdom);                   //
        is_img_update_ = getImgData(pImg);    // 像素值
        cout << "stamp x y theta v w " << robot_odom_.stamp<<" "<<robot_odom_.x << " "<< robot_odom_.y << " " << robot_odom_.theta
             << " " << robot_odom_.v << " " << robot_odom_.w << std::endl;
        fOdom << "stamp x y theta v w " << robot_odom_.stamp<<" "<<robot_odom_.x << " "<< robot_odom_.y << " " << robot_odom_.theta
              << " " << robot_odom_.v << " " << robot_odom_.w << std::endl;
        pixDataToMetricData();
        static bool FINISH_INIT_ODOM_STATIC = false;
        if(FINISH_INIT_ODOM_STATIC)
        {
            ekfslam(robot_odom_);
        }
        else if(is_img_update_)
        {
            if(addInitVectorFull())
            {
                computerCoordinate();
                FINISH_INIT_ODOM_STATIC = true;
            }
        }
    }
    

    总结:

    解决的问题
    多传感器数据融合的时候,由于各个传感器采集数据的频率的不同,例如odom 50Hz、Imu 100Hz、camera 25Hz,需要将传感器数据进行时间同步后才能进行融合。
    融合的原理:
    分别订阅不同的需要融合的传感器的主题,通过TimeSynchronizer 统一接收多个主题,并产生一个同步结果的回调函数,在回调函数里处理同步时间后的数据。
    注意
    只有多个主题都有数据的时候才可以触发回调函数。如果其中一个主题的发布节点崩溃了,则整个回调函数永远无法触发回调。
    当多个主题频率一致的时候也无法保证回调函数的频率等于订阅主题的频率,一般会很低。实际测试订阅两个需要同步的主题,odom 50Hz、imu 50Hz,而回调函数的频率只有24Hz左右。

    展开全文
  • If you have ever dealt with Time-Series data analysis, you would have come across these problems for sure — 如果您曾经处理过时间序列数据分析,那么您肯定会遇到这些问题- Combining data into certain ...

    If you have ever dealt with Time-Series data analysis, you would have come across these problems for sure —

    如果您曾经处理过时间序列数据分析,那么您肯定会遇到这些问题-

    1. Combining data into certain intervals like based on each day, a week, or a month.

      将数据组合成一定的时间间隔,例如基于每天,一周或一个月。
    2. Aggregating data in the time interval like if you are dealing with price data then problems like total amount added in an hour, or a day.

      像在处理价格数据那样在时间间隔内聚合数据,则会出现诸如在一小时或一天之内添加的总量之类的问题。
    3. Finding patterns for other features in the dataset based on a time interval.

      根据时间间隔在数据集中查找其他特征的模式。

    In this article, you will learn about how you can solve these problems with just one-line of code using only 2 different Pandas API’s i.e. resample() and Grouper().

    在本文中,您将学习如何仅使用两行Pandas API(即resample()和Grouper())仅用一行代码即可解决这些问题。

    As we know, the best way to learn something is to start applying it. So, I am going to use a sample time-series dataset provided by World Bank Open data and is related to the crowd-sourced price data collected from 15 countries. For more details about the data, refer Crowdsourced Price Data Collection Pilot. For this exercise, we are going to use data collected for Argentina.

    众所周知,学习某件事的最好方法是开始应用它。 因此,我将使用世界银行公开数据提供的样本时间序列数据集,该数据集与从15个国家/地区收集的众包价格数据相关。 有关数据的更多详细信息,请参阅众包价格数据收集试点 。 在本练习中,我们将使用为阿根廷收集的数据。

    📚 Resources: Google Colab Implementation | Github Repository | Dataset 📚

    📚资源: Google Colab实施 | Github资料库 | 数据集 📚

    数据集详细信息 (Dataset Details)

    This data is collected by different contributors who participated in the survey conducted by the World Bank in the year 2015. The basic idea of the survey was to collect prices for different goods and services in different countries. We are going to use only a few columns from the dataset for the demo purposes —

    该数据由参与世界银行2015年调查的不同贡献者收集。该调查的基本思想是收集不同国家/地区不同商品和服务的价格。 我们仅将数据集中的几列用于演示目的-

    Image for post
    Sample Snippet of the Dataset by Author.
    作者的数据集示例片段。

    根据不同的时间间隔合并数据。 (Combining data based on different Time Intervals.)

    Pandas provides an API named as resample() which can be used to resample the data into different intervals. Let’s see a few examples of how we can use this —

    Pandas提供了一个名为resample()的API,可用于将数据重新采样为不同的间隔。 让我们来看一些如何使用它的示例-

    每小时添加的总金额。 (Total Amount added each hour.)

    Let’s say we need to find how much amount was added by a contributor in an hour, we can simply do so using —

    假设我们需要找出一个小时内贡献者增加了多少,我们可以简单地使用-

    # data re-sampled based on an hour
    data.resample('H', on='created_at').price.sum()# output
    created_at
    2015-12-14 18:00:00 5449.90
    2015-12-14 19:00:00 15.98
    2015-12-14 20:00:00 66.98
    2015-12-14 21:00:00 0.00
    2015-12-14 22:00:00 0.00

    Here is what we are doing here —

    这就是我们在这里所做的-

    1. First, we resampled the data into an hour ‘H’ frequency for our date column i.e. created_at. We can use different frequencies, I will go through a few of them in this article. Check out Pandas Time Frequencies for a complete list of frequencies. You can even go up to nanoseconds.

      首先,对于日期列(即created_at),我们将数据重新采样为一个小时的“ H”频率。 我们可以使用不同的频率,本文将介绍其中的一些。 查看熊猫时间频率 ,以获取完整的频率列表。 您甚至可以达到纳秒级。

    2. After this, we selected the ‘price’ from the resampled data. Later we will see how we can aggregate on multiple fields i.e. total amount, quantity, and the unique number of items in a single command.

      之后,我们从重采样数据中选择了“价格”。 稍后,我们将看到如何在单个命令中汇总多个字段,即总量,数量和唯一项数。
    3. Computed the sum for all the prices. This will give us the total amount added in that hour.

      计算所有价格的总和。 这将为我们提供该小时内增加的总金额。

    By default, the time interval starts from the starting of the hour i.e. the 0th minute like 18:00, 19:00, and so on. We can change that to start from different minutes of the hour using offset attribute like —

    默认情况下,时间间隔从小时的开头开始,即从0分钟开始,例如18:00、19:00,依此类推。 我们可以使用offset属性将其更改为从每小时的不同分钟开始,例如-

    # Starting at 15 minutes 10 seconds for each hour
    data.resample('H', on='created_at', offset='15Min10s').price.sum()# Output
    created_at
    2015-12-14 17:15:10 5370.00
    2015-12-14 18:15:10 79.90
    2015-12-14 19:15:10 64.56
    2015-12-14 20:15:10 18.40
    2015-12-14 21:15:10 0.00

    Please note, you need to have Pandas version > 1.10 for the above command to work.

    请注意,您需要使Pandas版本> 1.10才能使上述命令起作用。

    每周添加的总金额。 (Total Amount added each week.)

    In this example, we will see how we can resample the data based on each week.

    在此示例中,我们将看到如何基于每周对数据进行重新采样。

    # data re-sampled based on an each week, just change the frequency
    data.resample('W', on='created_at').price.sum()# output
    created_at
    2015-12-20 4.305638e+04
    2015-12-27 6.733851e+04
    2016-01-03 4.443459e+04
    2016-01-10 1.822236e+04
    2016-01-17 1.908385e+05

    By default, the week starts from Sunday, we can change that to start from different days i.e. let’s say if we would like to combine based on the week starting on Monday, we can do so using —

    默认情况下,星期从星期日开始,我们可以将其更改为从不同的日期开始,也就是说,如果我们要基于星期一开始的星期进行合并,可以使用-

    # data re-sampled based on an each week, week starting Monday
    data.resample('W-MON', on='created_at').price.sum()# output
    created_at
    2015-12-14 5.532860e+03
    2015-12-21 3.850762e+04
    2015-12-28 6.686329e+04
    2016-01-04 5.392410e+04
    2016-01-11 1.260869e+04

    每月添加的总金额。 (Total Amount added each month.)

    This is similar to what we have done in the examples before.

    这类似于我们在前面的示例中所做的。

    # data re-sampled based on each month
    data.resample('M', on='created_at').price.sum()# Output
    created_at
    2015-12-31 1.538769e+05
    2016-01-31 4.297143e+05
    2016-02-29 9.352684e+05
    2016-03-31 7.425185e+06
    2016-04-30 1.384351e+07

    One observation to note here is that the output labels for each month are based on the last day of the month, we can use the ‘MS’ frequency to start it from 1st day of the month i.e. instead of 2015–12–31 it would be 2015–12–01 —

    这里要注意的一个观察是,每个月的输出标签基于该月的最后一天,我们可以使用“ MS”频率从该月的第一天开始,即代替2015–12–31在2015–12–01 —

    # month frequency from start of the month
    data.resample('MS', on='created_at').price.sum()created_at
    2015-12-01 1.538769e+05
    2016-01-01 4.297143e+05
    2016-02-01 9.352684e+05
    2016-03-01 7.425185e+06
    2016-04-01 1.384351e+07

    采样数据的多重聚合。 (Multiple Aggregation on sampled data.)

    Often we need to apply different aggregations on different columns like in our example we might need to find —

    通常,我们需要在不同的列上应用不同的聚合,例如在我们的示例中,我们可能需要找到-

    1. Unique items that were added in each hour.

      每小时添加的唯一项。
    2. The total quantity that was added in each hour.

      每小时添加的总数量。
    3. The total amount that was added in each hour.

      每小时添加的总量。

    We can do so in a one-line by using agg() on the resampled data. Let’s see how we can do it —

    我们可以通过在重新采样的数据上使用agg()来单行执行此操作。 让我们看看我们如何做到-

    # aggregating multiple fields for each hour
    data.resample('H', on='created_at').agg({'price':'sum', 'quantity':'sum','item_code':'nunique'})
    Image for post
    Aggregated data based on each hour by Author.
    基于作者每小时的汇总数据。

    根据不同的时间间隔对数据进行分组 (Grouping data based on different Time intervals)

    In the above examples, we re-sampled the data and applied aggregations on it. What if we would like to group data by other fields in addition to time-interval? Pandas provide an API known as grouper() which can help us to do that.

    在以上示例中,我们重新采样了数据并对其应用了聚合。 如果我们除了时间间隔之外还想按其他字段对数据分组怎么办? 熊猫提供了一个称为grouper()的API,可以帮助我们做到这一点。

    In this section, we will see how we can group data on different fields and analyze them for different intervals.

    在本节中,我们将看到如何将不同字段上的数据分组并分析不同间隔的数据。

    每个月为每种商店类型添加的金额。 (Amount added for each store type in each month.)

    Let’s say we need to analyze data based on store type for each month, we can do so using —

    假设我们需要每月根据商店类型分析数据,我们可以使用-

    # Grouping data based on month and store type
    data.groupby([pd.Grouper(key='created_at', freq='M'), 'store_type']).price.sum().head(15)# Output
    created_at store_type
    2015-12-31 other 34300.00
    public_semi_public_service 833.90
    small_medium_shop 2484.23
    specialized_shop 107086.00
    2016-01-31 market 473.75
    other 314741.00
    private_service_provider 325.00
    public_semi_public_service 276.79
    small_medium_shop 31042.79
    specialized_shop 29648.44
    2016-02-29 market 1974.04
    other 527950.00
    private_service_provider 1620.00
    public_semi_public_service 1028.52
    small_medium_shop 224653.83

    Let’s understand how I did it —

    让我们了解一下我是如何做到的–

    1. First, we passed the Grouper object as part of the groupby statement which groups the data based on month i.e. ‘M’ frequency. This is similar to resample(), so whatever we discussed above applies here as well.

      首先,我们将Grouper对象作为groupby语句的一部分传递,该语句根据月(即“ M”频率)对数据进行分组。 这类似于resample(),因此我们上面讨论的任何内容也都适用于此。
    2. We added store_type to the groupby so that for each month we can see different store types.

      我们将store_type添加到了groupby,以便每个月我们都能看到不同的商店类型。
    3. For each group, we selected the price, calculated the sum, and selected the top 15 rows.

      对于每个组,我们选择价格,计算总和,然后选择前15行。

    每月基于item_name添加的总金额。 (Total Amount added based on item_name in each month.)

    As we did in the last example, we can do a similar thing for item_name as well.

    就像在上一个示例中所做的一样,我们也可以对item_name做类似的事情。

    # Grouping data based on each month and item_name
    data.groupby([pd.Grouper(key='created_at', freq='M'), 'item_name']).price.sum()# Output
    created_at item_name
    2015-12-31 Bar soap, solid, SB 33.17
    Beer, domestic brand, single bottle, WKB 29.79
    Black tea, BL 12.00
    Black tea, in bags, WKB 60.99
    Bread, white, sliced, WKB 85.45
    ...
    2016-08-31 Wheat flour, not self-rising, BL 150.38
    White sugar, WKB 266.47
    Women's haircut, basic hairdresser 7730.00
    Wrist-watch, men's, CITIZEN Eco-Drive BM6060 52205.00
    Yoghurt, plain, WKB 150.96

    每个月中store_type的多次汇总。 (Multiple Aggregation for store_type in each month.)

    We can apply aggregation on multiple fields similarly the way we did using resample(). The only thing which is different here is that the data would be grouped by store_type as well and also, we can do NamedAggregation (assign a name to each aggregation) on groupby object which doesn’t work for re-sample.

    我们可以像使用resample()一样,将聚合应用于多个字段。 唯一不同的是,数据也将按store_type分组,而且我们可以对groupby对象执行NamedAggregation(为每个聚合分配一个名称),该对象不适用于重新采样。

    # grouping data and named aggregation on item_code, quantity, and price
    data.groupby([pd.Grouper(key='created_at', freq='M'), 'store_type']).agg(unique_items=('item_code', 'nunique'),
    total_quantity=('quantity','sum'),
    total_amount=('price','sum'))
    Image for post
    Aggregated Data based on different fields by Author
    作者不同领域的汇总数据

    结论 (Conclusion)

    I hope this article will help you to save time in analyzing time-series data. I recommend you to check out the documentation for the resample() and grouper() API to know about other things you can do with them.

    我希望本文将帮助您节省分析时序数据的时间。 我建议您查看resample()grouper() API的文档,以了解可以使用它们进行的其他操作。

    If you would like to learn about other Pandas API’s which can help you with data analysis tasks then do checkout the article Pandas: Put Away Novice Data Analyst Status where I explained different things that you can do with Pandas.

    如果您想了解其他可以帮助您完成数据分析任务的Pandas API,请查看Pandas:Pave Away Novice Data Analyst Status一文 ,在此我解释了您可以使用Pandas进行的其他操作。

    Let me know in the comments or ping me on LinkedIn if you are facing any problems with using Pandas or Data Analysis in general. We can try to solve them together. That’s all for now, see you in the next article.

    如果您在使用Pandas或Data Analysis时遇到任何问题,请在评论中让我知道,或者在LinkedIn上ping我。 我们可以尝试一起解决它们。 现在就这些,在下一篇文章中见。

    Cheers!!! Stay Safe!!! Keep Learning!!!

    干杯!!! 注意安全!!! 保持学习!!!

    翻译自: https://towardsdatascience.com/how-to-group-data-by-different-time-intervals-using-python-pandas-eb7134f9b9b0

    展开全文
  • 数据搜集

    千次阅读 2018-10-19 18:35:01
    一、数据的来源 1、间接来源 定义:数据由别人通过调查或实验的方式搜集,使用者只是找到它们并加以使用 优点:二手资料搜集容易,采集数据成本低,...为了某个集团利益而搜集数据是值的怀疑的 数据是怎样搜集的...

    一、数据的来源

    1、间接来源

    定义:数据由别人通过调查或实验的方式搜集,使用者只是找到它们并加以使用

    优点:二手资料搜集容易,采集数据成本低,很快得到

    局限:二手资料不是为特定的研究问题而产生的,所以在回答所研究的问题方面有欠缺

    对二手资料评估:

    • 资料是谁搜集的?考察数据搜集者的实力和社会信誉度。政府或机构
    • 为什么目的而搜集?为了某个集团利益而搜集数据是值的怀疑的
    • 数据是怎样搜集的?搜集数据方法多样,不同方法搜集的数据其解释力和说服力不同。若不了解搜集数据所使用的方法,很难对数据的质量做出客观的评价。数据的质量来源于数据的产生过程。
    • 什么时候搜集的?过时的数据,其说服力自然受到质疑。
    • 使用二手数据,要注意数据的定义、含义、计算口径和计算方法,避免错用、误用、滥用。在引用二手数据时,应注明数据来源。

    2、直接来源

    定义:通过自己调查(调查数据)或实验(实验数据)活动,直接获得第一手数据

    调查是对社会现象而言。调查数据通常取自有限总体,即总体所包含的个体单位是有限的。如果调查针对总体中的所有个体单位进行,这种调查称为普查。普查数据具有信息全面、完整的特点,对普查数据的全面分析和深入挖掘是统计分析的重要内容。当总体很大时,普查涉及范围广,接受调查单位多,耗时、费力,调查成本高,普查不可正常进行。

    实验大多是对自然现象而言。

    二、调查数据

    数据采集阶段,关键问题是如何抽选出一个好的样本。好的样本是相对而言的,包括两方面:针对研究问题,不同的研究问题,对样本要求会有所差别,对某一个研究问题,这可能是一个不错样本,对另一个问题,这个样本可能就是糟糕的,所以进行什么样的抽样设计首先取决于研究目的;针对调查费用与估计精度的关系而言。

    抽样采集数据的方式:

    1、概率抽样(probability sampling )

    定义:也称随机抽样,是指遵循随机原则进行额抽样,总体中每个单位都有一定的机会被选入样本。

    (1)特点:

    • 抽样时是按一定的概率以随机原则抽取样本。随机原则:抽取样本时排除主观上有意识地抽取调查单位,使每个单位都有一定的机会被抽中。随机不等于随便,随机有严格的科学含义,可用概率描述,随便带有人为的主观因素。随机与随便的本质区别在于,是否按照给定的入样概率,通过一定的随机化程序抽取样本单元。
    • 每个单位被抽中的概率是已知的,或是可以计算出来的。
    • 当用样本对总体目标量进行估计时,要考虑到每个样本单位被抽中的概率。估计量不仅与样本单位的观测值有关,也与其入样概率有关。
    • 概率抽样与等概率抽样:指总体中的每个单位都有一定的非零概率被抽中,单位之间被抽中的概率可以相等,也可以不等,前者等概率抽样,后者不等概率抽样。

    (2)概率抽样方式

    简单随机抽样(simple random sampling)
    • 定义:从总体N个单位的抽样框中随机地、一个个地抽取n个单位作为样本,实施随机化程序可以使用随机数字表,也可使用能产生符合要求的随机数序列的计算机程序。                                                                                                                                            进行概率抽样需要抽样框,抽样框包括所有总体单位信息。作用不仅在于提供备选单位的名单以供抽选,还是计算各单位入样概率的依据。
    • 简单随机抽样是一种最基本的抽样方法,使其它抽样方法的基础。简单直观,在抽样框完整时,可直接从中抽取样本,由于抽选的概率相同,用样本统计量对目标量进行估计及计算估计量误差都比较方便。
    • 局限:要求包含所有总体单位的名单作为抽样框,当N很大时,构造这样的抽样框并不容易;其次,根据这种方法抽出的单位很分散,给实施调查增加了困难;最后,这种方法没有利用其它辅助信息以提高估计的效率。在规模较大的调查中,很少直接采用简单随机抽样,一般把这种方法和其他抽样方法结合起来使用。
    分层抽样(stratified sampling)
    • 定义:是将抽样单位按某种特征或某种规则划分为不同的层,然后从不同的层中独立、随机地抽取样本。将各层的样本结合起来,对总体目标量进行估计。
    • 优点:保证了样本中包含有各种特征的抽样单位,样本的结构与总体的结构比较相近,从而提高估计的精度;分层抽样在一定条件下为组织实施调查提供可方便(当层是按行业或行政区划分);分层抽样既可以对总体参数进行估计,也可以对各层的目标量进行估计。
    整群抽样(cluster sampling)
    •  定义:将总体中若干个单位合并为组,这样的组称为群。抽样时直接抽取群,然后对中选群中的所有单位全部实施调查。
    • 特点:抽取样本时只需要群的抽样框,不必要求包括所有单位的抽样框,简化了编制抽样框的工作量。由于群通常是由哪些地理位置邻近的或隶属于同一系统的单位所构成,因此调查的地点相对集中,从而节省调查费用,方便实施调查。
    • 弱点:估计的精度较差,因为同一群内的单位或多或少有些相似,在样本量相同的条件下,整群抽样的抽样误差较大。要得到与简单随机抽样相同的精度,采用整群抽样需要增加基本调查单位。
    系统抽样(systematic sampling)
    • 定义:将总体中的所有单位(抽样单位)按一定顺序排列,在规定的范围内随机抽取一个单位作为初始单位,然后按事先规定好的规则确定其他样本单位。
    • 典型系统抽样:先从数字1~k之间随机抽取一个数字r作为初始单位,以后依次取r+k,r+2k...。所以把系统抽样看成是将总体内的单位按顺序分成k群,用相同的概率抽取出一群的方法。
    • 优点:操作简便,如果有辅助信息,对总体内的单位进行有组织的排列,可有效提高估计的精度。
    • 缺点:对估计量方差的估计比较困难。
    多阶段抽样(multi-stage sampling)
    • 定义:采用类似整群抽样的方法,首先抽取群,但并不是调查群内所有单位,而是再进一步抽样,从选中的群中抽取出若干个单位进行调查。因为取得这些接受调查的单位需要两个步骤,所以称为二阶段抽样。群是初级抽样单位,第二阶段抽取的是最终抽样单位。这种方法推广,使抽样的段数增多,就称为多阶段抽样。抽取样本的阶段应尽量少。因为每增加一个抽样阶段。就会增加一份估计误差,用样本对总体进行估计就更复杂。
    • 优点:具有整群抽样的优点,保证了样本相对集中,节约调查费用;不需要包含所有低阶段抽样单位的抽样框;同时由于实行了再抽样,使调查单位在更广的范围内展开。在较大规模的抽样调查中,多阶段抽样经常用。

     (3)概率抽样优点

    可以依靠调查结果,计算估计量误差,从而得到对总体目标量进行推断的可靠程度。也可以按照要求的精确度,计算必要的样本单位数目。所有这些都为统计估计结果的评估提供了有力证据。所以,统计分析的样本主要是概率样本,即样本是采用概率抽样方式得到的。

    2、非概率抽样(non-probability sampling )

    定义:是相对于概率抽样而言,指抽取样本时不是依据随机原则,而是根据研究目的对数据的要求,采用某种方式从总体中抽出部分单位对其实施调查。

    类型:

    方便抽样

    • 调查过程中调查员依据方便的原则,自信确定入抽样本的单位。如调查员在街头、公园、商店等公共场所进行拦截式的调查;厂家在出售产品的柜台前对路过的顾客进行调查等。
    • 特点:容易实施,调查的成本低
    • 弱点:样本单位的确定带有随意性,因此,方便样本无法代表有明确意义的总体,将方便样本的调查结果推广到总体是没有意义的。如果研究的目的是对总体有关的参数进行推断,使用方便样本是不合适的。但在科研中,使用方便样本可产生一些想法以及对研究内容的初步认识,或建立假设。
    判断抽样
    • 定义:是另一种比较方便的抽样方式,是指研究人员根据经验、判断和对研究对象的了解,有目的地选择一些单位作为样本,实施时根据不同的目的有重点抽样、典型抽样、代表抽样等方式。
    • 重点抽样:从调查对象的全部单位中选择少数重点单位,对其实施调查。这些重点单位数量不多,但在总体中占重要地位。如了解全国钢铁企业生产状况,可选择产量较大的几个钢铁企业,对重点单位调查,可了解钢铁产量大致情况及产量变化基本走势。
    • 典型抽样:从总体中选择若干个典型的单位进行深入的调研,目的是通过典型单位来描述或揭示所研究问题的本质和规律。因此,选择的典型单位应该具有研究问题的本质或特征。青少年犯罪,选取典型犯人,分析青少年犯罪规律。
    • 代表抽样:通过分析,选择具有代表性的单位作为样本,在某种程度上,也具有典型抽样的含义。某奶粉生产企业欲了解消费者对奶粉成分的需求,可调查一些年轻母亲,通过他们了解消费者购买奶粉时的选择意向。
    • 判断抽样是主观的,样本选择的好坏取决于调研者的判断、经验、专业程度和创造性。成本较低,容易操作,但由于样本是人为确定的,没有依据随机的原则,因而调查结果不能用于对总体有关参数进行估计。
    自愿样本
    • 定义:指被调查者自愿参加,成为样本中的一份子,向调查人员提供有关信息。参与报刊上和互联网上刊登的调查问卷活动,向某类节目拨打热线电话等。
    • 自愿样本与抽样的随机性无关,样本的组成往往集中于某类特定的人群,尤其集中于对该调查活动感兴趣的人群,因此这种样本是有偏的。不能依据样本的信息对总体的状况进行估计,但自愿样本仍可给研究人员提供有价值的信息,可以反映某类群体的一般看法。
    滚雪球抽样
    • 定义:往往用于对稀少群体的调查。在滚雪球抽样中,首先选择一组调查单位,对其实施调查之后,再请他们提供另外一些属于研究总体的调查对象,调查人员根据所提供的线索,进行此后的调查。这个过程持续下去,就会形成滚雪球效应
    • 滚雪球抽样属于非概率抽样,因为与随机抽取的被调者相比,被推荐的被调查者在许多方面与推荐他们的那些人更为相似。
    • 优点:容易找到那些属于特定群体的被调查者,调查的成本较低。适合对特定群体进行研究的资料搜集。
    配额抽样
    • 定义:类似于概率抽样中的分层抽样,在市场调查中应用广泛。首先将总体中的所有单位按一定的标志(变量)分为若干类,然后在每个类中采用方便抽样或判断抽样的方式选取样本单位。
    • 操作简单,可以保证总体中不同类别的单位都能包括在所抽的样本中,使得样本的结构和总体结构类似。
    • 抽取具体单位时不是依据随机原则,所以属于非概率抽样
    • 配额抽样中,可以按单一变量控制,也可按交叉变量控制。单一变量控制操作简单,但可能出现偏斜。交叉变量配额控制可以保证样本的分布更均匀,但现场调查中为了保证配额的实现,尤其是在调查接近结束时,所选的样本单位要同时满足特定的配额、调查对象的特征、调查费用、时间等。

    3、概率抽样和非概率抽样的比较

    (1)性质不同,在调查中采用何种抽样类型,取决于多种因素,包括研究问题的性质、使用数据要说明的问题、调查对象的特征、调查费用、时间等。

    (2)非概率抽样不是依据随机原则抽选样本,样本统计量的分布是不确切的,因而无法使用样本的结果对总体相应参数进行推断。若调查的目标是用样本的调查结果对总体相应参数进行估计,并计算估计的误差,得到总体参数的置信区间,不适合采用非概率抽样。非概率抽样特点:操作简便、时效快、成本低。且对于抽样中的统计学专业技术要求不是很高。适合探索性研究,调查结果用于发现问题,为更深入的数量分析做准备。也适合市场调查中的概念测试,如产品包装测试、广告测试等。

    (3)概率抽样是依据随机原则抽取样本,这是样本统计量的理论分布是存在的,可根据调查结果对总体有关参数进行估计,计算估计误差,得到总体参数的置信区间,且进行抽样设计时,对估计的精度提出要求,计算满足特定精度要求所需要的样本量。如果调查的目的在于掌握研究对象总体的数量特征,得到总体参数的置信区间,应该使用概率抽样的方法。概率抽样的技术含量更高,无论是抽选样本还是对调查数据进行分析,都要求有较高的统计学专业知识,调查的成本比非概率抽样高。

    4、搜集数据的基本方法

    样本单位确定后,对这些单位实施调查,即从样本单位那里得到所需要的数据,可采用不同方法。

    自填式定义

    指在没有调查员协助的情况下由被调查者自己填写,完成调查问卷。

    问卷要求     & 对比
    • 把问卷送给被调查者方法如调查员分发,邮寄,网络或把问卷刊登在网上。由于被调查者在填答问卷时调查员一般不在现场,对于问卷中的疑问无人解答,所以这种方法要求调查问卷结构严谨,有清楚的说明,让被调查者一看就知道如何完成问卷。要求被调查者具一定文化素养,可读懂问卷,正确理解调查问卷中的问题并进行回答。
    • 与其他调查方式比,自填式问卷应有制作详细、形象友好的说明,必要时可在问卷上提供调查人员的联系电话,以便被调查者遇到疑问时与调查员联络。与其他搜集数据方式相比,调查组织者对自填式方式的管理相对容易,只要把问卷正确地送到被调查者手中即可。
    优点
    • 成本低,增大样本量对调查费用的影响很小,可进行大范围调查。利于被调查者,他们可以选择方便的时间填答问卷,可参考有关记录而不必依靠记忆进行回答。
    • 由于填写问卷时调查员不在场,因而自填式方法可以在一定程度上减少被调查者回答敏感问题的压力。
    缺点
    • 问卷的回收率比较低,被调查者不够重视,在完成问卷方面没有压力,所以放弃不答。由于不重视,被调查者易把问卷丢失和遗忘,所以需要做很多跟踪回访工作取得较高的回收率。
    • 不适合结构复杂的问卷,许多被调查者不会认真阅读填写问卷指南。对调查内容有所局限。
    • 调查周期比较长,调查人员需要对问卷的递送和回收方法进行仔细研究和选择
    • 对于数据搜集过程中出现的问题,一般难以及时采取调改措施
    面访式定义是指现场调查中调查员与被调查者面对面,调查员提问、被调查者回答这种调查方式。
    优点
    • 由于是面对面交流,调查员可以激发被调查者的参与意识,对不愿意参与的被访者进行说服工作,提高调查的回答率。
    • 调查员可在现场解释问卷,回答被调查者的问题,对被调查者的回答进行鉴别和澄清,提高调查数据的质量,且可以对识字率低的群体实施调查。
    • 由于调查问卷是由经过培训的调查员所控制,在问卷设计中可采用更多 的技术手段,使得调查问题的组合更为科学、合理。
    • 在面访调查中,可借助其他调查工具(图片、照片、卡片、实物等)以丰富调查内容。
    • 能对数据搜集所花费的时间进行调节,如果数据搜集进展太慢,需要加快速度,就可雇更多的调查员,但使用自填式方式时是不可能的。
    弱点
    • 调查的成本较高,要有调查员的培训费用、调查员的工资、面访调查中送给被调查者的小礼品和调查员的交通费用等,且调查费用与样本量关系十分密切。在大样本调查中,研究人员面临着调查成本的巨大压力。
    • 面访这种搜集数据的方式在对调查过程的质量控制方面有一定难度,调查的数据质量与调查员的工作态度、责任心有直接关系,当大量调查员参与调查时,如何保证高质量的现场操作是一个重要问题。
    • 对于敏感问题,除非对调查员进行角色筛选,对调查员的访谈技巧进行专门的技术培训,否则,在面对面的条件下,被调查者通常不会像在自填式方法下那样放松
    电话式定义是指调查人员通过打电话的方式向被调查者实施调查。
    特点
    • 速度快,能够在最短的时间内完成调查,适合样本单位十分分散的情况,由于不需要支付调查员的交通费,数据搜集的成本不大。
    • 对调查员也是安全的,他们不必在晚上走访偏僻的居民区,在面访调查中,这些不可避免的
    • 对访问过程的控制比较容易,因为调查员的工作地点都是在一起,调查中遇到的问题可得到及时处理和解决,调查监督对访问实施监听也容易。计算机辅助电话调查(CATI)
    局限性
    • 电话调查的工具是电话,如果被调查者没有电话,调查将无法实施,所以在电话拥有率不高的地方,电话调查收到限制
    • 使用电话进行访问的时间不能太长,人们不愿意通过电话进行冗长的交谈,被访者对调查的内容不感兴趣时更是如此。
    • 电话调查所使用的问卷要简单,如果问卷答案的选项过长、过多,被调查者听了后面,忘记前面,不仅造成调查进度的延缓,被调查者容易挂断电话。
    • 与面访相比,电话调查由于不是面对面的交流,在被访者不愿意接受调查时,要说服他们更为困难
    观察式定义调查人员通过直接观测方法获取信息,如利用安置在超市中的录像设备观察顾客挑选商品时的表情,在十字路口通过计数方法估计车流量
    数据搜集方法的选择:搜集数据的不同方法各有特点,选择方法时,需要考虑几点1、抽样框中的有关信息如果抽样框中没有同学地址,就不能将自填式问卷寄给被调查者;如果没有计算机随机数字拨号系统,有没有电话号码的抽样框,电话调查的概率样本就难以产生,电话访问方式无法使用
    2、目标总体的特征如果总体的识字率很低,对问卷的理解有困难,就不宜使用自填式方法。样本的地理分布也很重要,如果样本单位分布很广,地域跨度大,进行面访调查的交通费用就会很高,且调查过程的管理和质量监控实施起来不容易。
    3、调查问题的内容对于比较复杂的问题,面访调查比较适合,因为调查员可以在现场对模糊的问题进行解释和澄清,并判断被访者对问题是否真正理解,调查问卷的设计也可以采用更多技术,如跳答、转答等,使搜集的数据满足研究的要求。如果调查的问题涉及一些敏感问题,使用匿名的数据搜集方法,如自填式或电话调查可能更适合。
    4、有形辅助物的使用对调查是有帮助和必要的。在调查期间显示产品、产品样本、广告等,在一些市场调查中,有时需要被调查者试用产品,然后接受调查。在这些情况下,面访是最合适的方法。采用邮寄问卷的自填式调查方法也可以有一些效果,因为可以随问卷同时邮寄有关调查内容的图片,但电话调查对有形辅助物的使用就受到限制。
    5、实施调查的资源这些资源包括经费预算、人员、调查设备和调查所需时间。面访调查费用最高,需要支付调查员的劳务费、调查交通费、被访者的礼品费等,还要找到能够满足调查需要的一定数量的调查员。如果使用计算机辅助电话调查,就需要有计算机设备和CATI操作系统。
    6、管理与控制在电话调查中,调查员通常集中在调查中心一起工作,因此,管理和控制相对简单。面访调查中调查员是分散、独立地进行工作,对他们的管理与控制有一定难度。
    7、质量要求如果调查员是经过考核选拨进来的,有较好的素质和责任心,并经过专门的培训,这时面访调查就能够有效地减少被访者的回答误差。如,对于调查中所使用的概念,调查员能够给出清晰无误的解释;有经验的调查员还可对被访者回答的真实性做出判断,并使用调查询问中的相关技术进行澄清,以保证高质量数据。回答率也是影响数据质量一个因素,由于面访具有面对面交流的有利条件,所以面访式回答率最高,而自填式回答率低。但面访式调查成本最高,自填式调查成本最低。
    搜集数据不同方法的特点
    项目自填式面访式电话式
    调查时间中等
    调查费用
    问卷难度要求容易
    有形辅助物的使用中等利用充分利用无法利用
    调查过程控制简单复杂容易
    调查员作用的发挥无法发挥充分发挥一般发挥
    回答率最低较高一般
    在数据搜集使用方法的选择中要根据调查所需信息的性质、调查对象的特点、对数据质量和回答率的要求,以及预算费用和时间要求等多方面因素综合而定。如对被选中的调查单位首先采用邮寄问卷,让受访者自填的方式,对没有返回问卷的受访者,再进行电话追访或面访。

    三、实验数据(experiment data)

    定义:是指在实验中控制实验对象而搜集到的变量的数据,在实验中控制一个或多个变量,在有控制的条件下得到观测结果。实验是检验变量间因果关系的一种方法。在实验中,研究人员要控制某一情形的所有相关方面,操纵少数感兴趣的变量,然后观察实验结果。

    1、实验组和对照组

    • 实验法基本逻辑:有意识地改变某个变量的情况(A),然后看另一个变量变化情况(B)。如果B随着A的变化而变化,说明A对B有影响。需要将研究对象分为两组,一组实验组,一组对照组。
    • 实验组(experiment group):指随机抽选的实验对象的子集。在这个子集中,每个单位接受某种特别的处理。
    • 对照组(control group):每个单位不接受实验组成员所接受的某种特别处理。
    • 一个好的实验设计都有一个实验组和一个或多个对照组。
    • 一个好的实验,对照组和实验组的产生不仅应该是随机的,而且应该是匹配的。匹配,是指对实验单位的背景材料进行分析比较,将情况类似的每对单位分别随机地分配到实验组和对照组。
    • 双盲法在实验设计中应采用。

    2、实验中的若干问题

    人的意愿在划分实验组和对照组时,应该采用随机原则,但研究对象是人,就不好控制
    心理问题在实验研究中,人们对被研究非常敏感,使得他们更加注意自我,从而走向极端
    道德问题道德问题使得对人和动物做的实验复杂化了。当某种实验设计道德问题,人们会处于进退两难的尴尬境地。

    3、实验中的统计

    统计在实验中的作用:确定进行实验所需要的单位个数,以保证实验可以达到统计显著的结果;将统计的思想融入实验设计,使实验设计符合统计分析的标准;提供尽可能最有效地同时研究几个变量影响的方法。

     通过实验得到的数据称为实验数据,实验数据可以作为研究者判断假设的依据。

    4、数据的误差

    (1)定义:是指通过调查搜集到的数据与研究对象真实结果之间的差异。数据误差分为两类:抽样误差和非抽样误差。

    抽样误差(sampling error)
    • 定义:是由抽样的随机性引起的样本结果与总体真值之间的误差。
    • 在概率抽样中,依据随机原则抽取样本,可能抽中由这样一些单位组成的样本,也可能抽中由另外一些单位组成的样本。根据不同的样本,可以得到不同的观测结果。但总体真实结果只能有一个,尽管这个真实值我们不知道。不过可以推测,虽然不同的样本会带来不同的答案,但这些不同的答案应该总在真值附近。如果不断增大样本量,不同的答案也会向总体真值逼近。
    • 抽样误差并不是针对某个具体样本的检测结果与总体真实结果的差异而言的,抽样误差描述的是所有样本可能的结果与总体真值之间的平均差异。
    • 抽样误差的大小与多方面因素有关。样本量的大小,样本量越大,抽样误差越小。当样本量大到与总体单位相同时,抽样调查变成普查,误差减小到0,这时不存在样本选择的随机性问题。
    • 还与总体的变异性有关。总体的变异性越大,即各单位之间的差异越大,抽样误差越大,因为有可能抽中特别大或特别小的样本单位,使样本结果偏大或偏小;总体的变异度越小,各单位之间越相似,抽样误差越小。如果所有单位完全一样,调查一个就可以精确无误地推断总体,抽样误差就不存在。
    非抽样误差(non-sampling error)

    定义:是相对抽样误差而言的,是指抽样误差之外的,由其他原因引起的样本观察结果与总体真值之间的差异。抽样误差是一种随机性误差,只是存在于概率抽样中;非抽样误差则不同,无论是概率抽样、非概率抽样或是全面调查中,都有可能产生非抽样误差。

    非抽样误差类型
    抽样框误差在概率抽样中需要根据抽样框抽取样本。抽样框是有关总体全部单位的名录,在地域抽样中,抽样框可以是地图。一个好的抽样框应该是,抽样框中的单位和研究总体的单位有一一对应的关系。
    回答误差

    是指被调查者在接受调查时给出的回答与真实情况不符。导致回答误差的原因有多种,主要有理解误差、记忆误差和有意识误差。

    无回答误差
    • 是指被调查者拒绝接受调查,调查人员得到的是一份空白答卷。无回答也包括那些调查进行时被访者不在家的情况。电话调查中,拨通后没有人接;邮寄问卷调查中,地址写错,被调查者搬家,或者被调查者虽然受到问卷,却把问卷遗失或丢失,这些都可视为调查中的无回答。
    • 无回答误差有时是随机的,有时是系统性的。如果无回答的产生与调查的内容无关,如邮寄问卷的丢失,调查时被访者正在生病,无法接受调查,在随机状态下,被访者如果回答,其结果可能高于平均值,也可能低于平均值,高低互相抵消,不会产生有偏估计。但当无回答的产生与调查内容有关时,就可能产生系统性误差。如调查收入时的拒绝回答者通常是收入比较高的人群,仅仅用收入低的回答结果进行推算,偏差就不可避免。
    • 无回答误差是随机的,可通过增大样本量。多次回访。
    • 无回答系统性误差解决途径:预防,在调查前做好各方面的准备工作,尽量把无回答降到最低程度;当无回答出现后,分析无回答产生的原因,采用一些补救措施。如在无回答单位中再抽取一个样本,实施更有力的调查,并以此作为无回答层的代表。
    调查员误差指由于调查员的原因而产生的调查误差。
    测量误差如果调查与测量工具有关,很有可能产生测量误差。

    (2)误差的控制

    抽样误差是由抽样的随机性带来的,只要采用概率抽样,抽样误差就不可避免。抽样误差是可以计算的。在一个特定问题的研究中,研究人员对抽样误差有一个可以容忍的限度。允许的抽样误差是多大,取决于对数据精度的要求。一旦误差确定下来,就可采用相应措施进行控制。进行控制的主要方法是改变样本量。要求的抽样误差越小,所需要的样本量就越大。

    非抽样误差与抽取样本的随机性无关,因而在概率抽样和非概率抽样中都会存在(但抽样框误差仅在概率抽样中存在)。很多原因会造成非抽样误差。做好问卷设计是减少非抽样误差的一个方法。非抽样误差的控制主要是在调查过程的质量控制。包括:调查员的挑选,调查员的培训,督导员的调查专业水平,对调查过程进行控制的具体措施,对调查结果进行的检验、评估,对现场调查人员进行奖惩的制度。目前在规范的专业性市场调查咨询公司,都有一些进行质量控制的规章制度和经验。

    展开全文
  • 时间序列是按照一定的时间间隔排列的一组数据,其时间间隔可以是任意的时间单位,如小时、日、周月等。比如,每天某产品的用户数量,每个月的销售额,这些数据形成了以一定时间间隔的数据。 通过对这些时间序列的...
  • MySQL的数据如何恢复到任意时间点

    千次阅读 2019-10-18 11:54:12
    恢复到任意时间点首先将全量备份恢复之后,再此基础回放增加的 binlog 直至指定的时间点。 目录 redo log   redo log 是啥   log 何时产生 & 释放?   如何写?   相关配置   其他 binlog   ...
  • 第2章 数据搜集

    2020-12-08 22:35:59
    但是,从使用者的角度看,统计数据主要有两个渠道:一个是数据的间接来源,即数据是由别人通过调查或实验的方式搜集的,使用者只是找到它们并加以使用,对此我们称为数据的间接来源。另一个是通过自己的调查或实验...
  • 通过埋点搜集日志数据的简单架构

    千次阅读 2019-11-28 15:03:44
    所谓埋点,就是在额外的正常功能逻辑添加针对性的统计逻辑,即期望的时间是否发生,发生后应该记录哪些信息,比如用户在当前页面是否用鼠标滚动页面、有关的页面区域是否曝光了、当前用户操作的时间是多少、停留时...
  • 商品数据运营指标 销售类指标 订单量/商品销售量 订单量指用户提交订单的数量,计算逻辑去重后的订单ID的数量。 商品销售量又称销售件数,指销售商品的数量。 订单金额/商品销售金额 订单金额为用户提交订单...
  • 对于每个时间序列样本,时间序列的末尾表示引擎发生故障的时间点。 给定时间序列的任何摘要,此建模练习的目的是预测到时间序列结束之前的剩余时间。 这称为引擎的剩余使用寿命或RUL。 提供的数据包括两组-用于...
  • 时间序列数据的多元回归No matter what kind of data science project one is assigned to, making sense of the dataset and cleaning it always critical for success. The first step is to understand the data ...
  • SPSS(十九)SPSS之时间序列模型(图文+数据集)

    万次阅读 多人点赞 2019-06-17 22:32:38
    SPSS(十九)SPSS之时间序列模型(图文+数据集) 时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。正如人们常说,人生的出场顺序很重要,时间序列中隐藏着一些过去与未来的关系。时间序列...
  • 数据类型与数据分析方法

    千次阅读 2018-12-03 20:28:43
    1.分类型数据和数值型数据 按照所采用的计量尺度不同,可以将...描述现象的数量、大小或多少的数据称为数值型数据(quantitative data),由于定距尺度和定比尺度属于同一测量层次,所以可以把后两种尺度测度的数...
  • 数据结构基础概念篇

    万次阅读 多人点赞 2017-11-14 13:44:24
    数据结构一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能...
  • 1 1.1 数据分析的定义 数据分析是指用适当的分析方法对收集来的大量数据进行分析,提取...明确目的和思路(先决条件、提供项目方向)、数据收集(数据库建立)、数据处理(清洗、转化、提取、计算)、数据分析(数据...
  • ” 这是一种错误的思维方式-一种谬论-实际有时被称为麦克纳马拉谬论。 这种思维方式可能对国家事务以及个人医疗产生可怕的后果(例如在癌症患者中应用“无进展生存”指标,肿瘤的减少被认为是胜利,而肿瘤治疗的...
  • Spark上数据的获取、处理与准备

    千次阅读 2018-08-17 21:13:43
    UCI机器学习知识库:包括近300个不同大小和类型的数据集,可用于分类、回归、聚类和推荐系统任务。数据集列表位于:http://archive.ics.uci.edu/ml/ Amazon AWS公开数据集:包含的通常是大型数据集,可通过Amazon S3...
  • 本文将简要分析这种数据收集的原理,并一步一步实际搭建一个实际的数据收集系统。数据收集原理分析简单来说,网站统计分析工具需要收集到用户浏览目标网站的行为(如打开某网页、点击某按钮、将商品加
  • 数据结构知识整理

    万次阅读 多人点赞 2018-07-30 18:50:47
    1.数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科。 2.数据结构涵盖的内容: 3.基本概念和术语: 数据:对客观事物的符号表示,在计算机科学中是指所有能...
  • 数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。     在应用需求的推动下,在计算机硬件、软件发展的基础数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。 数据...
  • 数据仓库知识汇总

    千次阅读 多人点赞 2019-10-09 15:04:01
    数据仓库形象解释 业务场景如下图 举例说明: 在很久很久以前,世界生活着许多种族,有人类,有矮人,有精灵......他们有着不同的信仰,不同的文化,彼此相安无事。可是,有一个猥琐男却偏偏想要统治整个世界...
  • 今年在某服装企业蹲点了4个多月,之间很长一段时间在探索其现货和期货预测,时间序列也是做销售预测的首选,今天和小伙伴分享下时间序列的基本性质和如何用R来挖据时间序列的相关属性。 首先读入一个时间序列:从...
  • RNN

    万次阅读 多人点赞 2018-06-06 23:40:03
    首先我们要明确什么是序列数据,摘取百度百科词条:时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。这是时间序列数据的定义,当然这里也可以不是时间,比如...
  • 机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒...
  • 数据科学,机器学习和高级分析到实时仪表板,决策者都需要数据来帮助做出决策。 该数据需要一个家,而数据湖是创建该家的首选解决方案。该术语由Pentaho的CTO James Dixon发明并首次描述,他在博客中写道:“如果...
  • 数据分析之数据预处理、分析建模、可视化

    万次阅读 多人点赞 2020-08-08 15:03:21
    数据类型:结构化与非结构化、定性与定量、截面数据时间序列数据数据来源:外部来源、内部来源; 数据预处理:数据清洗、数据集成、数据规约、数据变换; 数据分析模型:对比分析、漏斗分析、留存分析、A/B测试...
  • 数据库, 数据仓库, 数据集市,数据湖,数据中台

    千次阅读 多人点赞 2019-02-22 16:21:47
    数据仓库和数据集市的区别 作者:修鹏李 出处:CSDN 大数据:数据仓库和数据库的区别 作者:南宫蓉 出处:简书 第一篇:数据仓库概述 第二篇:数据库关系建模 作者:穆晨 出处:CNBLOS 摘要 本文简要介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,370
精华内容 60,548
关键字:

不同时间点上收集的数据称为